Source code for woob.capabilities.profile

# Copyright(C) 2016      Edouard Lambert
#
# 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/>.

import warnings

from .address import PostalAddress, compat_field
from .base import BaseObject, Capability, DecimalField, DeprecatedFieldWarning, Field, StringField, UserError
from .date import DateField


__all__ = ["Profile", "Person", "Company", "CapProfile"]


class ProfileMissing(UserError):
    """
    Raised when profile is not accessible
    """


[docs]class Profile(BaseObject): """ Profile. """ name = StringField("Full name or company name") postal_address = Field("Postal address", PostalAddress) phone = StringField("Phone number") professional_phone = StringField("Professional phone number") email = StringField("EMail address") professional_email = StringField("Professional email") main_bank = StringField("Main bank") address = compat_field("postal_address", "full_address") country = compat_field("postal_address", "country")
[docs]class Company(Profile): """ Company. """ siren = StringField("French SIREN Number") registration_date = DateField("Registration date") activity_area = StringField("Activity area")
[docs]class Person(Profile): """ Person. """ birth_date = DateField("Birth date") birth_place = StringField("Birth place") birth_name = StringField("Birth name") firstname = StringField("Person's firstname") lastname = StringField("Person's lastname") nationality = StringField("Nationality of person") mobile = StringField("Mobile number of person") gender = StringField("Gender of person") spouse_name = StringField("Name of spouse") children = DecimalField("Number of children") family_situation = StringField("Family situation") matrimonial = StringField("Matrimonial status") housing_status = StringField("Housing status") job = StringField("Profession") job_start_date = DateField("Start date of current job") job_contract_type = StringField("Contract type of current job") company = Field("Company of current job", Company) socioprofessional_category = StringField("Socio-Professional Category") job_activity_area = compat_field("company", "activity_area") company_name = compat_field("company", "name") company_siren = compat_field("company", "siren") @property def maiden_name(self): warnings.warn( "Field is deprecated, use .birth_name field instead.", DeprecatedFieldWarning, stacklevel=3, ) return self.birth_name @maiden_name.setter def maiden_name(self, value): warnings.warn( "Field is deprecated, use .birth_name field instead.", DeprecatedFieldWarning, stacklevel=3, ) self.birth_name = value
[docs]class CapProfile(Capability):
[docs] def get_profile(self): """ Get profile. :rtype: :class:`Person` or :class:`Company` """ raise NotImplementedError()