Projet

Général

Profil

0001-agendas-read_only-property-for-exception-source-5067.patch

Lauréline Guérin, 29 janvier 2021 10:47

Télécharger (2,66 ko)

Voir les différences:

Subject: [PATCH] agendas: read_only property for exception & source (#50672)

 chrono/agendas/models.py |  6 +++++-
 tests/test_agendas.py    | 34 ++++++++++++++++++++++++++++++++++
 2 files changed, 39 insertions(+), 1 deletion(-)
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
-