Source code for woob.capabilities.account

# Copyright(C) 2010-2011 Romain Bignon
#
# This file is part of woob.
#
# woob is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# woob 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 Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with woob. If not, see <http://www.gnu.org/licenses/>.

from __future__ import annotations

from .base import (
    BaseObject,
    Capability,
    Field,
    IntField,
    NotAvailableType,
    NotLoaded,
    NotLoadedType,
    StringField,
    UserError,
)


__all__ = ["AccountRegisterError", "Account", "StatusField", "CapAccount", "CapCredentialsCheck"]


[docs]class AccountRegisterError(UserError): """ Raised when there is an error during registration. """
[docs]class Account(BaseObject): """ Describe an account and its properties. """ login = StringField("Login") password = StringField("Password") properties = Field("List of key/value properties", dict) def __init__(self, id: str = "", url: str | NotLoadedType | NotAvailableType = NotLoaded): super().__init__(id, url)
[docs]class StatusField(BaseObject): """ Field of an account staeobjectus. """ FIELD_TEXT = 0x001 # the value is a long text FIELD_HTML = 0x002 # the value is HTML formated key = StringField("Key") label = StringField("Label") value = StringField("Value") flags = IntField("Flags") def __init__( self, key: str, label: str, value: str, flags: int = 0, url: str | NotLoadedType | NotAvailableType = NotLoaded ): super().__init__(key, url) self.__setattr__("key", key) self.__setattr__("label", label) self.__setattr__("value", value) self.__setattr__("flags", flags)
[docs]class CapAccount(Capability): """ Capability for websites when you can create and manage accounts. :var ACCOUNT_REGISTER_PROPERTIES: This class constant may be a list of :class:`woob.tools.value.Value` objects. If the value remains None, woob considers that :func:`register_account` isn't supported. """ ACCOUNT_REGISTER_PROPERTIES = None
[docs] @staticmethod def register_account(account: Account): """ Register an account on website This is a static method, it would be called even if the backend is instancied. :param account: describe the account to create :type account: :class:`Account` :raises: :class:`AccountRegisterError` """ raise NotImplementedError()
[docs] def confirm_account(self, mail: str): """ From an email go to the confirm link. """ raise NotImplementedError()
[docs] def get_account(self) -> Account: """ Get the current account. """ raise NotImplementedError()
[docs] def update_account(self, account: Account): """ Update the current account. """ raise NotImplementedError()
[docs] def get_account_status(self) -> list[StatusField]: """ Get status of the current account. :returns: a list of fields :rtype: list[StatusField] """ raise NotImplementedError()
[docs]class CapCredentialsCheck(Capability):
[docs] def check_credentials(self) -> bool: """ Its purpose is to check that the credentials (in the config) are valid for the module's website, API, whatever requires credentials to be accessed. """ raise NotImplementedError()