Skip to content

Commit 574e484

Browse files
Feriennet: Fix problem with selecting user for manual booking
- The dropdown for the users now pre-selects the correct user again. - The users are now displayed correctly again and can be selected TYPE: Bugfix LINK: PRO-1481
1 parent 42afc30 commit 574e484

File tree

3 files changed

+50
-8
lines changed

3 files changed

+50
-8
lines changed

src/onegov/feriennet/forms/billing.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
from typing import TYPE_CHECKING
2020
if TYPE_CHECKING:
2121
from decimal import Decimal
22-
from sqlalchemy.orm import Query
2322

2423

2524
class BillingForm(Form):
@@ -108,14 +107,14 @@ def text(self) -> str | None:
108107
return self.booking_text.data
109108

110109
@property
111-
def available_usernames(self) -> Query[tuple[str, str]]:
112-
return (
113-
self.usercollection.query()
110+
def available_usernames(self) -> list[tuple[str, str]]:
111+
query = (self.usercollection.query()
114112
.with_entities(User.username, User.realname)
115113
.filter(func.trim(func.coalesce(User.realname, '')) != '')
116114
.filter(User.active == True)
117-
.order_by(func.unaccent(func.lower(User.realname)))
118-
)
115+
.order_by(func.unaccent(func.lower(User.realname))))
116+
117+
return [(value, title) for value, title in query]
119118

120119
@property
121120
def users(self) -> tuple[str, ...]:

tests/onegov/activity/conftest.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -255,8 +255,9 @@ def add_user(
255255
user.data['email'] = email if email else ''
256256

257257
if complete_profile:
258-
user.realname = (
259-
f'{self.faker.first_name()}\u00A0{self.faker.last_name()}')
258+
if user.realname is None:
259+
user.realname = (f'{self.faker.first_name()}'
260+
f'\u00A0{self.faker.last_name()}')
260261
user.data = user.data or {}
261262
user.data['salutation'] = self.faker.random_element(('mr', 'ms'))
262263
user.data['address'] = self.faker.address()

tests/onegov/feriennet/test_views.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3789,3 +3789,45 @@ def test_admin_user_no_delete_button(
37893789

37903790
# Check that delete button is not present for admin users
37913791
assert page.pyquery('a.delete-link').length == 0
3792+
3793+
3794+
def test_add_manual_booking(client: Client, scenario: Scenario) -> None:
3795+
scenario.add_period(title="2019", confirmed=True, finalized=False)
3796+
scenario.add_activity(title="Fishing", state='accepted')
3797+
scenario.add_occasion(cost=100)
3798+
scenario.add_user(username='tom@example.org', role='member',
3799+
realname="Tom",
3800+
phone="000 000 00 11", email="tom@example.org")
3801+
scenario.add_attendee(name="Dustin")
3802+
scenario.add_booking(state='accepted', cost=100)
3803+
scenario.commit()
3804+
3805+
client.login_admin()
3806+
3807+
settings = client.get('/feriennet-settings')
3808+
settings.form['bank_account'] = 'CH6309000000250097798'
3809+
settings.form['bank_beneficiary'] = 'Initech'
3810+
settings.form.submit()
3811+
3812+
page = client.get('/billing')
3813+
page.form['confirm'] = 'yes'
3814+
page.form['sure'] = 'yes'
3815+
page.form.submit()
3816+
3817+
page = client.get('/billing')
3818+
3819+
form = page.click('Manuelle Buchung hinzufügen')
3820+
form.form['username'] = 'tom@example.org'
3821+
form.form['booking_text'] = 'Discount for being nice to the admin'
3822+
form.form['discount'] = '20'
3823+
form.form.submit()
3824+
3825+
page_url = (
3826+
client.get('/billing')
3827+
.pyquery('.item-header + div')
3828+
.attr('ic-get-from')
3829+
)
3830+
3831+
page = client.get(page_url)
3832+
assert 'Tom' in page
3833+
assert 'Discount for being nice to the admin' in page

0 commit comments

Comments
 (0)