Skip to content

Commit 3b7d41a

Browse files
Pas: Add bulk operations for shortest meeting.
TYPE: Feature LINK: OGC-2941
1 parent dea56b3 commit 3b7d41a

File tree

4 files changed

+68
-30
lines changed

4 files changed

+68
-30
lines changed

src/onegov/pas/forms/attendence.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -419,15 +419,28 @@ def on_request(self) -> None:
419419
]
420420

421421

422+
BULK_MEETING_TYPES: dict[str, str] = {
423+
'commission': _('Commission meeting'),
424+
'shortest': _('Shortest meeting'),
425+
}
426+
427+
422428
class AttendenceAddCommissionBulkForm(Form, SettlementRunBoundMixin):
423-
""" Kind of like AttendenceAddPlenaryForm but for commissions. """
429+
"""Bulk form for commission-based meetings (commission or shortest)."""
424430

425431
date = DateField(
426432
label=_('Date'),
427433
validators=[InputRequired()],
428434
default=datetime.date.today
429435
)
430436

437+
type = RadioField(
438+
label=_('Type'),
439+
choices=list(BULK_MEETING_TYPES.items()),
440+
validators=[InputRequired()],
441+
default='commission',
442+
)
443+
431444
duration = FloatField(
432445
label=_('Duration in hours'),
433446
validators=[InputRequired()],
@@ -452,7 +465,6 @@ class AttendenceAddCommissionBulkForm(Form, SettlementRunBoundMixin):
452465
def get_useful_data(self) -> dict[str, Any]: # type:ignore[override]
453466
result = super().get_useful_data()
454467
result['duration'] = int(60 * (result.get('duration') or 0))
455-
result['type'] = 'commission'
456468
return result
457469

458470
def on_request(self) -> None:

src/onegov/pas/layouts/attendence.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def editbar_links(self) -> list[LinkGroup] | None:
4545
attrs={'class': 'new-attendence'},
4646
),
4747
Link(
48-
text=_('Commission meeting (bulk)'),
48+
text=_('Commission session (bulk)'),
4949
url=self.request.link(
5050
self.model, 'new-commission-bulk'
5151
),
@@ -68,7 +68,7 @@ def editbar_links(self) -> list[LinkGroup] | None:
6868
attrs={'class': 'new-attendence'}
6969
),
7070
Link(
71-
text=_('Commission meeting (bulk)'),
71+
text=_('Commission session (bulk)'),
7272
url=self.request.link(
7373
self.model, 'new-commission-bulk'
7474
),

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

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
msgid ""
22
msgstr ""
33
"Project-Id-Version: OneGov Cloud 1.0\n"
4-
"POT-Creation-Date: 2026-01-29 10:45+0100\n"
4+
"POT-Creation-Date: 2026-02-19 00:46+0100\n"
55
"PO-Revision-Date: 2021-03-03 16:24+0100\n"
66
"Language-Team: German\n"
77
"Language: de_CH\n"
@@ -102,6 +102,12 @@ msgstr ""
102102
msgid "Parliamentarian is not in this commission."
103103
msgstr "Parlamentarier:in ist nicht in dieser Kommission."
104104

105+
msgid "Commission meeting"
106+
msgstr "Kommissionsitzung"
107+
108+
msgid "Shortest meeting"
109+
msgstr "Kürzestsitzung"
110+
105111
msgid "Bulk edit group"
106112
msgstr "Massenbuchungsgruppe"
107113

@@ -289,9 +295,6 @@ msgstr "Halbtag"
289295
msgid "Member"
290296
msgstr "Mitglied"
291297

292-
msgid "Commission meeting"
293-
msgstr "Kommissionsitzung"
294-
295298
msgid "first 2h"
296299
msgstr "bis 2h"
297300

@@ -325,9 +328,6 @@ msgstr "Vize-Präsident:in"
325328
msgid "Vice president: File study"
326329
msgstr "Vize-Präsident:in: Aktenstudium"
327330

328-
msgid "Shortest meeting"
329-
msgstr "Kürzestsitzung"
330-
331331
#, python-format
332332
msgid "Rate set for ${year} alredy exists"
333333
msgstr "Sätze für ${year} bereits erfasst"
@@ -361,7 +361,7 @@ msgstr "Sitzung"
361361
msgid "Plenary session (bulk)"
362362
msgstr "Massenbuchung Plenarsitzung"
363363

364-
msgid "Commission meeting (bulk)"
364+
msgid "Commission session (bulk)"
365365
msgstr "Massenbuchung Kommissionssitzung"
366366

367367
msgid "Edit"
@@ -771,26 +771,30 @@ msgid "New attendence"
771771
msgstr "Neue Anwesenheit"
772772

773773
msgid "Cannot book attendance - abschluss already set for this settlement run"
774-
msgstr "Anwesenheit kann nicht gebucht werden - Abschluss bereits gesetzt für diesen Abrechnungslauf"
774+
msgstr ""
775+
"Anwesenheit kann nicht gebucht werden - Abschluss bereits gesetzt für diesen "
776+
"Abrechnungslauf"
775777

776778
msgid "Added a new attendence"
777779
msgstr "Neue Anwesenheit hinzugefügt"
778780

779781
msgid "New"
780782
msgstr "Neu"
781783

782-
msgid "New commission session"
783-
msgstr "Neue Kommissionssitzung"
784+
msgid "New commission session (bulk)"
785+
msgstr "Neue Massenbuchung Kommissionssitzung"
784786

785787
#, python-format
786788
msgid "Cannot book attendance - abschluss already set for: ${names}"
787-
msgstr "Anwesenheit kann nicht gebucht werden - Abschluss bereits gesetzt für: ${names}"
789+
msgstr ""
790+
"Anwesenheit kann nicht gebucht werden - Abschluss bereits gesetzt für: "
791+
"${names}"
788792

789793
msgid "No parliamentarians selected"
790794
msgstr "Keine Parlamentarier:innen ausgewählt"
791795

792-
msgid "Added commission session"
793-
msgstr "Kommissionssitzung hinzugefügt"
796+
msgid "Added session"
797+
msgstr "Sitzung hinzugefügt"
794798

795799
msgid "You do not have permission to edit plenary sessions."
796800
msgstr "Sie haben keine Berechtigung, Plenarsitzungen zu bearbeiten."
@@ -810,12 +814,15 @@ msgstr "Möchten Sie diese Massenbuchung wirklich löschen?"
810814
msgid "Delete Attendencess"
811815
msgstr "Anwesenheiten löschen"
812816

813-
msgid "Edit commission session"
814-
msgstr "Kommissionssitzung bearbeiten"
817+
#, python-format
818+
msgid "Edit ${type}"
819+
msgstr "${type} bearbeiten"
815820

816821
#, python-format
817822
msgid "Cannot edit attendance - abschluss already set for: ${names}"
818-
msgstr "Anwesenheit kann nicht bearbeitet werden - Abschluss bereits gesetzt für: ${names}"
823+
msgstr ""
824+
"Anwesenheit kann nicht bearbeitet werden - Abschluss bereits gesetzt für: "
825+
"${names}"
819826

820827
msgid "You do not have permission to add plenary sessions."
821828
msgstr "Sie haben keine Berechtigung, Plenarsitzungen hinzuzufügen."
@@ -827,7 +834,9 @@ msgid "Added plenary session"
827834
msgstr "Plenarsitzung hinzugefügt"
828835

829836
msgid "Cannot edit attendance - abschluss already set for this settlement run"
830-
msgstr "Anwesenheit kann nicht bearbeitet werden - Abschluss bereits gesetzt für diesen Abrechnungslauf"
837+
msgstr ""
838+
"Anwesenheit kann nicht bearbeitet werden - Abschluss bereits gesetzt für "
839+
"diesen Abrechnungslauf"
831840

832841
msgid "Your changes were saved"
833842
msgstr "Änderungen gespeichert"
@@ -974,3 +983,15 @@ msgid "Cannot delete closed settlement run. Please reopen it first."
974983
msgstr ""
975984
"Geschlossener Abrechnungslauf kann nicht gelöscht werden. Bitte zuerst "
976985
"öffnen."
986+
987+
#~ msgid "Commission meeting (bulk)"
988+
#~ msgstr "Massenbuchung Kommissionssitzung"
989+
990+
#~ msgid "New commission session"
991+
#~ msgstr "Neue Kommissionssitzung"
992+
993+
#~ msgid "Added commission session"
994+
#~ msgstr "Kommissionssitzung hinzugefügt"
995+
996+
#~ msgid "Edit commission session"
997+
#~ msgstr "Kommissionssitzung bearbeiten"

src/onegov/pas/views/attendence.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,8 @@ def add_bulk_attendence(
170170
) -> RenderData | Response:
171171
request.include('custom')
172172

173+
title = _('New commission session (bulk)')
174+
173175
if form.submitted(request):
174176
if form.date.data:
175177
if error := validate_attendance_date(
@@ -178,7 +180,7 @@ def add_bulk_attendence(
178180
request.alert(error)
179181
return {
180182
'layout': AttendenceCollectionLayout(self, request),
181-
'title': _('New commission session'),
183+
'title': title,
182184
'form': form,
183185
'form_width': 'large',
184186
}
@@ -209,7 +211,7 @@ def add_bulk_attendence(
209211
)
210212
return {
211213
'layout': AttendenceCollectionLayout(self, request),
212-
'title': _('New commission session'),
214+
'title': title,
213215
'form': form,
214216
'form_width': 'large',
215217
}
@@ -230,19 +232,19 @@ def add_bulk_attendence(
230232
request.warning(_('No parliamentarians selected'))
231233
return request.redirect(request.class_link(AttendenceCollection))
232234

233-
request.success(_('Added commission session'))
235+
request.success(_('Added session'))
234236

235237
return request.redirect(request.link(self))
236238

237239
layout = AttendenceCollectionLayout(self, request)
238-
layout.breadcrumbs.append(Link(_('New commission session'), '#'))
240+
layout.breadcrumbs.append(Link(title, '#'))
239241
layout.edit_mode = True
240242

241243
return {
242244
'layout': layout,
243-
'title': _('New commission session'),
245+
'title': title,
244246
'form': form,
245-
'form_width': 'large'
247+
'form_width': 'large',
246248
}
247249

248250

@@ -378,6 +380,9 @@ def edit_commission_bulk_attendence(
378380
) -> RenderData | Response:
379381
request.include('custom')
380382

383+
type_label = request.translate(self.type_label)
384+
title = _('Edit ${type}', mapping={'type': type_label})
385+
381386
if form.submitted(request):
382387
if form.date.data:
383388
if error := validate_attendance_date(
@@ -386,7 +391,7 @@ def edit_commission_bulk_attendence(
386391
request.alert(error)
387392
return {
388393
'layout': AttendenceCollectionLayout(self, request),
389-
'title': _('Edit commission session'),
394+
'title': title,
390395
'form': form,
391396
'form_width': 'large'
392397
}
@@ -498,7 +503,7 @@ def edit_commission_bulk_attendence(
498503

499504
return {
500505
'layout': layout,
501-
'title': _('Edit commission session'),
506+
'title': title,
502507
'form': form,
503508
'form_width': 'large'
504509
}

0 commit comments

Comments
 (0)