12 |
12 |
from django.utils.timezone import now, make_aware, localtime
|
13 |
13 |
|
14 |
14 |
from chrono.agendas.models import (
|
|
15 |
AbsenceReason,
|
|
16 |
AbsenceReasonGroup,
|
15 |
17 |
Agenda,
|
16 |
18 |
Booking,
|
17 |
19 |
Category,
|
... | ... | |
2561 |
2563 |
|
2562 |
2564 |
app.authorization = ('Basic', ('john.doe', 'password'))
|
2563 |
2565 |
|
|
2566 |
# reasons not defined on agenda
|
|
2567 |
resp = app.patch_json(
|
|
2568 |
'/api/booking/%s/' % booking.pk, params={'user_absence_reason': 'foobar'}, status=400
|
|
2569 |
)
|
|
2570 |
assert resp.json['err'] == 4
|
|
2571 |
assert resp.json['err_desc'] == 'invalid payload'
|
|
2572 |
|
|
2573 |
group = AbsenceReasonGroup.objects.create(label='Foo')
|
|
2574 |
reason = AbsenceReason.objects.create(group=group, label='Foo bar')
|
|
2575 |
|
|
2576 |
resp = app.patch_json(
|
|
2577 |
'/api/booking/%s/' % booking.pk, params={'user_absence_reason': 'foobar'}, status=400
|
|
2578 |
)
|
|
2579 |
assert resp.json['err'] == 4
|
|
2580 |
assert resp.json['err_desc'] == 'invalid payload'
|
|
2581 |
|
2564 |
2582 |
# set reason
|
2565 |
|
app.patch_json('/api/booking/%s/' % booking.pk, params={'user_absence_reason': 'foobar'})
|
|
2583 |
agenda.absence_reasons_group = group
|
|
2584 |
agenda.save()
|
|
2585 |
# it works with label
|
|
2586 |
app.patch_json('/api/booking/%s/' % booking.pk, params={'user_absence_reason': 'Foo bar'})
|
2566 |
2587 |
booking.refresh_from_db()
|
2567 |
2588 |
assert booking.user_was_present is True # not changed
|
2568 |
|
assert booking.user_absence_reason == 'foobar'
|
|
2589 |
assert booking.user_absence_reason == 'Foo bar'
|
2569 |
2590 |
|
2570 |
2591 |
# reset
|
2571 |
2592 |
app.patch_json('/api/booking/%s/' % booking.pk, params={'user_absence_reason': ''})
|
... | ... | |
2583 |
2604 |
# and other booking
|
2584 |
2605 |
other_booking = Booking.objects.create(event=event)
|
2585 |
2606 |
|
2586 |
|
app.patch_json('/api/booking/%s/' % booking.pk, params={'user_absence_reason': 'foobar'})
|
|
2607 |
# it works also with slug
|
|
2608 |
app.patch_json('/api/booking/%s/' % booking.pk, params={'user_absence_reason': reason.slug})
|
2587 |
2609 |
booking.refresh_from_db()
|
2588 |
2610 |
assert booking.user_was_present is True # not changed
|
2589 |
|
assert booking.user_absence_reason == 'foobar'
|
|
2611 |
assert booking.user_absence_reason == 'Foo bar'
|
2590 |
2612 |
# all secondary bookings are upadted
|
2591 |
2613 |
assert list(booking.secondary_booking_set.values_list('user_absence_reason', flat=True)) == [
|
2592 |
|
'foobar',
|
2593 |
|
'foobar',
|
|
2614 |
'Foo bar',
|
|
2615 |
'Foo bar',
|
2594 |
2616 |
]
|
2595 |
2617 |
assert list(booking.secondary_booking_set.values_list('user_was_present', flat=True)) == [
|
2596 |
2618 |
False,
|
2597 |
|
-
|