0001-manager-fix-exception-queryset-on-settings-page-5071.patch
chrono/agendas/models.py | ||
---|---|---|
545 | 545 |
raise ValueError('does not work with kind %r' % self.kind) |
546 | 546 | |
547 | 547 |
self.prefetched_desks = desks.prefetch_related('timeperiod_set', 'unavailability_calendars') |
548 |
unavailability_calendar_ids = UnavailabilityCalendar.objects.filter( |
|
549 |
desks__in=self.prefetched_desks |
|
550 |
).values('pk') |
|
548 | 551 |
all_desks_exceptions = TimePeriodException.objects.filter( |
549 |
Q(desk__in=self.prefetched_desks) | Q(unavailability_calendar__desks__in=self.prefetched_desks)
|
|
552 |
Q(desk__in=self.prefetched_desks) | Q(unavailability_calendar__in=unavailability_calendar_ids)
|
|
550 | 553 |
).select_related('source') |
551 | 554 |
for desk in self.prefetched_desks: |
552 | 555 |
uc_ids = [uc.pk for uc in desk.unavailability_calendars.all()] |
tests/test_manager.py | ||
---|---|---|
5158 | 5158 |
assert 'One or several bookings overlap with exceptions.' in resp.text |
5159 | 5159 | |
5160 | 5160 | |
5161 |
def test_unavailability_calendar_exception_in_desk(app, admin_user): |
|
5162 |
unavailability_calendar = UnavailabilityCalendar.objects.create(label='Calendar') |
|
5163 |
start_datetime = localtime(now()) + datetime.timedelta(days=1) |
|
5164 |
TimePeriodException.objects.create( |
|
5165 |
unavailability_calendar=unavailability_calendar, |
|
5166 |
start_datetime=start_datetime, |
|
5167 |
end_datetime=localtime(now()) + datetime.timedelta(days=2), |
|
5168 |
label='exception foo bar', |
|
5169 |
) |
|
5170 |
agenda = Agenda.objects.create(label='Agenda', kind='meetings') |
|
5171 |
desk1 = Desk.objects.create(agenda=agenda, label='desk 1') |
|
5172 |
desk2 = Desk.objects.create(agenda=agenda, label='desk 2') |
|
5173 |
desk3 = Desk.objects.create(agenda=agenda, label='desk 3') |
|
5174 |
desk1.unavailability_calendars.add(unavailability_calendar) |
|
5175 |
desk2.unavailability_calendars.add(unavailability_calendar) |
|
5176 |
desk3.unavailability_calendars.add(unavailability_calendar) |
|
5177 | ||
5178 |
app = login(app) |
|
5179 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk) |
|
5180 |
assert resp.text.count('exception foo bar') == 3 # displayed just once per desk |
|
5181 | ||
5182 | ||
5161 | 5183 |
def test_deactivate_unavailability_calendar_in_desk(app, admin_user): |
5162 | 5184 |
app = login(app) |
5163 | 5185 |
unavailability_calendar = UnavailabilityCalendar.objects.create(label='Calendar') |
5164 |
- |