diff --git a/modules/alloresto/__init__.py b/modules/alloresto/__init__.py deleted file mode 100644 index 712ff08d2434c607ed4917075560711e85e30413..0000000000000000000000000000000000000000 --- a/modules/alloresto/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright(C) 2014 Romain Bignon -# -# This file is part of weboob. -# -# weboob is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# weboob is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with weboob. If not, see . - - -from .module import AlloRestoModule - -__all__ = ['AlloRestoModule'] diff --git a/modules/alloresto/browser.py b/modules/alloresto/browser.py deleted file mode 100644 index d790c92a96607fd17141ecc8a9b406fc0f42869f..0000000000000000000000000000000000000000 --- a/modules/alloresto/browser.py +++ /dev/null @@ -1,66 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright(C) 2014 Romain Bignon -# -# This file is part of weboob. -# -# weboob is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# weboob is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with weboob. If not, see . - - -from weboob.browser import LoginBrowser, URL, need_login -from weboob.exceptions import BrowserIncorrectPassword - -from .pages import LoginPage, AccountsPage - - -__all__ = ['AlloRestoBrowser'] - - -class AlloRestoBrowser(LoginBrowser): - BASEURL = 'https://www.alloresto.fr' - - login = URL('/identification-requise.*', LoginPage) - accounts = URL('/chez-moi/releve-compte-miams', AccountsPage) - - def do_login(self): - assert isinstance(self.username, basestring) - assert isinstance(self.password, basestring) - - self.accounts.stay_or_go() - self.page.login(self.username, self.password) - - if self.login.is_here(): - raise BrowserIncorrectPassword() - - @need_login - def get_accounts_list(self): - return self.accounts.stay_or_go().iter_accounts() - - @need_login - def get_account(self, id): - assert isinstance(id, basestring) - - for a in self.get_accounts_list(): - if a.id == id: - return a - - return None - - @need_login - def get_history(self, account): - return self.accounts.stay_or_go().get_transactions(type='consommable') - - @need_login - def get_coming(self, account): - return self.accounts.stay_or_go().get_transactions(type='acquisition') diff --git a/modules/alloresto/favicon.png b/modules/alloresto/favicon.png deleted file mode 100644 index b1b365c6dac425feb9450fa5c73a1957bb68d000..0000000000000000000000000000000000000000 Binary files a/modules/alloresto/favicon.png and /dev/null differ diff --git a/modules/alloresto/module.py b/modules/alloresto/module.py deleted file mode 100644 index cf5bdbeffa256df4aa646ee3a2029deacc495661..0000000000000000000000000000000000000000 --- a/modules/alloresto/module.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright(C) 2014 Romain Bignon -# -# This file is part of weboob. -# -# weboob is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# weboob is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with weboob. If not, see . - - -from weboob.capabilities.bank import CapBank, AccountNotFound -from weboob.tools.backend import Module, BackendConfig -from weboob.tools.value import ValueBackendPassword - -from .browser import AlloRestoBrowser - - -__all__ = ['AlloRestoModule'] - - -class AlloRestoModule(Module, CapBank): - NAME = 'alloresto' - MAINTAINER = u'Romain Bignon' - EMAIL = 'romain@weboob.org' - VERSION = '1.4' - DESCRIPTION = u'Allo Resto' - LICENSE = 'AGPLv3+' - CONFIG = BackendConfig(ValueBackendPassword('login', label='Identifiant', masked=False), - ValueBackendPassword('password', label='Mot de passe')) - BROWSER = AlloRestoBrowser - - def create_default_browser(self): - return self.create_browser(self.config['login'].get(), - self.config['password'].get()) - - def iter_accounts(self): - return self.browser.get_accounts_list() - - def get_account(self, _id): - account = self.browser.get_account(_id) - - if account: - return account - else: - raise AccountNotFound() - - def iter_history(self, account): - return self.browser.get_history(account) - - def iter_coming(self, account): - return self.browser.get_coming(account) diff --git a/modules/alloresto/pages.py b/modules/alloresto/pages.py deleted file mode 100644 index 1e248da5b8bb65228c8877df94993504975e508b..0000000000000000000000000000000000000000 --- a/modules/alloresto/pages.py +++ /dev/null @@ -1,75 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright(C) 2014 Romain Bignon -# -# This file is part of weboob. -# -# weboob is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# weboob is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with weboob. If not, see . - - -import datetime -from decimal import Decimal - -from weboob.browser.pages import HTMLPage, LoggedPage -from weboob.browser.elements import ItemElement, method -from weboob.browser.filters.standard import CleanDecimal, CleanText, Filter, TableCell -from weboob.capabilities.bank import Account -from weboob.tools.capabilities.bank.transactions import FrenchTransaction as Transaction - - -class LoginPage(HTMLPage): - def login(self, username, password): - form = self.get_form(xpath='//form[has-class("form_o")]') - form['uname'] = username - form['pass'] = password - form.submit() - - -class AccountsPage(LoggedPage, HTMLPage): - @method - class iter_accounts(ItemElement): - def __call__(self): - return self - - klass = Account - - obj_id = '0' - obj_label = u'Compte miams' - obj_balance = CleanDecimal('//div[@class="compteur"]//strong', replace_dots=True) - obj_currency = u'MIAM' - obj_coming = CleanDecimal('//table[@id="solde_acquisition_lignes"]//th[@class="col_montant"]', default=Decimal('0'), replace_dots=True) - - class MyDate(Filter): - MONTHS = ['janv', u'févr', u'mars', u'avr', u'mai', u'juin', u'juil', u'août', u'sept', u'oct', u'nov', u'déc'] - - def filter(self, txt): - day, month, year = txt.split(' ') - day = int(day) - year = int(year) - month = self.MONTHS.index(month.rstrip('.')) + 1 - return datetime.date(year, month, day) - - def get_transactions(self, type='consommable'): - class get_history(Transaction.TransactionsElement): - head_xpath = '//table[@id="solde_%s_lignes"]//thead//tr/th/text()' % type - item_xpath = '//table[@id="solde_%s_lignes"]//tbody/tr' % type - - col_date = u"Date de valeur" - col_raw = u"Motif" - - class item(Transaction.TransactionElement): - obj_amount = Transaction.Amount('./td[last()]') - obj_date = AccountsPage.MyDate(CleanText(TableCell('date'))) - - return get_history(self)() diff --git a/modules/alloresto/test.py b/modules/alloresto/test.py deleted file mode 100644 index a31ea0d08b5037069c5d01b3415a3ca209699b1d..0000000000000000000000000000000000000000 --- a/modules/alloresto/test.py +++ /dev/null @@ -1,32 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright(C) 2014 Romain Bignon -# -# This file is part of weboob. -# -# weboob is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# weboob is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with weboob. If not, see . - - -from weboob.tools.test import BackendTest - - -class AlloRestoTest(BackendTest): - MODULE = 'alloresto' - - def test_alloresto(self): - l = list(self.backend.iter_accounts()) - - a = l[0] - list(self.backend.iter_history(a)) - list(self.backend.iter_coming(a))