2017-06-15 15:48:16 +02:00
|
|
|
# coding: utf-8
|
|
|
|
"""
|
|
|
|
This modules defines an SQLAlchemy ORM model for a postal code opendata.
|
|
|
|
"""
|
|
|
|
# pylint: disable=locally-disabled,invalid-name,too-few-public-methods
|
|
|
|
from __future__ import absolute_import, print_function, unicode_literals
|
|
|
|
|
|
|
|
import logging
|
|
|
|
|
|
|
|
from sqlalchemy import (
|
|
|
|
Column, Float, Integer, String, UniqueConstraint
|
|
|
|
)
|
|
|
|
|
|
|
|
from flatisfy.database.base import BASE
|
|
|
|
|
|
|
|
|
|
|
|
LOGGER = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
|
|
|
|
class PostalCode(BASE):
|
|
|
|
"""
|
|
|
|
SQLAlchemy ORM model to store a postal code opendata.
|
|
|
|
"""
|
|
|
|
__tablename__ = "postal_codes"
|
|
|
|
|
|
|
|
id = Column(Integer, primary_key=True)
|
|
|
|
# Area is an identifier to prevent loading unnecessary stops. For now it is
|
|
|
|
# following ISO 3166-2.
|
|
|
|
area = Column(String, index=True)
|
|
|
|
postal_code = Column(String, index=True)
|
|
|
|
name = Column(String, index=True)
|
|
|
|
lat = Column(Float)
|
|
|
|
lng = Column(Float)
|
|
|
|
UniqueConstraint("postal_code", "name")
|
|
|
|
|
|
|
|
def __repr__(self):
|
|
|
|
return "<PostalCode(id=%s)>" % self.id
|
2017-12-13 14:38:05 +01:00
|
|
|
|
|
|
|
def json_api_repr(self):
|
|
|
|
"""
|
|
|
|
Return a dict representation of this postal code object that is JSON
|
|
|
|
serializable.
|
|
|
|
"""
|
|
|
|
return {
|
|
|
|
k: v
|
|
|
|
for k, v in self.__dict__.items()
|
|
|
|
if not k.startswith("_")
|
|
|
|
}
|