Skip to content

Commit 254c81f

Browse files
committed
Org: Allow handlers to control ticket reopen decisions.
TYPE: Bugfix
1 parent a9c22bc commit 254c81f

7 files changed

Lines changed: 22 additions & 9 deletions

File tree

src/onegov/org/layout.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1936,7 +1936,7 @@ def editbar_links(self) -> list[Link | LinkGroup] | None:
19361936
)
19371937

19381938
elif self.model.state == 'closed':
1939-
if self.model.handler_code != 'TRP':
1939+
if self.model.handler.reopenable:
19401940
links.append(
19411941
Link(
19421942
text=_('Reopen ticket'),

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7764,8 +7764,8 @@ msgstr ""
77647764
msgid "You have closed ticket ${number}"
77657765
msgstr "Sie haben das Ticket ${number} abgeschlossen"
77667766

7767-
msgid "Time report tickets cannot be reopened"
7768-
msgstr "Zeiterfassungs-Tickets können nicht wieder geöffnet werden"
7767+
msgid "This ticket cannot be reopened"
7768+
msgstr "Dieses Ticket kann nicht wieder geöffnet werden"
77697769

77707770
msgid "The ticket cannot be re-opened because it's not closed"
77717771
msgstr ""

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7776,8 +7776,8 @@ msgstr "Le ticket ne peut pas être clôturé car il est en attente"
77767776
msgid "You have closed ticket ${number}"
77777777
msgstr "Vous avez clôturé ${number} ticket(s)"
77787778

7779-
msgid "Time report tickets cannot be reopened"
7780-
msgstr "Les tickets de rapport de temps ne peuvent pas être réouverts"
7779+
msgid "This ticket cannot be reopened"
7780+
msgstr "Ce ticket ne peut pas être réouvert"
77817781

77827782
msgid "The ticket cannot be re-opened because it's not closed"
77837783
msgstr "Le ticket ne peut pas être réouvert car il n'est pas clôturé"

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7740,8 +7740,8 @@ msgstr "Il biglietto non può essere chiuso perché non è in sospeso"
77407740
msgid "You have closed ticket ${number}"
77417741
msgstr "Hai chiuso il biglietto ${number}"
77427742

7743-
msgid "Time report tickets cannot be reopened"
7744-
msgstr "I ticket dei rapporti di tempo non possono essere riaperti"
7743+
msgid "This ticket cannot be reopened"
7744+
msgstr "Questo ticket non può essere riaperto"
77457745

77467746
msgid "The ticket cannot be re-opened because it's not closed"
77477747
msgstr "Il biglietto non può essere riaperto perché non è chiuso"

src/onegov/org/views/ticket.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -746,8 +746,8 @@ def reopen_ticket(self: Ticket, request: OrgRequest) -> BaseResponse:
746746
user = request.current_user
747747
assert user is not None
748748

749-
if self.handler_code == 'TRP':
750-
request.alert(_('Time report tickets cannot be reopened'))
749+
if not self.handler.reopenable:
750+
request.alert(_('This ticket cannot be reopened'))
751751
return morepath.redirect(request.link(self))
752752

753753
was_closed = self.state == 'closed'

src/onegov/ticket/handler.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,15 @@ def undecided(self) -> bool:
250250

251251
return False
252252

253+
@property
254+
def reopenable(self) -> bool:
255+
"""Whether or not this ticket can be reopened once closed.
256+
257+
By default, all tickets can be reopened. Handlers may override
258+
this to prevent reopening for specific ticket types.
259+
"""
260+
return True
261+
253262
@property
254263
def reply_to(self) -> str | None:
255264
""" An optional email address which will be used as a Reply-To

src/onegov/translator_directory/models/ticket.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,10 @@ class TimeReportHandler(Handler):
197197
handler_title = _('Time Report')
198198
code_title = _('Time Reports')
199199

200+
@property
201+
def reopenable(self) -> bool:
202+
return False
203+
200204
@cached_property
201205
def translator(self) -> Translator | None:
202206
return (

0 commit comments

Comments
 (0)