From 8d554fd0ff00fbf2bb7cdfbf266373f25307eece Mon Sep 17 00:00:00 2001 From: Jean Walrave Date: Wed, 26 Apr 2017 15:14:31 +0200 Subject: [PATCH] [humanis] new module --- modules/humanis/__init__.py | 26 +++++++++++++++ modules/humanis/browser.py | 33 +++++++++++++++++++ modules/humanis/module.py | 64 +++++++++++++++++++++++++++++++++++++ modules/humanis/pages.py | 27 ++++++++++++++++ modules/humanis/test.py | 27 ++++++++++++++++ 5 files changed, 177 insertions(+) create mode 100644 modules/humanis/__init__.py create mode 100644 modules/humanis/browser.py create mode 100644 modules/humanis/module.py create mode 100644 modules/humanis/pages.py create mode 100644 modules/humanis/test.py diff --git a/modules/humanis/__init__.py b/modules/humanis/__init__.py new file mode 100644 index 0000000000..512654dab1 --- /dev/null +++ b/modules/humanis/__init__.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- + +# Copyright(C) 2017 Jean Walrave +# +# 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 __future__ import unicode_literals + + +from .module import HumanisModule + + +__all__ = ['HumanisModule'] diff --git a/modules/humanis/browser.py b/modules/humanis/browser.py new file mode 100644 index 0000000000..78a93989fe --- /dev/null +++ b/modules/humanis/browser.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- + +# Copyright(C) 2016 Jean Walrave +# +# 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 AbstractBrowser, URL + +from .pages import LoginPage + +class HumanisBrowser(AbstractBrowser): + PARENT = 'cmes' + + login = URL('(?P.*)fr/identification/login.cgi', LoginPage) + + def __init__(self, weboob, baseurl, subsite, login, password, *args, **kwargs): + self.weboob = weboob + + super(self.__class__, self).__init__(baseurl, login, password, subsite, *args, **kwargs) diff --git a/modules/humanis/module.py b/modules/humanis/module.py new file mode 100644 index 0000000000..44d616ba05 --- /dev/null +++ b/modules/humanis/module.py @@ -0,0 +1,64 @@ +# -*- coding: utf-8 -*- + +# Copyright(C) 2016 Jean Walrave +# +# 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.backend import Module, BackendConfig +from weboob.tools.value import ValueBackendPassword +from weboob.capabilities.bank import CapBank, AccountNotFound +from weboob.capabilities.base import find_object + +from .browser import HumanisBrowser + + +__all__ = ['HumanisModule'] + + +class HumanisModule(Module, CapBank): + NAME = 'humanis' + DESCRIPTION = u'Humanis Épargne Salariale' + MAINTAINER = u'Jean Walrave' + EMAIL = 'jwalrave@budget-insight.com' + LICENSE = 'AGPLv3+' + VERSION = '1.3' + CONFIG = BackendConfig(ValueBackendPassword('login', label=u'Code d\'accès', masked=False), + ValueBackendPassword('password', label='Mot de passe')) + + BROWSER = HumanisBrowser + + def create_default_browser(self): + return self.create_browser( + self.weboob, + self.weboob, + 'https://www.gestion-epargne-salariale.fr', + 'humanis/', + self.config['login'].get(), + self.config['password'].get() + ) + + def get_account(self, _id): + return find_object(self.browser.iter_accounts(), id=_id, error=AccountNotFound) + + def iter_accounts(self): + return self.browser.iter_accounts() + + def iter_history(self, account): + return self.browser.iter_history(account) + + def iter_investment(self, account): + return self.browser.iter_investment(account) diff --git a/modules/humanis/pages.py b/modules/humanis/pages.py new file mode 100644 index 0000000000..2b1a956ef5 --- /dev/null +++ b/modules/humanis/pages.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- + +# Copyright(C) 2016 Jean Walrave +# +# 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.pages import AbstractPage + + +class LoginPage(AbstractPage): + PARENT = 'cmes' + PARENT_URL = 'login' + BROWSER_ATTR = 'package.browser.CmesBrowser' diff --git a/modules/humanis/test.py b/modules/humanis/test.py new file mode 100644 index 0000000000..7506e97751 --- /dev/null +++ b/modules/humanis/test.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- + +# Copyright(C) 2017 Jean Walrave +# +# 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 __future__ import unicode_literals + + +from weboob.tools.test import BackendTest + + +class HumanisTest(BackendTest): + MODULE = 'humanis' -- GitLab