Skip to content

Commit 4fea222

Browse files
authored
RIS: Adds filter for future/past meetings (#1913)
TYPE: Feature LINK: ogc-2245
1 parent 7990d46 commit 4fea222

10 files changed

Lines changed: 233 additions & 54 deletions

File tree

src/onegov/org/locale/de_CH/LC_MESSAGES/onegov.org.po

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
msgid ""
33
msgstr ""
44
"Project-Id-Version: PACKAGE 1.0\n"
5-
"POT-Creation-Date: 2025-07-16 13:05+0200\n"
5+
"POT-Creation-Date: 2025-07-17 14:55+0200\n"
66
"PO-Revision-Date: 2022-03-15 10:21+0100\n"
77
"Last-Translator: Marc Sommerhalder <marc.sommerhalder@seantis.ch>\n"
88
"Language-Team: German\n"
@@ -1179,8 +1179,8 @@ msgstr "Nach Beschreibung"
11791179
msgid "By last change"
11801180
msgstr "Nach Zeitpunkt der letzten Änderung"
11811181

1182-
msgid "Portrait"
1183-
msgstr "Portrait"
1182+
msgid "Agenda Items"
1183+
msgstr "Traktanden"
11841184

11851185
msgid "Used in the overview and the e-mail subject"
11861186
msgstr "Wird in der Übersicht und als E-Mail Subjekt verwendet"
@@ -3429,6 +3429,9 @@ msgstr "Letztes Jahr"
34293429
msgid "Older"
34303430
msgstr "Älter"
34313431

3432+
msgid "Meeting"
3433+
msgstr "Sitzung"
3434+
34323435
msgid "Do you really want to delete this note?"
34333436
msgstr "Möchten Sie diese Notiz wirklich löschen?"
34343437

@@ -3655,8 +3658,8 @@ msgstr "Reservationen absagen"
36553658
msgid "Reject all with message"
36563659
msgstr "Alle absagen mit Kommentar"
36573660

3658-
#.
36593661
#. Used in sentence: "${event} published."
3662+
#.
36603663
msgid "Event"
36613664
msgstr "Veranstaltung"
36623665

@@ -7262,6 +7265,9 @@ msgstr "Der Benutzer wurde erfolgreich erstellt"
72627265
msgid "Please enter your e-mail address in order to continue"
72637266
msgstr "Bitte geben Sie ihre E-Mail Adresse ein um fortzufahren"
72647267

7268+
#~ msgid "Portrait"
7269+
#~ msgstr "Portrait"
7270+
72657271
#~ msgid "Please note that this page has subpages which will also be deleted!"
72667272
#~ msgstr ""
72677273
#~ "Bitte beachten Sie dass die Unterthemen dieses Themas ebenfalls gelöscht "

src/onegov/org/locale/fr_CH/LC_MESSAGES/onegov.org.po

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
msgid ""
33
msgstr ""
44
"Project-Id-Version: PACKAGE 1.0\n"
5-
"POT-Creation-Date: 2025-07-16 13:05+0200\n"
5+
"POT-Creation-Date: 2025-07-17 14:55+0200\n"
66
"PO-Revision-Date: 2022-03-15 10:50+0100\n"
77
"Last-Translator: Marc Sommerhalder <marc.sommerhalder@seantis.ch>\n"
88
"Language-Team: French\n"
@@ -1178,8 +1178,8 @@ msgstr "Par légende"
11781178
msgid "By last change"
11791179
msgstr "Par date de dernière modification"
11801180

1181-
msgid "Portrait"
1182-
msgstr "Portrait"
1181+
msgid "Agenda Items"
1182+
msgstr "Éléments d'agenda"
11831183

11841184
msgid "Used in the overview and the e-mail subject"
11851185
msgstr "Utilisé dans l'aperçu et le sujet de l'e-mail"
@@ -3435,6 +3435,9 @@ msgstr "L'an dernier"
34353435
msgid "Older"
34363436
msgstr "Plus âgés"
34373437

3438+
msgid "Meeting"
3439+
msgstr "Réunion"
3440+
34383441
msgid "Do you really want to delete this note?"
34393442
msgstr "Voulez-vous vraiment supprimer cette note ?"
34403443

@@ -3661,8 +3664,8 @@ msgstr "Refuser les réservations"
36613664
msgid "Reject all with message"
36623665
msgstr "Tout refuser avec message"
36633666

3664-
#.
36653667
#. Used in sentence: "${event} published."
3668+
#.
36663669
msgid "Event"
36673670
msgstr "Événement"
36683671

@@ -4054,8 +4057,8 @@ msgid ""
40544057
"filled-out form."
40554058
msgstr ""
40564059
"Veuillez vérifier vos données et appuyez sur « Compléter » pour finaliser le "
4057-
"processus. S'il y a quelque chose que vous souhaitez modifier, cliquez sur "
4058-
"« Modifier » pour retourner sur le formulaire complété."
4060+
"processus. S'il y a quelque chose que vous souhaitez modifier, cliquez sur « "
4061+
"Modifier » pour retourner sur le formulaire complété."
40594062

40604063
msgid ""
40614064
"The image shown in the list view is a square. To have your image shown fully "
@@ -7274,6 +7277,9 @@ msgstr "L'utilisateur a bien été créé"
72747277
msgid "Please enter your e-mail address in order to continue"
72757278
msgstr "Veuillez saisir votre adresse e-mail pour continuer"
72767279

7280+
#~ msgid "Portrait"
7281+
#~ msgstr "Portrait"
7282+
72777283
#~ msgid "Please note that this page has subpages which will also be deleted!"
72787284
#~ msgstr ""
72797285
#~ "Veuillez noter que cette page contient des sous-pages qui seront "

src/onegov/org/locale/it_CH/LC_MESSAGES/onegov.org.po

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
msgid ""
33
msgstr ""
44
"Project-Id-Version: \n"
5-
"POT-Creation-Date: 2025-07-16 13:05+0200\n"
5+
"POT-Creation-Date: 2025-07-17 14:55+0200\n"
66
"PO-Revision-Date: 2022-03-15 10:52+0100\n"
77
"Last-Translator: \n"
88
"Language-Team: \n"
@@ -1182,8 +1182,8 @@ msgstr "Per didascalia"
11821182
msgid "By last change"
11831183
msgstr "Per data dell'ultima modifica"
11841184

1185-
msgid "Portrait"
1186-
msgstr "Ritratto"
1185+
msgid "Agenda Items"
1186+
msgstr "Elementi dell'agenda"
11871187

11881188
msgid "Used in the overview and the e-mail subject"
11891189
msgstr "Utilizzato nella panoramica e nell'oggetto dell'e-mail"
@@ -3436,6 +3436,9 @@ msgstr "Lo scorso anno"
34363436
msgid "Older"
34373437
msgstr "Più vecchia"
34383438

3439+
msgid "Meeting"
3440+
msgstr "Riunione"
3441+
34393442
msgid "Do you really want to delete this note?"
34403443
msgstr "Vuoi davvero eliminare questa nota?"
34413444

@@ -3662,8 +3665,8 @@ msgstr "Rifiuta le prenotazioni"
36623665
msgid "Reject all with message"
36633666
msgstr "Rifiuta tutto con messaggio"
36643667

3665-
#.
36663668
#. Used in sentence: "${event} published."
3669+
#.
36673670
msgid "Event"
36683671
msgstr "Evento"
36693672

@@ -7252,6 +7255,9 @@ msgstr "Utente creato correttamente"
72527255
msgid "Please enter your e-mail address in order to continue"
72537256
msgstr "Inserisci il tuo indirizzo e-mail per continuare"
72547257

7258+
#~ msgid "Portrait"
7259+
#~ msgstr "Ritratto"
7260+
72557261
#~ msgid "Please note that this page has subpages which will also be deleted!"
72567262
#~ msgstr ""
72577263
#~ "Nota che questa pagina contiene delle sottopagine che verranno anch'esse "

src/onegov/org/models/meeting.py

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
import uuid
44
from functools import cached_property
55

6+
from sqlalchemy import exists, func
7+
from sqlalchemy.ext.hybrid import hybrid_property
8+
from sedate import utcnow
9+
610
from onegov.core.collection import GenericCollection
711
from onegov.core.orm import Base
812
from onegov.core.orm.mixins import ContentMixin
@@ -15,14 +19,17 @@
1519
from sqlalchemy import Column, Text, ForeignKey
1620
from sqlalchemy.orm import RelationshipProperty, relationship
1721

18-
from typing import TYPE_CHECKING
22+
from typing import TYPE_CHECKING, Self
1923
if TYPE_CHECKING:
2024
import uuid
2125
from datetime import datetime
2226
from markupsafe import Markup
27+
28+
from sqlalchemy.orm import Query
29+
from sqlalchemy.orm import Session
30+
2331
from onegov.org.models import PoliticalBusiness
2432
from onegov.org.models import MeetingItem
25-
from sqlalchemy.orm import Query
2633

2734

2835
class Meeting(
@@ -107,12 +114,28 @@ def title_text(self) -> str:
107114
order_by='desc(MeetingItem.number)'
108115
)
109116

117+
@hybrid_property
118+
def past(self):
119+
return self.start_datetime < utcnow() if self.start_datetime else False
120+
121+
@past.expression # type:ignore[no-redef]
122+
def past(cls):
123+
return exists.where(cls.start_datetime < func.now())
124+
110125
def __repr__(self) -> str:
111126
return f'<Meeting {self.title}, {self.start_datetime}>'
112127

113128

114129
class MeetingCollection(GenericCollection[Meeting]):
115130

131+
def __init__(
132+
self,
133+
session: Session,
134+
past: bool | None = None
135+
) -> None:
136+
super().__init__(session)
137+
self.past = past
138+
116139
@cached_property
117140
def title(self) -> str:
118141
return _('Meeting')
@@ -123,4 +146,17 @@ def model_class(self) -> type[Meeting]:
123146

124147
def query(self) -> Query[Meeting]:
125148
query = super().query()
126-
return query.order_by(self.model_class.start_datetime.desc())
149+
150+
Meeting = self.model_class # noqa: N806
151+
if self.past is not None:
152+
if self.past:
153+
query = query.filter(Meeting.start_datetime < utcnow())
154+
query = query.order_by(Meeting.start_datetime.desc())
155+
else:
156+
query = query.filter(Meeting.start_datetime >= utcnow())
157+
query = query.order_by(Meeting.start_datetime.asc())
158+
159+
return query
160+
161+
def for_filter(self, past: bool | None = None) -> Self:
162+
return self.__class__(self.session, past=past)

src/onegov/org/path.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1282,11 +1282,13 @@ def get_commission(
12821282
@OrgApp.path(
12831283
model=MeetingCollection,
12841284
path='/meetings',
1285+
converters={'past': bool}
12851286
)
12861287
def get_meetings(
12871288
app: OrgApp,
1289+
past: bool = True # show past meetings by default
12881290
) -> MeetingCollection:
1289-
return MeetingCollection(app.session())
1291+
return MeetingCollection(app.session(), past)
12901292

12911293

12921294
@OrgApp.path(

src/onegov/town6/locale/de_CH/LC_MESSAGES/onegov.town6.po

Lines changed: 44 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
msgid ""
77
msgstr ""
88
"Project-Id-Version: OneGov Cloud 1.0\n"
9-
"POT-Creation-Date: 2025-07-16 13:06+0200\n"
9+
"POT-Creation-Date: 2025-07-17 14:55+0200\n"
1010
"PO-Revision-Date: 2021-03-03 16:24+0100\n"
1111
"Last-Translator: Lukas Burkhard <lukas.burkhard@seantis.ch>\n"
1212
"Language-Team: German\n"
@@ -295,6 +295,18 @@ msgstr "Ratsinformationssystem"
295295
msgid "Meeting"
296296
msgstr "Sitzung"
297297

298+
msgid "Edit"
299+
msgstr "Bearbeiten"
300+
301+
msgid "Do you really want to delete this meeting?"
302+
msgstr "Diese Sitzung wirklich löschen?"
303+
304+
msgid "This cannot be undone."
305+
msgstr "Dies kann nicht rückgängig gemacht werden."
306+
307+
msgid "Delete meeting"
308+
msgstr "Sitzung löschen"
309+
298310
msgid "Parliamentarians"
299311
msgstr "Parlamentarierinnen und Parlamentarier"
300312

@@ -304,15 +316,9 @@ msgstr "Parlamentarier:in"
304316
msgid "Role (as a group member)"
305317
msgstr "Rolle (als Fraktionsmitglied)"
306318

307-
msgid "Edit"
308-
msgstr "Bearbeiten"
309-
310319
msgid "Do you really want to delete this parliamentarian?"
311320
msgstr "Möchten Sie diese:n Parlamentarier:in wirklich löschen?"
312321

313-
msgid "This cannot be undone."
314-
msgstr "Dies kann nicht rückgängig gemacht werden."
315-
316322
msgid "Delete parliamentarian"
317323
msgstr "Parlamentarier:in löschen"
318324

@@ -2478,27 +2484,57 @@ msgstr "Neue Kommission"
24782484
msgid "Your changes were saved"
24792485
msgstr "Ihre Änderungen wurden gespeichert"
24802486

2487+
msgid "The commission has been deleted."
2488+
msgstr "Die Kommission wurde gelöscht."
2489+
24812490
msgid "Sort"
24822491
msgstr "Sortieren"
24832492

2493+
msgid "Past Meetings"
2494+
msgstr "Vergangene"
2495+
2496+
msgid "Upcoming Meetings"
2497+
msgstr "Zukünftige"
2498+
2499+
msgid "Added a new meeting"
2500+
msgstr "Neue Sitzung hinzugefügt"
2501+
2502+
msgid "New meeting"
2503+
msgstr "Neue Sitzung"
2504+
2505+
msgid "Edit meeting"
2506+
msgstr "Sitzung bearbeiten"
2507+
2508+
msgid "The meeting has been deleted."
2509+
msgstr "Die Sitzung wurde gelöscht."
2510+
24842511
msgid "Added a new parliamentarian"
24852512
msgstr "Parlamentarier:in hinzugefügt"
24862513

24872514
msgid "New parliamentarian"
2488-
msgstr "Neue:r Parlamentarier:in"
2515+
msgstr "Neue/r Parlamentarier/in"
2516+
2517+
msgid "The parliamentarian has been deleted."
2518+
msgstr "Der Parlamentarier/in wurde gelöscht."
24892519

24902520
msgid "Added a new role"
24912521
msgstr "Neue Rolle hinzugefügt"
24922522

24932523
msgid "New role"
24942524
msgstr "Neue Rolle"
24952525

2526+
msgid "The parliamentarian role has been deleted."
2527+
msgstr "Die Rolle des Parlamentariers wurde gelöscht."
2528+
24962529
msgid "Added a new parliamentary group"
24972530
msgstr "Fraktion hinzugefügt"
24982531

24992532
msgid "New parliamentary group"
25002533
msgstr "Neue Fraktion"
25012534

2535+
msgid "The parliamentary group has been deleted."
2536+
msgstr "Die Fraktion wurde gelöscht."
2537+
25022538
msgid "Added a new political business"
25032539
msgstr "Politisches Geschäft hinzugefügt"
25042540

@@ -2713,12 +2749,6 @@ msgstr "Neue Notiz"
27132749
#~ msgid "End must be after start"
27142750
#~ msgstr "Ende muss nach dem Start liegen"
27152751

2716-
#~ msgid "Do you really want to delete this meeting?"
2717-
#~ msgstr "Diese Sitzung wirklich löschen?"
2718-
2719-
#~ msgid "Delete meeting"
2720-
#~ msgstr "Sitzung löschen"
2721-
27222752
#~ msgid "Do you really want to remove this parliamentarian?"
27232753
#~ msgstr "Diese:n Parlamentarier:in wirklich entfernen?"
27242754

0 commit comments

Comments
 (0)