s/BaseBackend/BaseModule
This commit is contained in:
parent
3297651bdc
commit
8559af3d6a
165 changed files with 354 additions and 354 deletions
|
|
@ -63,8 +63,8 @@ For example, use this command::
|
|||
|
||||
In a module directory, there are commonly these files:
|
||||
|
||||
* **__init__.py** - needed in every python modules, it exports your :class:`BaseBackend <weboob.tools.backend.BaseBackend>` class.
|
||||
* **backend.py** - defines the main class of your module, which derives :class:`BaseBackend <weboob.tools.backend.BaseBackend>`.
|
||||
* **__init__.py** - needed in every python modules, it exports your :class:`BaseModule <weboob.tools.backend.BaseModule>` class.
|
||||
* **backend.py** - defines the main class of your module, which derives :class:`BaseModule <weboob.tools.backend.BaseModule>`.
|
||||
* **browser.py** - your browser, derived from :class:`BaseBrowser <weboob.tools.browser2.browser.BaseBrowser>`, is called by your module to interact with the supported website.
|
||||
* **pages.py** - all website's pages handled by the browser are defined here
|
||||
* **test.py** - functional tests
|
||||
|
|
@ -97,9 +97,9 @@ If the last command does not work, check your :doc:`repositories setup </guides/
|
|||
Backend class
|
||||
*************
|
||||
|
||||
Edit ``backend.py``. It contains the main class of the module derived from :class:`BaseBackend <weboob.tools.backend.BaseBackend>` class::
|
||||
Edit ``backend.py``. It contains the main class of the module derived from :class:`BaseModule <weboob.tools.backend.BaseModule>` class::
|
||||
|
||||
class ExampleBackend(BaseBackend, CapBank):
|
||||
class ExampleBackend(BaseModule, CapBank):
|
||||
NAME = 'example' # The name of module
|
||||
DESCRIPTION = u'Example bank website' # Description of your module
|
||||
MAINTAINER = u'John Smith' # Name of maintainer of this module
|
||||
|
|
@ -138,7 +138,7 @@ For example::
|
|||
from weboob.tools.backend import BackendConfig
|
||||
|
||||
# ...
|
||||
class ExampleBackend(BaseBackend, CapBank):
|
||||
class ExampleBackend(BaseModule, CapBank):
|
||||
# ...
|
||||
CONFIG = BackendConfig(Value('username', label='Username', regexp='.+'),
|
||||
ValueBackendPassword('password', label='Password'),
|
||||
|
|
@ -155,7 +155,7 @@ Implement capabilities
|
|||
You need to implement each method of all of the capabilities your module implements. For example, in our case::
|
||||
|
||||
# ...
|
||||
class ExampleBackend(BaseBackend, CapBank):
|
||||
class ExampleBackend(BaseModule, CapBank):
|
||||
# ...
|
||||
|
||||
def iter_accounts(self):
|
||||
|
|
@ -271,7 +271,7 @@ Now you have a functional browser, you can use it in your class ``ExampleBackend
|
|||
from .browser import ExampleBrowser
|
||||
|
||||
# ...
|
||||
class ExampleBackend(BaseBackend, CapBank):
|
||||
class ExampleBackend(BaseModule, CapBank):
|
||||
# ...
|
||||
BROWSER = ExampleBrowser
|
||||
|
||||
|
|
@ -288,9 +288,9 @@ Login management
|
|||
----------------
|
||||
|
||||
When the website requires to be authenticated, you have to give credentials to the constructor of the browser. You can redefine
|
||||
the method :func:`create_default_browser <weboob.tools.backend.BaseBackend.create_default_browser>`::
|
||||
the method :func:`create_default_browser <weboob.tools.backend.BaseModule.create_default_browser>`::
|
||||
|
||||
class ExampleBackend(BaseBackend, CapBank):
|
||||
class ExampleBackend(BaseModule, CapBank):
|
||||
# ...
|
||||
def create_default_browser(self):
|
||||
return self.create_browser(self.config['username'].get(), self.config['password'].get())
|
||||
|
|
@ -430,8 +430,8 @@ Filling objects
|
|||
|
||||
An object returned by a method of a capability can be not fully completed.
|
||||
|
||||
The class :class:`BaseBackend <weboob.tools.backend.BaseBackend>` provides a method named
|
||||
:func:`fillobj <weboob.tools.backend.BaseBackend.fillobj>`, which can be called by an application to
|
||||
The class :class:`BaseModule <weboob.tools.backend.BaseModule>` provides a method named
|
||||
:func:`fillobj <weboob.tools.backend.BaseModule.fillobj>`, which can be called by an application to
|
||||
fill some unloaded fields of a specific object, for example with::
|
||||
|
||||
backend.fillobj(video, ['url', 'author'])
|
||||
|
|
@ -443,7 +443,7 @@ uncompleted fields, and call the method associated to the type of the object.
|
|||
To define what objects are supported to be filled, and what method to call, define the ``OBJECTS``
|
||||
class attribute in your ``ExampleBackend``::
|
||||
|
||||
class ExampleBackend(BaseBackend, CapVideo):
|
||||
class ExampleBackend(BaseModule, CapVideo):
|
||||
# ...
|
||||
|
||||
OBJECTS = {Video: fill_video}
|
||||
|
|
@ -454,7 +454,7 @@ The prototype of the function might be::
|
|||
|
||||
Then, the function might, for each requested fields, fetch the right data and fill the object. For example::
|
||||
|
||||
class ExampleBackend(BaseBackend, CapVideo):
|
||||
class ExampleBackend(BaseModule, CapVideo):
|
||||
# ...
|
||||
|
||||
def fill_video(self, video, fields):
|
||||
|
|
@ -477,7 +477,7 @@ The application can provide a storage to let your backend store data. So, you ca
|
|||
|
||||
STORAGE = {'seen': {}}
|
||||
|
||||
To store and read data in your storage space, use the ``storage`` attribute of your :class:`BaseBackend <weboob.tools.backend.BaseBackend>`
|
||||
To store and read data in your storage space, use the ``storage`` attribute of your :class:`BaseModule <weboob.tools.backend.BaseModule>`
|
||||
object.
|
||||
|
||||
It implements the methods of :class:`BackendStorage <weboob.tools.backend.BackendStorage>`.
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from weboob.capabilities.recipe import CapRecipe, Recipe
|
||||
from weboob.tools.backend import BaseBackend
|
||||
from weboob.tools.backend import BaseModule
|
||||
|
||||
from .browser import SevenFiftyGramsBrowser
|
||||
|
||||
|
|
@ -30,7 +30,7 @@ def strip_accents(s):
|
|||
__all__ = ['SevenFiftyGramsBackend']
|
||||
|
||||
|
||||
class SevenFiftyGramsBackend(BaseBackend, CapRecipe):
|
||||
class SevenFiftyGramsBackend(BaseModule, CapRecipe):
|
||||
NAME = '750g'
|
||||
MAINTAINER = u'Julien Veyssier'
|
||||
EMAIL = 'julien.veyssier@aiur.fr'
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from weboob.tools.backend import BaseBackend, BackendConfig
|
||||
from weboob.tools.backend import BaseModule, BackendConfig
|
||||
from weboob.tools.ordereddict import OrderedDict
|
||||
from weboob.tools.value import Value
|
||||
from weboob.capabilities.job import CapJob
|
||||
|
|
@ -28,7 +28,7 @@ from .job import AdeccoJobAdvert
|
|||
__all__ = ['AdeccoBackend']
|
||||
|
||||
|
||||
class AdeccoBackend(BaseBackend, CapJob):
|
||||
class AdeccoBackend(BaseModule, CapJob):
|
||||
NAME = 'adecco'
|
||||
DESCRIPTION = u'adecco website'
|
||||
MAINTAINER = u'Bezleputh'
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from weboob.tools.backend import BaseBackend, BackendConfig
|
||||
from weboob.tools.backend import BaseModule, BackendConfig
|
||||
from weboob.capabilities.calendar import CapCalendarEvent, CATEGORIES
|
||||
from weboob.tools.ordereddict import OrderedDict
|
||||
from weboob.tools.value import Value
|
||||
|
|
@ -29,7 +29,7 @@ from .browser import AgendadulibreBrowser
|
|||
__all__ = ['AgendadulibreBackend']
|
||||
|
||||
|
||||
class AgendadulibreBackend(BaseBackend, CapCalendarEvent):
|
||||
class AgendadulibreBackend(BaseModule, CapCalendarEvent):
|
||||
NAME = 'agendadulibre'
|
||||
DESCRIPTION = u'agendadulibre website'
|
||||
MAINTAINER = u'Bezleputh'
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from weboob.capabilities.cinema import CapCinema, Person, Movie
|
||||
from weboob.tools.backend import BaseBackend
|
||||
from weboob.tools.backend import BaseModule
|
||||
|
||||
from .browser import AllocineBrowser
|
||||
|
||||
|
|
@ -27,7 +27,7 @@ from urllib import quote_plus
|
|||
__all__ = ['AllocineBackend']
|
||||
|
||||
|
||||
class AllocineBackend(BaseBackend, CapCinema):
|
||||
class AllocineBackend(BaseModule, CapCinema):
|
||||
NAME = 'allocine'
|
||||
MAINTAINER = u'Julien Veyssier'
|
||||
EMAIL = 'julien.veyssier@aiur.fr'
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
|
||||
from weboob.capabilities.bank import CapBank, AccountNotFound
|
||||
from weboob.tools.backend import BaseBackend, BackendConfig
|
||||
from weboob.tools.backend import BaseModule, BackendConfig
|
||||
from weboob.tools.value import ValueBackendPassword
|
||||
|
||||
from .browser import AlloRestoBrowser
|
||||
|
|
@ -29,7 +29,7 @@ from .browser import AlloRestoBrowser
|
|||
__all__ = ['AlloRestoBackend']
|
||||
|
||||
|
||||
class AlloRestoBackend(BaseBackend, CapBank):
|
||||
class AlloRestoBackend(BaseModule, CapBank):
|
||||
NAME = 'alloresto'
|
||||
MAINTAINER = u'Romain Bignon'
|
||||
EMAIL = 'romain@weboob.org'
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from weboob.capabilities.recipe import CapRecipe, Recipe
|
||||
from weboob.tools.backend import BaseBackend
|
||||
from weboob.tools.backend import BaseModule
|
||||
|
||||
from .browser import AllrecipesBrowser
|
||||
|
||||
|
|
@ -27,7 +27,7 @@ from urllib import quote_plus
|
|||
__all__ = ['AllrecipesBackend']
|
||||
|
||||
|
||||
class AllrecipesBackend(BaseBackend, CapRecipe):
|
||||
class AllrecipesBackend(BaseModule, CapRecipe):
|
||||
NAME = 'allrecipes'
|
||||
MAINTAINER = u'Julien Veyssier'
|
||||
EMAIL = 'julien.veyssier@aiur.fr'
|
||||
|
|
|
|||
|
|
@ -19,14 +19,14 @@
|
|||
|
||||
import urllib
|
||||
from weboob.capabilities.bill import CapBill, SubscriptionNotFound, BillNotFound, Subscription, Bill
|
||||
from weboob.tools.backend import BaseBackend, BackendConfig
|
||||
from weboob.tools.backend import BaseModule, BackendConfig
|
||||
from weboob.tools.value import ValueBackendPassword
|
||||
from .browser import AmeliBrowser
|
||||
|
||||
__all__ = ['AmeliBackend']
|
||||
|
||||
|
||||
class AmeliBackend(BaseBackend, CapBill):
|
||||
class AmeliBackend(BaseModule, CapBill):
|
||||
NAME = 'ameli'
|
||||
DESCRIPTION = u'Ameli website: French Health Insurance'
|
||||
MAINTAINER = u'Christophe Lampin'
|
||||
|
|
|
|||
|
|
@ -19,14 +19,14 @@
|
|||
|
||||
import urllib
|
||||
from weboob.capabilities.bill import CapBill, SubscriptionNotFound, BillNotFound, Subscription, Bill
|
||||
from weboob.tools.backend import BaseBackend, BackendConfig
|
||||
from weboob.tools.backend import BaseModule, BackendConfig
|
||||
from weboob.tools.value import ValueBackendPassword
|
||||
from .browser import AmeliProBrowser
|
||||
|
||||
__all__ = ['AmeliProBackend']
|
||||
|
||||
|
||||
class AmeliProBackend(BaseBackend, CapBill):
|
||||
class AmeliProBackend(BaseModule, CapBill):
|
||||
NAME = 'amelipro'
|
||||
DESCRIPTION = u'Ameli website: French Health Insurance for Professionals'
|
||||
MAINTAINER = u'Christophe Lampin'
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
|
||||
from weboob.capabilities.bank import CapBank, AccountNotFound
|
||||
from weboob.tools.backend import BaseBackend, BackendConfig
|
||||
from weboob.tools.backend import BaseModule, BackendConfig
|
||||
from weboob.tools.value import ValueBackendPassword
|
||||
|
||||
from .browser import AmericanExpressBrowser
|
||||
|
|
@ -29,7 +29,7 @@ from .browser import AmericanExpressBrowser
|
|||
__all__ = ['AmericanExpressBackend']
|
||||
|
||||
|
||||
class AmericanExpressBackend(BaseBackend, CapBank):
|
||||
class AmericanExpressBackend(BaseModule, CapBank):
|
||||
NAME = 'americanexpress'
|
||||
MAINTAINER = u'Romain Bignon'
|
||||
EMAIL = 'romain@weboob.org'
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from weboob.tools.backend import BaseBackend, BackendConfig
|
||||
from weboob.tools.backend import BaseModule, BackendConfig
|
||||
from weboob.capabilities.job import CapJob
|
||||
from weboob.tools.ordereddict import OrderedDict
|
||||
from weboob.tools.value import Value
|
||||
|
|
@ -28,7 +28,7 @@ from .job import ApecJobAdvert
|
|||
__all__ = ['ApecBackend']
|
||||
|
||||
|
||||
class ApecBackend(BaseBackend, CapJob):
|
||||
class ApecBackend(BaseModule, CapJob):
|
||||
NAME = 'apec'
|
||||
DESCRIPTION = u'apec website'
|
||||
MAINTAINER = u'Bezleputh'
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from weboob.capabilities.bank import CapBank
|
||||
from weboob.tools.backend import BaseBackend, BackendConfig
|
||||
from weboob.tools.backend import BaseModule, BackendConfig
|
||||
from weboob.tools.value import ValueBackendPassword
|
||||
|
||||
from .browser import ApivieBrowser
|
||||
|
|
@ -27,7 +27,7 @@ from .browser import ApivieBrowser
|
|||
__all__ = ['ApivieBackend']
|
||||
|
||||
|
||||
class ApivieBackend(BaseBackend, CapBank):
|
||||
class ApivieBackend(BaseModule, CapBank):
|
||||
NAME = 'apivie'
|
||||
DESCRIPTION = u'Apivie'
|
||||
MAINTAINER = u'Romain Bignon'
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
from weboob.capabilities.video import CapVideo, BaseVideo
|
||||
from weboob.capabilities.collection import CapCollection, CollectionNotFound
|
||||
from weboob.tools.backend import BaseBackend, BackendConfig
|
||||
from weboob.tools.backend import BaseModule, BackendConfig
|
||||
from weboob.tools.value import ValueBackendPassword
|
||||
|
||||
from .browser import ArretSurImagesBrowser
|
||||
|
|
@ -29,7 +29,7 @@ from .video import ArretSurImagesVideo
|
|||
__all__ = ['ArretSurImagesBackend']
|
||||
|
||||
|
||||
class ArretSurImagesBackend(BaseBackend, CapVideo, CapCollection):
|
||||
class ArretSurImagesBackend(BaseModule, CapVideo, CapCollection):
|
||||
NAME = 'arretsurimages'
|
||||
DESCRIPTION = u'arretsurimages website'
|
||||
MAINTAINER = u'franek'
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import re
|
|||
|
||||
from weboob.capabilities.video import CapVideo, BaseVideo
|
||||
from weboob.capabilities.collection import CapCollection, CollectionNotFound, Collection
|
||||
from weboob.tools.backend import BaseBackend, BackendConfig
|
||||
from weboob.tools.backend import BaseModule, BackendConfig
|
||||
from weboob.tools.value import Value
|
||||
|
||||
from .browser import ArteBrowser
|
||||
|
|
@ -32,7 +32,7 @@ from .video import ArteVideo, ArteLiveVideo
|
|||
__all__ = ['ArteBackend']
|
||||
|
||||
|
||||
class ArteBackend(BaseBackend, CapVideo, CapCollection):
|
||||
class ArteBackend(BaseModule, CapVideo, CapCollection):
|
||||
NAME = 'arte'
|
||||
MAINTAINER = u'Bezleputh'
|
||||
EMAIL = 'carton_ben@yahoo.fr'
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from weboob.capabilities.subtitle import CapSubtitle, LanguageNotSupported
|
||||
from weboob.tools.backend import BaseBackend
|
||||
from weboob.tools.backend import BaseModule
|
||||
|
||||
from .browser import AttilasubBrowser
|
||||
|
||||
|
|
@ -27,7 +27,7 @@ from urllib import quote_plus
|
|||
__all__ = ['AttilasubBackend']
|
||||
|
||||
|
||||
class AttilasubBackend(BaseBackend, CapSubtitle):
|
||||
class AttilasubBackend(BaseModule, CapSubtitle):
|
||||
NAME = 'attilasub'
|
||||
MAINTAINER = u'Julien Veyssier'
|
||||
EMAIL = 'julien.veyssier@aiur.fr'
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ from weboob.capabilities.radio import CapRadio, Radio
|
|||
from weboob.capabilities.audiostream import BaseAudioStream
|
||||
from weboob.tools.capabilities.streaminfo import StreamInfo
|
||||
from weboob.capabilities.collection import CapCollection, Collection
|
||||
from weboob.tools.backend import BaseBackend, BackendConfig
|
||||
from weboob.tools.backend import BaseModule, BackendConfig
|
||||
from weboob.tools.value import Value
|
||||
from weboob.tools.browser import StandardBrowser
|
||||
import time
|
||||
|
|
@ -38,7 +38,7 @@ __all__ = ['AudioAddictBackend']
|
|||
# option to another player in the ~/.config/weboob/radioob config file:
|
||||
# [ROOT]
|
||||
# media_player = your_non_mplayer_player
|
||||
class AudioAddictBackend(BaseBackend, CapRadio, CapCollection):
|
||||
class AudioAddictBackend(BaseModule, CapRadio, CapCollection):
|
||||
NAME = 'audioaddict'
|
||||
MAINTAINER = u'Pierre Mazière'
|
||||
EMAIL = 'pierre.maziere@gmx.com'
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ from weboob.capabilities.messages import CapMessages, CapMessagesPost, Message,
|
|||
from weboob.capabilities.dating import CapDating, OptimizationNotFound, Event
|
||||
from weboob.capabilities.contact import CapContact, ContactPhoto, Query, QueryError
|
||||
from weboob.capabilities.account import CapAccount, StatusField
|
||||
from weboob.tools.backend import BaseBackend, BackendConfig
|
||||
from weboob.tools.backend import BaseModule, BackendConfig
|
||||
from weboob.tools.browser import BrowserUnavailable, BrowserHTTPNotFound
|
||||
from weboob.tools.value import Value, ValuesDict, ValueBool, ValueBackendPassword
|
||||
from weboob.tools.log import getLogger
|
||||
|
|
@ -57,7 +57,7 @@ def parse_dt(s):
|
|||
return local2utc(d)
|
||||
|
||||
|
||||
class AuMBackend(BaseBackend, CapMessages, CapMessagesPost, CapDating, CapChat, CapContact, CapAccount):
|
||||
class AuMBackend(BaseModule, CapMessages, CapMessagesPost, CapDating, CapChat, CapContact, CapAccount):
|
||||
NAME = 'aum'
|
||||
MAINTAINER = u'Romain Bignon'
|
||||
EMAIL = 'romain@weboob.org'
|
||||
|
|
@ -79,7 +79,7 @@ class AuMBackend(BaseBackend, CapMessages, CapMessagesPost, CapDating, CapChat,
|
|||
MAGIC_ID_BASKET = 1
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
BaseBackend.__init__(self, *args, **kwargs)
|
||||
BaseModule.__init__(self, *args, **kwargs)
|
||||
if self.config['antispam'].get():
|
||||
self.antispam = AntiSpam()
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
|
||||
from weboob.capabilities.bank import CapBank, AccountNotFound
|
||||
from weboob.tools.backend import BaseBackend, BackendConfig
|
||||
from weboob.tools.backend import BaseModule, BackendConfig
|
||||
from weboob.tools.value import ValueBackendPassword
|
||||
|
||||
from .browser import AXABanque
|
||||
|
|
@ -28,7 +28,7 @@ from .browser import AXABanque
|
|||
__all__ = ['AXABanqueBackend']
|
||||
|
||||
|
||||
class AXABanqueBackend(BaseBackend, CapBank):
|
||||
class AXABanqueBackend(BaseModule, CapBank):
|
||||
NAME = 'axabanque'
|
||||
MAINTAINER = u'Romain Bignon'
|
||||
EMAIL = 'romain@weboob.org'
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
from weboob.capabilities.base import find_object
|
||||
from weboob.capabilities.bank import CapBank, AccountNotFound
|
||||
from weboob.tools.backend import BaseBackend, BackendConfig
|
||||
from weboob.tools.backend import BaseModule, BackendConfig
|
||||
from weboob.tools.value import ValueBackendPassword
|
||||
|
||||
from .browser import BanqueAccordBrowser
|
||||
|
|
@ -29,7 +29,7 @@ from .browser import BanqueAccordBrowser
|
|||
__all__ = ['BanqueAccordBackend']
|
||||
|
||||
|
||||
class BanqueAccordBackend(BaseBackend, CapBank):
|
||||
class BanqueAccordBackend(BaseModule, CapBank):
|
||||
NAME = 'banqueaccord'
|
||||
DESCRIPTION = u'Banque Accord'
|
||||
MAINTAINER = u'Romain Bignon'
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
|
||||
from weboob.capabilities.bank import CapBank, AccountNotFound
|
||||
from weboob.tools.backend import BaseBackend, BackendConfig
|
||||
from weboob.tools.backend import BaseModule, BackendConfig
|
||||
from weboob.tools.ordereddict import OrderedDict
|
||||
from weboob.tools.value import ValueBackendPassword, Value
|
||||
|
||||
|
|
@ -29,7 +29,7 @@ from .browser import BanquePopulaire
|
|||
__all__ = ['BanquePopulaireBackend']
|
||||
|
||||
|
||||
class BanquePopulaireBackend(BaseBackend, CapBank):
|
||||
class BanquePopulaireBackend(BaseModule, CapBank):
|
||||
NAME = 'banquepopulaire'
|
||||
MAINTAINER = u'Romain Bignon'
|
||||
EMAIL = 'romain@weboob.org'
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue