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 (
Capability, BaseObject, DecimalField, StringField, UserError, Field,
DeprecatedFieldWarning,
)
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()