module.py 2.66 KB
Newer Older
Edouard Lambert's avatar
Edouard Lambert committed
1 2 3 4
# -*- coding: utf-8 -*-

# Copyright(C) 2016      Edouard Lambert
#
5
# This file is part of a weboob module.
Edouard Lambert's avatar
Edouard Lambert committed
6
#
7
# This weboob module is free software: you can redistribute it and/or modify
8
# it under the terms of the GNU Lesser General Public License as published by
Edouard Lambert's avatar
Edouard Lambert committed
9 10 11
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
12
# This weboob module is distributed in the hope that it will be useful,
Edouard Lambert's avatar
Edouard Lambert committed
13 14
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
# GNU Lesser General Public License for more details.
Edouard Lambert's avatar
Edouard Lambert committed
16
#
17
# You should have received a copy of the GNU Lesser General Public License
18
# along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
Edouard Lambert's avatar
Edouard Lambert committed
19

20
from __future__ import unicode_literals
Edouard Lambert's avatar
Edouard Lambert committed
21

22
from weboob.capabilities.bill import DocumentTypes, CapDocument, Subscription, Document, SubscriptionNotFound, DocumentNotFound
Edouard Lambert's avatar
Edouard Lambert committed
23 24 25 26 27 28 29 30 31 32 33 34
from weboob.capabilities.base import find_object, NotAvailable
from weboob.tools.backend import Module, BackendConfig
from weboob.tools.value import ValueBackendPassword, Value

from .browser import OnlinenetBrowser


__all__ = ['OnlinenetModule']


class OnlinenetModule(Module, CapDocument):
    NAME = 'onlinenet'
35 36
    DESCRIPTION = 'Online.net'
    MAINTAINER = 'Edouard Lambert'
Edouard Lambert's avatar
Edouard Lambert committed
37
    EMAIL = '[email protected]'
38
    LICENSE = 'LGPLv3+'
Romain Bignon's avatar
Romain Bignon committed
39
    VERSION = '1.6'
40 41 42 43
    CONFIG = BackendConfig(
            Value('login', label='Identifiant'),
            ValueBackendPassword('password', label='Mot de passe'),
    )
Edouard Lambert's avatar
Edouard Lambert committed
44 45 46

    BROWSER = OnlinenetBrowser

47 48
    accepted_document_types = (DocumentTypes.BILL, DocumentTypes.OTHER,)

Edouard Lambert's avatar
Edouard Lambert committed
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
    def create_default_browser(self):
        return self.create_browser(self.config['login'].get(), self.config['password'].get())

    def iter_subscription(self):
        return self.browser.get_subscription_list()

    def get_subscription(self, _id):
        return find_object(self.iter_subscription(), id=_id, error=SubscriptionNotFound)

    def get_document(self, _id):
        subid = _id.rsplit('_', 1)[0]
        subscription = self.get_subscription(subid)

        return find_object(self.iter_documents(subscription), id=_id, error=DocumentNotFound)

    def iter_documents(self, subscription):
        if not isinstance(subscription, Subscription):
            subscription = self.get_subscription(subscription)
        return self.browser.iter_documents(subscription)

    def download_document(self, document):
        if not isinstance(document, Document):
            document = self.get_document(document)
        if document._url is NotAvailable:
            return
        return self.browser.open(document._url).content