Source code for woob.capabilities.address

# Copyright(C) 2010-2019 woob project
#
# 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 .base import (
    BaseObject, StringField, DecimalField,
)


[docs]class GeoCoordinates(BaseObject): latitude = DecimalField('Latitude') longitude = DecimalField('Longitude') altitude = DecimalField('Altitude') def __repr__(self): return '<%s %s;%s>' % (type(self).__name__, self.latitude, self.longitude)
[docs]class PostalAddress(BaseObject): street = StringField('Street address') postal_code = StringField('Postal code') city = StringField('City') region = StringField('Region') country = StringField('Country') country_code = StringField('ISO 3166-1 alpha-2 country code') full_address = StringField('Full address if detailed address is not available') def __repr__(self): if self.full_address: return '<%s full_address=%r>' % (type(self).__name__, self.full_address) return '<%s street=%r postal_code=%r region=%r city=%r country=%r country_code=%r>' % (type(self).__name__, self.street, self.postal_code, self.region, self.city, self.country, self.country_code)
[docs]def compat_field(field, sub): @property def f(self): return getattr(self, field) and getattr(getattr(self, field), sub) @f.setter def f(self, value): if not getattr(self, field): type_ = self._fields[field].types[0] setattr(self, field, type_()) setattr(getattr(self, field), sub, value) return f