Skip to content

Commit ce334da

Browse files
authored
Core: Switches database driver from psycopg2 to psycopg
TYPE: Feature LINK: OGC-3039
1 parent 6fff03d commit ce334da

109 files changed

Lines changed: 570 additions & 370 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

setup.cfg

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ install_requires =
117117
pglast
118118
phonenumbers
119119
polib
120-
psycopg2
120+
psycopg[c]
121121
purl
122122
pycurl
123123
pyparsing
@@ -209,7 +209,6 @@ mypy =
209209
types-passlib
210210
types-polib
211211
types-psutil
212-
types-psycopg2
213212
types-pycurl
214213
types-pysaml2
215214
types-python-dateutil

src/onegov/activity/collections/attendee.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@
99
from datetime import date
1010
from onegov.user import User
1111
from sqlalchemy.orm import Query
12+
from uuid import UUID # noqa: F401
1213

1314

14-
class AttendeeCollection(GenericCollection[Attendee]):
15+
class AttendeeCollection(GenericCollection[Attendee, 'UUID']):
1516

1617
@property
1718
def model_class(self) -> type[Attendee]:

src/onegov/activity/collections/booking.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
]
2424

2525

26-
class BookingCollection(GenericCollection[Booking]):
26+
class BookingCollection(GenericCollection[Booking, 'UUID']):
2727

2828
def __init__(
2929
self,

src/onegov/activity/collections/occasion.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@
1212
from collections.abc import Sequence
1313
from datetime import datetime
1414
from onegov.activity.models import Activity, BookingPeriod
15+
from uuid import UUID # noqa: F401
1516

1617

17-
class OccasionCollection(GenericCollection[Occasion]):
18+
class OccasionCollection(GenericCollection[Occasion, 'UUID']):
1819

1920
@property
2021
def model_class(self) -> type[Occasion]:

src/onegov/activity/collections/period.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@
77
from typing import TYPE_CHECKING
88
if TYPE_CHECKING:
99
from datetime import date
10+
from uuid import UUID # noqa: F401
1011

1112

12-
class BookingPeriodCollection(GenericCollection[BookingPeriod]):
13+
class BookingPeriodCollection(GenericCollection[BookingPeriod, 'UUID']):
1314

1415
@property
1516
def model_class(self) -> type[BookingPeriod]:

src/onegov/activity/collections/publication_request.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,14 @@
33
from onegov.activity.models.publication_request import PublicationRequest
44
from onegov.core.collection import GenericCollection
55

6+
from typing import TYPE_CHECKING
7+
if TYPE_CHECKING:
8+
from uuid import UUID # noqa: F401
69

7-
class PublicationRequestCollection(GenericCollection[PublicationRequest]):
10+
11+
class PublicationRequestCollection(
12+
GenericCollection[PublicationRequest, 'UUID']
13+
):
814

915
@property
1016
def model_class(self) -> type[PublicationRequest]:

src/onegov/activity/collections/volunteer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ class ReportRowWithoutVolunteer(NamedTuple):
7474
type ReportRow = ReportRowWithVolunteer | ReportRowWithoutVolunteer
7575

7676

77-
class VolunteerCollection(GenericCollection[Volunteer]):
77+
class VolunteerCollection(GenericCollection[Volunteer, 'UUID']):
7878

7979
def __init__(
8080
self,

src/onegov/agency/api.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from onegov.api import ApiEndpoint, ApiInvalidParamException
1111
from onegov.api.utils import is_authorized
1212
from onegov.gis import Coordinates
13+
from uuid import UUID
1314

1415

1516
from typing import Any
@@ -97,7 +98,7 @@ def get_modified_iso_format(item: TimestampMixin) -> str:
9798
return item.last_change.isoformat()
9899

99100

100-
class PersonApiEndpoint(ApiEndpoint['ExtendedPerson'], ApisMixin):
101+
class PersonApiEndpoint(ApiEndpoint['ExtendedPerson', UUID], ApisMixin):
101102
request: CoreRequest
102103
app: AgencyApp
103104
endpoint = 'people'
@@ -106,6 +107,7 @@ class PersonApiEndpoint(ApiEndpoint['ExtendedPerson'], ApisMixin):
106107
'last_name': None
107108
} | dict.fromkeys(UPDATE_FILTER_PARAMS, UPDATE_FILTER_PROMPT)
108109
form_class = AuthenticatedPersonMutationForm
110+
pk_type = UUID
109111

110112
@property
111113
def title(self) -> str:
@@ -211,14 +213,15 @@ def apply_changes(
211213
do_report_person_change(item, form.meta.request, form)
212214

213215

214-
class AgencyApiEndpoint(ApiEndpoint['ExtendedAgency'], ApisMixin):
216+
class AgencyApiEndpoint(ApiEndpoint['ExtendedAgency', int], ApisMixin):
215217
request: CoreRequest
216218
app: AgencyApp
217219
endpoint = 'agencies'
218220
filters = {
219221
'parent': None,
220222
'title': None
221223
} | dict.fromkeys(UPDATE_FILTER_PARAMS, UPDATE_FILTER_PROMPT)
224+
pk_type = int
222225

223226
@property
224227
def title(self) -> str:
@@ -229,7 +232,7 @@ def collection(self) -> PaginatedAgencyCollection:
229232
result = PaginatedAgencyCollection(
230233
self.session,
231234
page=self.page or 0,
232-
parent=self.get_filter('parent', None, False),
235+
parent=self.get_filter('parent', None, False, coerce=int),
233236
joinedload=['organigram', 'parent'],
234237
undefer=['content']
235238
)
@@ -279,7 +282,7 @@ def item_links(self, item: ExtendedAgency) -> dict[str, Any]:
279282

280283

281284
class MembershipApiEndpoint(
282-
ApiEndpoint['ExtendedAgencyMembership'],
285+
ApiEndpoint['ExtendedAgencyMembership', UUID],
283286
ApisMixin
284287
):
285288

@@ -290,14 +293,15 @@ class MembershipApiEndpoint(
290293
'agency': None,
291294
'person': None
292295
} | dict.fromkeys(UPDATE_FILTER_PARAMS, UPDATE_FILTER_PROMPT)
296+
pk_type = UUID
293297

294298
@property
295299
def collection(self) -> PaginatedMembershipCollection:
296300
result = PaginatedMembershipCollection(
297301
self.session,
298302
page=self.page or 0,
299-
agency=self.get_filter('agency'),
300-
person=self.get_filter('person'),
303+
agency=self.get_filter('agency', coerce=int),
304+
person=self.get_filter('person', coerce=UUID),
301305
)
302306

303307
for key, values in self.extra_parameters.items():

src/onegov/agency/app.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -219,13 +219,13 @@ def get_editor_assets() -> Iterator[str]:
219219

220220
@AgencyApp.setting(section='api', name='endpoints')
221221
def get_api_endpoints_handler(
222-
) -> Callable[[AgencyRequest], Iterator[ApiEndpoint[Any]]]:
222+
) -> Callable[[AgencyRequest], Iterator[ApiEndpoint[Any, Any]]]:
223223

224224
def get_api_endpoints(
225225
request: AgencyRequest,
226226
page: int = 0,
227227
extra_parameters: dict[str, Any] | None = None
228-
) -> Iterator[ApiEndpoint[Any]]:
228+
) -> Iterator[ApiEndpoint[Any, Any]]:
229229
yield AgencyApiEndpoint(request, extra_parameters, page)
230230
yield PersonApiEndpoint(request, extra_parameters, page)
231231
yield MembershipApiEndpoint(request, extra_parameters, page)

src/onegov/agency/collections/agencies.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@
2121

2222
class FilterParams(TypedDict, total=False):
2323
title: str | None
24-
updated_gt: datetime | str | None
25-
updated_ge: datetime | str | None
26-
updated_eq: datetime | str | None
27-
updated_le: datetime | str | None
28-
updated_lt: datetime | str | None
24+
updated_gt: datetime | None
25+
updated_ge: datetime | None
26+
updated_eq: datetime | None
27+
updated_le: datetime | None
28+
updated_lt: datetime | None
2929

3030

3131
class ExtendedAgencyCollection(AdjacencyListCollection[ExtendedAgency]):
@@ -47,23 +47,23 @@ def __init__(
4747

4848

4949
class PaginatedAgencyCollection(
50-
GenericCollection[ExtendedAgency],
50+
GenericCollection[ExtendedAgency, int],
5151
Pagination[ExtendedAgency]
5252
):
5353

5454
def __init__(
5555
self,
5656
session: Session,
5757
page: int = 0,
58-
parent: str | Literal[False] | None = None,
58+
parent: int | Literal[False] | None = None,
5959
exclude_hidden: bool = True,
6060
joinedload: Collection[str] | None = None,
6161
title: str | None = None,
62-
updated_gt: datetime | str | None = None,
63-
updated_ge: datetime | str | None = None,
64-
updated_eq: datetime | str | None = None,
65-
updated_le: datetime | str | None = None,
66-
updated_lt: datetime | str | None = None,
62+
updated_gt: datetime | None = None,
63+
updated_ge: datetime | None = None,
64+
updated_eq: datetime | None = None,
65+
updated_le: datetime | None = None,
66+
updated_lt: datetime | None = None,
6767
undefer: Collection[str] | None = None
6868
) -> None:
6969

0 commit comments

Comments
 (0)