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()