election_day.collections.archived_results
=========================================

.. py:module:: election_day.collections.archived_results


Attributes
----------

.. autoapisummary::

   election_day.collections.archived_results._T1


Classes
-------

.. autoapisummary::

   election_day.collections.archived_results.ArchivedResultCollection
   election_day.collections.archived_results.SearchableArchivedResultCollection


Functions
---------

.. autoapisummary::

   election_day.collections.archived_results.groupbydict


Module Contents
---------------

.. py:data:: _T1

.. py:function:: groupbydict(items: collections.abc.Iterable[_T1], keyfunc: collections.abc.Callable[[_T1], _TSupportsRichComparison], sortfunc: None = None, groupfunc: collections.abc.Callable[[collections.abc.Iterable[_T1]], list[_T1]] = list) -> dict[_TSupportsRichComparison, list[_T1]]
                 groupbydict(items: collections.abc.Iterable[_T1], keyfunc: collections.abc.Callable[[_T1], _T2], sortfunc: collections.abc.Callable[[_T1], _typeshed.SupportsRichComparison], groupfunc: collections.abc.Callable[[collections.abc.Iterable[_T1]], list[_T1]] = list) -> dict[_T2, list[_T1]]
                 groupbydict(items: collections.abc.Iterable[_T1], keyfunc: collections.abc.Callable[[_T1], _TSupportsRichComparison], sortfunc: None = None, *, groupfunc: collections.abc.Callable[[collections.abc.Iterable[_T1]], _T2]) -> dict[_TSupportsRichComparison, _T2]
                 groupbydict(items: collections.abc.Iterable[_T1], keyfunc: collections.abc.Callable[[_T1], _TSupportsRichComparison], sortfunc: None, groupfunc: collections.abc.Callable[[collections.abc.Iterable[_T1]], _T2]) -> dict[_TSupportsRichComparison, _T2]
                 groupbydict(items: collections.abc.Iterable[_T1], keyfunc: collections.abc.Callable[[_T1], _T2], sortfunc: collections.abc.Callable[[_T1], _typeshed.SupportsRichComparison], groupfunc: collections.abc.Callable[[collections.abc.Iterable[_T1]], _T3]) -> dict[_T2, _T3]

.. py:class:: ArchivedResultCollection(session: sqlalchemy.orm.Session, date_: str | None = None)

   .. py:attribute:: session


   .. py:attribute:: date
      :value: None



   .. py:method:: for_date(date_: str) -> Self


   .. py:method:: query() -> sqlalchemy.orm.Query[onegov.election_day.models.ArchivedResult]


   .. py:method:: get_years() -> list[int]

      Returns a list of available years. 



   .. py:method:: group_items(items: collections.abc.Collection[onegov.election_day.models.ArchivedResult], request: onegov.election_day.request.ElectionDayRequest) -> dict[datetime.date, dict[str | None, dict[str, list[onegov.election_day.models.ArchivedResult]]]] | None

      Groups a list of archived results.

      Groups election compounds and elections to the same group. Removes
      elections already covered by an election compound. Merges region,
      district and none domains.



   .. py:method:: current() -> tuple[list[onegov.election_day.models.ArchivedResult], datetime.datetime | None]

      Returns the current results.

      The current results are the results from either the next election day
      relative to today or the last results relative to today, if no next.




   .. py:method:: by_year(year: int) -> tuple[list[onegov.election_day.models.ArchivedResult], datetime.datetime | None]

      Returns the results for the given year. 



   .. py:method:: by_date(date_: datetime.date | None = None) -> tuple[list[onegov.election_day.models.ArchivedResult], datetime.datetime | None]

      Returns the results of a given/current date. 



   .. py:method:: update(item: onegov.election_day.models.Election | onegov.election_day.models.ElectionCompound | onegov.election_day.models.Vote, request: onegov.election_day.request.ElectionDayRequest, old: str | None = None) -> onegov.election_day.models.ArchivedResult

      Updates a result. 



   .. py:method:: update_all(request: onegov.election_day.request.ElectionDayRequest) -> None

      Updates all (local) results. 



   .. py:method:: add(item: onegov.election_day.models.Election | onegov.election_day.models.ElectionCompound | onegov.election_day.models.Vote, request: onegov.election_day.request.ElectionDayRequest) -> None

      Add a new election or vote and create a result entry.  



   .. py:method:: clear_results(item: onegov.election_day.models.Election | onegov.election_day.models.ElectionCompound | onegov.election_day.models.Vote, request: onegov.election_day.request.ElectionDayRequest, clear_all: bool = False) -> None

      Clears the result of an election or vote.  



   .. py:method:: delete(item: onegov.election_day.models.Election | onegov.election_day.models.ElectionCompound | onegov.election_day.models.Vote, request: onegov.election_day.request.ElectionDayRequest) -> None

      Deletes an election or vote and the associated result entry.  



.. py:class:: SearchableArchivedResultCollection(app: onegov.election_day.app.ElectionDayApp, date_: str | None = None, from_date: datetime.date | None = None, to_date: datetime.date | None = None, item_type: str | None = None, domains: list[str] | None = None, term: str | None = None, answers: list[str] | None = None, locale: str = 'de_CH', page: int = 0)

   Bases: :py:obj:`ArchivedResultCollection`, :py:obj:`onegov.core.collection.Pagination`\ [\ :py:obj:`onegov.election_day.models.ArchivedResult`\ ]


   Provides collections with pagination, if they implement a few
   documented properties and methods.

   See :class:`onegov.ticket.TicketCollection` for an example.



   .. py:attribute:: page
      :type:  int


   .. py:attribute:: app


   .. py:attribute:: from_date
      :value: None



   .. py:attribute:: to_date


   .. py:attribute:: item_type
      :value: None



   .. py:attribute:: domains
      :value: None



   .. py:attribute:: term
      :value: None



   .. py:attribute:: answers
      :value: None



   .. py:attribute:: locale
      :value: 'de_CH'



   .. py:method:: __eq__(other: object) -> bool

      Returns True if the current and the other Pagination instance
      are equal. Used to find the current page in a list of pages.




   .. py:method:: subset() -> sqlalchemy.orm.Query[onegov.election_day.models.ArchivedResult]

      Returns an SQLAlchemy query containing all records that should
      be considered for pagination.




   .. py:property:: page_index
      :type: int


      Returns the current page index (starting at 0). 



   .. py:method:: page_by_index(index: int) -> Self

      Returns the page at the given index. A page here means an instance
      of the class inheriting from the ``Pagination`` base class.




   .. py:method:: term_to_tsquery_string(term: str | None) -> str
      :staticmethod:


      Returns the current search term transformed to use within
      Postgres ``to_tsquery`` function.
      Removes all unwanted characters, replaces prefix matching, joins
      word together using FOLLOWED BY.



   .. py:method:: match_term(column: sqlalchemy.sql.ColumnElement[Any], language: str, term: str) -> sqlalchemy.sql.ColumnElement[sqlalchemy.dialects.postgresql.TSVECTOR | None]
      :staticmethod:


      Generate a clause element for a given search term.

      Usage::

          model.filter(match_term(model.col, 'german', 'my search term'))



   .. py:method:: filter_text_by_locale(column: sqlalchemy.sql.ColumnElement[Any], term: str, locale: str = 'en') -> sqlalchemy.sql.ColumnElement[sqlalchemy.dialects.postgresql.TSVECTOR | None]
      :staticmethod:


      Returns an SQLAlchemy filter statement based on the search term.
      If no locale is provided, it will use english as language.

      ``to_tsquery`` creates a tsquery value from term, which must consist of
       single tokens separated by these Boolean operators:

          * ``&`` (AND)
          * ``|`` (OR)
          * ``!`` (NOT)

      ``to_tsvector`` parses a textual document into tokens, reduces the
      tokens to lexemes, and returns a tsvector which lists the lexemes
      together with their positions in the document.

      The document is processed according to the specified or default text
      search configuration.




   .. py:property:: term_filter
      :type: tuple[sqlalchemy.sql.ColumnElement[sqlalchemy.dialects.postgresql.TSVECTOR | None], sqlalchemy.sql.ColumnElement[sqlalchemy.dialects.postgresql.TSVECTOR | None]]



   .. py:method:: query() -> sqlalchemy.orm.Query[onegov.election_day.models.ArchivedResult]


   .. py:method:: reset_query_params() -> None


   .. py:method:: for_item_type(app: onegov.election_day.app.ElectionDayApp, item_type: Literal['vote', 'election'], *, date_: str | None = None, from_date: datetime.date | None = None, to_date: datetime.date | None = None, domains: list[str] | None = None, term: str | None = None, answers: list[str] | None = None, locale: str = 'de_CH', page: int = 0) -> Self
                  for_item_type(app: onegov.election_day.app.ElectionDayApp, item_type: str | None, *, date_: str | None = None, from_date: datetime.date | None = None, to_date: datetime.date | None = None, domains: list[str] | None = None, term: str | None = None, answers: list[str] | None = None, locale: str = 'de_CH', page: int = 0) -> Self | None
      :classmethod: