summaryrefslogtreecommitdiff
path: root/archaeological_context_records
diff options
context:
space:
mode:
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
commitf3294fc59af4bdaadab8f04dcf7df89ef1c317fb (patch)
treef5d133b3456888ccd805fdf5c50b880acab3e502 /archaeological_context_records
parent0801fd75242e769ec856f4e7e94ee57b1dc945d2 (diff)
downloadIshtar-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.py26
-rw-r--r--archaeological_context_records/models.py15
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"):