Skip to content

Commit

Permalink
Org: Fix adjusting registration window (end date) after first attende…
Browse files Browse the repository at this point in the history
…e confirmed

TYPE: Bugfix
LINK: ogc-1557
  • Loading branch information
Tschuppi81 authored Apr 12, 2024
1 parent 0eb097b commit e8e9a1d
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 3 deletions.
7 changes: 4 additions & 3 deletions src/onegov/org/forms/form_registration.py
Original file line number Diff line number Diff line change
Expand Up @@ -204,8 +204,9 @@ def validate_limit(self, field: IntegerField) -> None:
if not self.limit_attendees.data:
return

assert self.limit.data is not None
if self.limit.data < self.claimed_spots:
assert self.limit.data is not None # but may be 0 / limit inactive

if 0 < self.limit.data < self.claimed_spots:
raise ValidationError(_(
"The limit cannot be lower than the already confirmed "
"number of attendees (${claimed_spots})",
Expand All @@ -220,7 +221,7 @@ def validate_limit(self, field: IntegerField) -> None:
if self.waitinglist.data == 'yes':
return

if self.limit.data < (self.requested_spots + self.claimed_spots):
if 0 < self.limit.data < (self.requested_spots + self.claimed_spots):
raise ValidationError(_(
"The limit cannot be lower than the already confirmed "
"number attendees (${claimed_spots}) and the number of "
Expand Down
49 changes: 49 additions & 0 deletions tests/onegov/org/test_views_forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -797,6 +797,55 @@ def test_registration_change_limit_after_submissions(client):
assert "Ihre Änderungen wurden gespeichert" in page


def test_registration_window_adjust_end_date(client):
collection = FormCollection(client.app.session())

form = collection.definitions.add(
'Meet Guido van Rossum', "E-Mail *= @@@", 'custom')
form.add_registration_window(
start=date(2024, 4, 1),
end=date(2024, 4, 2),
limit=None,
overflow=False
)
transaction.commit()

client.login_editor()

# change end date before first submission confirmed
with freeze_time('2024-04-01', tick=True):
# submit form prior adjusting end date
page = client.get('/form/meet-guido-van-rossum')
page.form['e_mail'] = '[email protected]'
page.form.submit().follow().form.submit().follow()

# adjust end date
page = (client.get('/form/meet-guido-van-rossum').
click('01.04.2024 - 02.04.2024'))
page = page.click('Bearbeiten')
page.form['end'] = '2024-04-03'
result = page.form.submit().follow()
assert 'Anmeldezeitraum bearbeiten' not in result
assert 'Ihre Änderungen wurden gespeichert' in result

# confirm first submission and change registration end date
with freeze_time('2024-04-01', tick=True):
# accept ticket, confirm
accept_submission = (client.get('/tickets/ALL/open').
click("Annehmen").follow())
accept_submission.click("Anmeldung bestätigen").follow()
assert accept_submission.status_code == 200

# change end date
page = (client.get('/form/meet-guido-van-rossum').
click('01.04.2024 - 03.04.2024'))
page = page.click('Bearbeiten')
page.form['end'] = '2024-04-04'
result = page.form.submit().follow()
assert 'Anmeldezeitraum bearbeiten' not in result
assert 'Ihre Änderungen wurden gespeichert' in result


def test_registration_ticket_workflow(client):
collection = FormCollection(client.app.session())
users = UserCollection(client.app.session())
Expand Down

0 comments on commit e8e9a1d

Please sign in to comment.