Projet

Général

Profil

0004-agendas-fix-export-import-of-TimePeriodException-241.patch

Benjamin Dauvergne, 30 mai 2018 09:06

Télécharger (2,03 ko)

Voir les différences:

Subject: [PATCH 4/4] agendas: fix export/import of TimePeriodException
 (#24152)

- convert datetime to naive before serialization,
- export missing fields: external_id, recurrence_id and update_datetime.
 chrono/agendas/models.py | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)
chrono/agendas/models.py
619 619

  
620 620
    @classmethod
621 621
    def import_json(cls, data):
622
        data['start_datetime'] = make_aware(datetime.datetime.strptime(
623
            data['start_datetime'], '%Y-%m-%d %H:%M:%S'))
624
        data['end_datetime'] = make_aware(datetime.datetime.strptime(
625
            data['end_datetime'], '%Y-%m-%d %H:%M:%S'))
622
        def import_datetime(s):
623
            '''Import datetime as a naive ISO8601 serialization'''
624
            return make_aware(datetime.datetime.strptime(s, '%Y-%m-%d %H:%M:%S'))
625

  
626
        for k, v in data.items():
627
            if k.endswith('_datetime'):
628
                data[k] = import_datetime(v)
626 629
        return cls(**data)
627 630

  
628 631
    def export_json(self):
632
        def export_datetime(dt):
633
            '''Export datetime as a naive ISO8601 serialization'''
634
            return make_naive(dt).strftime('%Y-%m-%d %H:%M:%S')
635

  
629 636
        return {
630 637
            'label': self.label,
631
            'start_datetime': self.start_datetime.strftime('%Y-%m-%d %H:%M:%S'),
632
            'end_datetime': self.end_datetime.strftime('%Y-%m-%d %H:%M:%S'),
638
            'start_datetime': export_datetime(self.start_datetime),
639
            'end_datetime': export_datetime(self.end_datetime),
640
            'external_id': self.external_id,
641
            'recurrence_id': self.recurrence_id,
642
            'update_datetime': export_datetime(self.update_datetime),
633 643
        }
634
-