from __future__ import annotations
from onegov.core.collection import GenericCollection
from onegov.core.collection import Pagination
from onegov.pas.models import Change
from sqlalchemy import desc
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from sqlalchemy.orm import Query
from sqlalchemy.orm import Session
from typing import Self
[docs]
class ChangeCollection(GenericCollection[Change], Pagination[Change]):
def __init__(self, session: Session, page: int = 0):
GenericCollection.__init__(self, session)
Pagination.__init__(self, page)
@property
[docs]
def model_class(self) -> type[Change]:
return Change
[docs]
def __eq__(self, other: object) -> bool:
return isinstance(other, ChangeCollection) and self.page == other.page
[docs]
def subset(self) -> Query[Change]:
return self.query()
@property
[docs]
def page_index(self) -> int:
return self.page
[docs]
def page_by_index(self, index: int) -> Self:
return self.__class__(self.session, index)
[docs]
def query(self) -> Query[Change]:
return super().query().order_by(desc(Change.last_change))