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, DecimalField, StringField


[docs]class GeoCoordinates(BaseObject): latitude = DecimalField("Latitude") longitude = DecimalField("Longitude") altitude = DecimalField("Altitude") def __repr__(self): return f"<{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 f"<{type(self).__name__} full_address={self.full_address!r}>" return "<{} street={!r} postal_code={!r} region={!r} city={!r} country={!r} country_code={!r}>".format( 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