agendas: fix export/import of TimePeriodException (#24152)

- convert datetime to naive before serialization,
- export missing fields: external_id, recurrence_id and update_datetime.
This commit is contained in:
Benjamin Dauvergne 2018-05-30 08:49:34 +02:00
parent e0d8342aa1
commit 642cda9b49
1 changed files with 16 additions and 6 deletions

View File

@ -622,15 +622,25 @@ class TimePeriodException(models.Model):
@classmethod
def import_json(cls, data):
data['start_datetime'] = make_aware(datetime.datetime.strptime(
data['start_datetime'], '%Y-%m-%d %H:%M:%S'))
data['end_datetime'] = make_aware(datetime.datetime.strptime(
data['end_datetime'], '%Y-%m-%d %H:%M:%S'))
def import_datetime(s):
'''Import datetime as a naive ISO8601 serialization'''
return make_aware(datetime.datetime.strptime(s, '%Y-%m-%d %H:%M:%S'))
for k, v in data.items():
if k.endswith('_datetime'):
data[k] = import_datetime(v)
return cls(**data)
def export_json(self):
def export_datetime(dt):
'''Export datetime as a naive ISO8601 serialization'''
return make_naive(dt).strftime('%Y-%m-%d %H:%M:%S')
return {
'label': self.label,
'start_datetime': self.start_datetime.strftime('%Y-%m-%d %H:%M:%S'),
'end_datetime': self.end_datetime.strftime('%Y-%m-%d %H:%M:%S'),
'start_datetime': export_datetime(self.start_datetime),
'end_datetime': export_datetime(self.end_datetime),
'external_id': self.external_id,
'recurrence_id': self.recurrence_id,
'update_datetime': export_datetime(self.update_datetime),
}