Projet

Général

Profil

0001-manager-allow-timeperiod-exceptions-with-the-same-su.patch

Serghei Mihai (congés, retour 15/05), 31 août 2018 12:02

Télécharger (4,08 ko)

Voir les différences:

Subject: [PATCH] manager: allow timeperiod exceptions with the same summary
 (#25962)

 chrono/agendas/models.py |  6 +++---
 tests/test_agendas.py    |  6 +++---
 tests/test_manager.py    | 10 ++++++++--
 3 files changed, 14 insertions(+), 8 deletions(-)
chrono/agendas/models.py
531 531
                if keep_synced_by_uid:
532 532
                    kwargs['external_id'] = vevent.contents['uid'][0].value
533 533
                else:
534
                    kwargs['label'] = summary
534
                    event['label'] = summary
535 535

  
536 536
                if not vevent.rruleset:
537 537
                    # classical event
538
                    obj, created = TimePeriodException.objects.update_or_create(defaults=event, **kwargs)
538
                    obj, created = TimePeriodException.objects.update_or_create(defaults=event, label='', **kwargs)
539 539
                    if created:
540 540
                        total_created += 1
541 541
                else:
......
557 557
                        if end_dt < update_datetime:
558 558
                            TimePeriodException.objects.filter(**kwargs).update(**event)
559 559
                        else:
560
                            obj, created = TimePeriodException.objects.update_or_create(defaults=event, **kwargs)
560
                            obj, created = TimePeriodException.objects.update_or_create(defaults=event, label=summary, **kwargs)
561 561
                            if created:
562 562
                                total_created += 1
563 563
                    # delete unseen occurrences
tests/test_agendas.py
243 243
    assert TimePeriodException.objects.filter(desk=desk).count() == 3
244 244
    assert set(TimePeriodException.objects.values_list('start_datetime', flat=True)) == set([
245 245
        make_aware(datetime.datetime(2018, 1, 1)), make_aware(datetime.datetime(2019, 1, 1))])
246
    assert desk.create_timeperiod_exceptions_from_ics(ICS_SAMPLE_WITH_RECURRENT_EVENT) == 0
246
    assert desk.create_timeperiod_exceptions_from_ics(ICS_SAMPLE_WITH_RECURRENT_EVENT) == 1
247 247
    # verify occurences are cleaned when count changed
248
    assert desk.create_timeperiod_exceptions_from_ics(ICS_SAMPLE_WITH_RECURRENT_EVENT_2) == 0
249
    assert TimePeriodException.objects.filter(desk=desk).count() == 2
248
    assert desk.create_timeperiod_exceptions_from_ics(ICS_SAMPLE_WITH_RECURRENT_EVENT_2) == 1
249
    assert TimePeriodException.objects.filter(desk=desk).count() == 4
250 250
    assert set(TimePeriodException.objects.values_list('start_datetime', flat=True)) == set([
251 251
        make_aware(datetime.datetime(2018, 1, 1)), make_aware(datetime.datetime(2018, 1, 2))])
252 252

  
tests/test_manager.py
987 987
DTEND:20180101
988 988
SUMMARY:New Year's Eve
989 989
END:VEVENT
990
BEGIN:VEVENT
991
DTSTART:20190101
992
DTEND:20190101
993
SUMMARY:New Year's Eve
994
END:VEVENT
990 995
END:VCALENDAR"""
991 996
    resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
992 997
    resp = resp.click('Settings')
993 998
    resp = resp.click('upload')
994 999
    resp.form['ics_file'] = Upload('exceptions.ics', ics_with_exceptions, 'text/calendar')
995 1000
    resp = resp.form.submit(status=302)
996
    assert TimePeriodException.objects.filter(desk=desk).count() == 1
1001
    assert TimePeriodException.objects.filter(desk=desk).count() == 2
1002
    assert TimePeriodException.objects.filter(desk=desk, label="New Year's Eve").count() == 2
997 1003
    resp = resp.follow()
998
    assert 'An exception has been imported.' in resp.text
1004
    assert '2 exceptions have been imported.' in resp.text
999 1005

  
1000 1006

  
1001 1007
@pytest.mark.freeze_time('2017-12-01')
1002
-