diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-01-11 19:23:51 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-01-11 19:23:51 +0100 |
commit | f3294fc59af4bdaadab8f04dcf7df89ef1c317fb (patch) | |
tree | f5d133b3456888ccd805fdf5c50b880acab3e502 /archaeological_context_records | |
parent | 0801fd75242e769ec856f4e7e94ee57b1dc945d2 (diff) | |
download | Ishtar-f3294fc59af4bdaadab8f04dcf7df89ef1c317fb.tar.bz2 Ishtar-f3294fc59af4bdaadab8f04dcf7df89ef1c317fb.zip |
Use JSON for M2M history
Diffstat (limited to 'archaeological_context_records')
-rw-r--r-- | archaeological_context_records/migrations/0036_auto_20190111_1755.py | 26 | ||||
-rw-r--r-- | archaeological_context_records/models.py | 15 |
2 files changed, 33 insertions, 8 deletions
diff --git a/archaeological_context_records/migrations/0036_auto_20190111_1755.py b/archaeological_context_records/migrations/0036_auto_20190111_1755.py new file mode 100644 index 000000000..0bd4cb182 --- /dev/null +++ b/archaeological_context_records/migrations/0036_auto_20190111_1755.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2019-01-11 17:55 +from __future__ import unicode_literals + +import django.contrib.postgres.fields.jsonb +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('archaeological_context_records', '0035_migrate_main_image'), + ] + + operations = [ + migrations.AddField( + model_name='contextrecord', + name='history_m2m', + field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default={}), + ), + migrations.AddField( + model_name='historicalcontextrecord', + name='history_m2m', + field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default={}), + ), + ] diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py index 030f817d9..4f1711d31 100644 --- a/archaeological_context_records/models.py +++ b/archaeological_context_records/models.py @@ -29,7 +29,7 @@ from django.utils.translation import ugettext_lazy as _, pgettext, \ activate, pgettext_lazy, deactivate from django.utils.text import slugify -from ishtar_common.utils import cached_label_changed, HISTORY_M2M_SPLIT +from ishtar_common.utils import cached_label_changed from ishtar_common.models import Document, GeneralType, \ BaseHistorizedItem, HistoricalRecords, OwnPerms, ShortMenuItem, \ @@ -84,12 +84,11 @@ class Dating(models.Model): return unicode(self.period) return u"%s (%s-%s)" % (self.period, start_date, end_date) - SEP = u"$|£|$" HISTORY_ATTR = ["period", "start_date", "end_date", "dating_type", "quality", "precise_dating"] def history_compress(self): - values = [] + values = {} for attr in self.HISTORY_ATTR: val = getattr(self, attr) if hasattr(val, 'history_compress'): @@ -100,18 +99,18 @@ class Dating(models.Model): val = '' else: val = unicode(val) - values.append(val) - return self.SEP.join(values) + values[attr] = val + return values @classmethod def history_decompress(cls, full_value, create=False): if not full_value: return [] full_res = [] - for value in full_value.split(HISTORY_M2M_SPLIT): + for value in full_value: res = {} - for idx, val in enumerate(value.split(cls.SEP)): - key = cls.HISTORY_ATTR[idx] + for key in value: + val = value[key] if val == '': val = None elif key in ("period", "dating_type", "quality"): |