Source code for wtfs.collections.municipalities

from onegov.core.collection import GenericCollection
from onegov.core.orm.func import unaccent
from onegov.wtfs.models import Municipality
from onegov.wtfs.models import PickupDate
from sqlalchemy import Integer


from typing import Any, TYPE_CHECKING
if TYPE_CHECKING:
    from sqlalchemy.orm import Query


[docs] class MunicipalityCollection(GenericCollection[Municipality]): @property
[docs] def model_class(self) -> type[Municipality]: return Municipality
[docs] def query(self) -> 'Query[Municipality]': query = super().query() query = query.order_by(None).order_by(unaccent(Municipality.name)) return query
[docs] def import_data(self, data: dict[int, dict[str, Any]]) -> None: for bfs_number, values in data.items(): query = self.query() query = query.filter( Municipality.meta['bfs_number'].astext.cast(Integer) == bfs_number ) municipality = query.first() if not municipality: continue dates = set(values['dates']) dates -= {d.date for d in municipality.pickup_dates} for date in dates: municipality.pickup_dates.append(PickupDate(date=date))