Source code for pas.importer.types

"""Type definitions for JSON import data structures."""

from __future__ import annotations

import logging
from typing import Literal, TypedDict

from typing import TYPE_CHECKING
if TYPE_CHECKING:
    from onegov.pas.log import OutputHandler


[docs] class EmailData(TypedDict):
[docs] id: str
[docs] label: str
[docs] email: str
[docs] isDefault: bool
[docs] thirdPartyId: str | None
[docs] modified: str
[docs] created: str
[docs] class AddressData(TypedDict):
[docs] formattedAddress: str
[docs] id: str
[docs] label: str
[docs] isDefault: bool
[docs] organisationName: str
[docs] organisationNameAddOn1: str
[docs] organisationNameAddOn2: str
[docs] addressLine1: str
[docs] addressLine2: str
[docs] street: str
[docs] houseNumber: str
[docs] dwellingNumber: str
[docs] postOfficeBox: str
[docs] swissZipCode: str
[docs] swissZipCodeAddOn: str
[docs] swissZipCodeId: str
[docs] foreignZipCode: str
[docs] locality: str
[docs] town: str
[docs] countryIdISO2: str
[docs] countryName: str
[docs] thirdPartyId: str | None
[docs] modified: str
[docs] created: str
[docs] class PhoneNumberData(TypedDict):
[docs] id: str
[docs] label: str
[docs] phoneNumber: str
[docs] phoneCategory: int
[docs] otherPhoneCategory: str | None
[docs] phoneCategoryText: str
[docs] isDefault: bool
[docs] thirdPartyId: str | None
[docs] modified: str
[docs] created: str
[docs] class UrlData(TypedDict):
[docs] id: str
[docs] label: str
[docs] url: str | None
[docs] isDefault: bool
[docs] thirdPartyId: str | None
[docs] modified: str
[docs] created: str
[docs] class OrganizationData(TypedDict):
[docs] created: str
[docs] description: str
[docs] htmlUrl: str
[docs] id: str
[docs] isActive: bool
[docs] memberCount: int
[docs] modified: str
[docs] name: str
[docs] organizationTypeTitle: ( Literal['Kommission', 'Fraktion', 'Kantonsrat', 'Sonstige'] | None )
[docs] primaryEmail: None
[docs] status: int
[docs] thirdPartyId: str | None
[docs] url: str
[docs] class OrganizationDataWithinMembership(TypedDict):
[docs] created: str
[docs] description: str
[docs] htmlUrl: str
[docs] id: str
[docs] isActive: bool
[docs] memberCount: int
[docs] modified: str
[docs] name: str
[docs] organizationTypeTitle: ( Literal['Kommission', 'Fraktion', 'Kantonsrat', 'Sonstige'] | None )
[docs] primaryEmail: EmailData | None
[docs] status: int
[docs] thirdPartyId: str | None
[docs] url: str
[docs] organizationType: int
[docs] primaryAddress: AddressData | None
[docs] primaryPhoneNumber: PhoneNumberData | None
[docs] primaryUrl: UrlData | None
[docs] statusDisplay: str
[docs] tags: list[str]
[docs] type: str
[docs] class PersonData(TypedDict):
[docs] created: str
[docs] firstName: str
[docs] fullName: str
[docs] htmlUrl: str
[docs] id: str
[docs] isActive: bool
[docs] modified: str
[docs] officialName: str
[docs] personTypeTitle: str | None
[docs] primaryEmail: EmailData | None
[docs] salutation: str
[docs] tags: list[str]
[docs] thirdPartyId: str
[docs] title: str
[docs] url: str
[docs] username: str | None
[docs] class MembershipData(TypedDict):
[docs] department: str
[docs] description: str
[docs] emailReceptionType: str
[docs] end: str | bool | None
[docs] id: str
[docs] isDefault: bool
[docs] organization: OrganizationDataWithinMembership
[docs] person: PersonData
[docs] primaryAddress: AddressData | None
[docs] primaryEmail: EmailData | None
[docs] primaryPhoneNumber: PhoneNumberData | None
[docs] primaryUrl: UrlData | None
[docs] email: EmailData | None
[docs] phoneNumber: PhoneNumberData | None
[docs] address: AddressData | None
[docs] urlField: UrlData | None
[docs] role: str
[docs] start: str | bool | None
[docs] text: str
[docs] thirdPartyId: str | None
[docs] type: str
[docs] typedId: str
[docs] url: str
[docs] class OutputLogHandler(logging.Handler): """Logging handler that forwards messages to an OutputHandler.""" def __init__(self, output_handler: OutputHandler) -> None: super().__init__()
[docs] self.output_handler = output_handler
[docs] def emit(self, record: logging.LogRecord) -> None: """Format and send log record to the output handler.""" try: message = self.format(record) self.output_handler.info(message) except Exception: # nosec B110 # Avoid recursion in case of logging errors pass