0001-agendas-read_only-property-for-exception-source-5067.patch
chrono/agendas/models.py | ||
---|---|---|
1673 | 1673 | |
1674 | 1674 |
@property |
1675 | 1675 |
def read_only(self): |
1676 |
return self.source and self.source.settings_slug or self.unavailability_calendar_id |
|
1676 |
if self.source_id: |
|
1677 |
return True |
|
1678 |
if self.unavailability_calendar_id: |
|
1679 |
return True |
|
1680 |
return False |
|
1677 | 1681 | |
1678 | 1682 |
class Meta: |
1679 | 1683 |
ordering = ['start_datetime'] |
tests/test_agendas.py | ||
---|---|---|
872 | 872 |
assert common_timeperiod.end_time == datetime.time(18, 0) |
873 | 873 | |
874 | 874 | |
875 |
def test_exception_read_only(): |
|
876 |
agenda = Agenda.objects.create(label='Agenda', kind='meetings') |
|
877 |
desk = Desk.objects.create(agenda=agenda, label='Desk') |
|
878 |
unavailability_calendar = UnavailabilityCalendar.objects.create(label='Calendar') |
|
879 | ||
880 |
source1 = TimePeriodExceptionSource.objects.create(desk=desk, ics_url='http://example.com/sample.ics') |
|
881 |
source2 = TimePeriodExceptionSource.objects.create( |
|
882 |
desk=desk, |
|
883 |
ics_filename='sample.ics', |
|
884 |
ics_file=ContentFile(ICS_SAMPLE_WITH_DURATION, name='sample.ics'), |
|
885 |
) |
|
886 |
source3 = TimePeriodExceptionSource.objects.create( |
|
887 |
desk=desk, settings_slug='slug', settings_label='Foo Bar', enabled=True |
|
888 |
) |
|
889 | ||
890 |
exception = TimePeriodException.objects.create( |
|
891 |
desk=desk, |
|
892 |
start_datetime=now() - datetime.timedelta(days=2), |
|
893 |
end_datetime=now() - datetime.timedelta(days=1), |
|
894 |
) |
|
895 |
assert exception.read_only is False |
|
896 | ||
897 |
for source in [source1, source2, source3]: |
|
898 |
exception.source = source |
|
899 |
exception.save() |
|
900 |
assert exception.read_only is True |
|
901 | ||
902 |
exception.source = None |
|
903 |
exception.desk = None |
|
904 |
exception.unavailability_calendar = unavailability_calendar |
|
905 |
exception.save() |
|
906 |
assert exception.read_only is True |
|
907 | ||
908 | ||
875 | 909 |
def test_desk_exceptions_within_two_weeks(): |
876 | 910 |
def set_prefetched_exceptions(desk): |
877 | 911 |
desk.prefetched_exceptions = TimePeriodException.objects.filter( |
878 |
- |