summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-04-30 15:21:25 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-06-12 08:43:58 +0200
commit962b8fd05606c8187b33e9c2bf1e88985f548802 (patch)
tree8ea4879f9ba3a6a926681b60c5fa15eb97bd941b
parent95037e04ba060fe5a9fea32fd8dc613b87c238b7 (diff)
downloadIshtar-962b8fd05606c8187b33e9c2bf1e88985f548802.tar.bz2
Ishtar-962b8fd05606c8187b33e9c2bf1e88985f548802.zip
Relation graph: add logical fields in relations
-rw-r--r--archaeological_context_records/admin.py5
-rw-r--r--archaeological_context_records/migrations/0020_auto_20180430_1318.py31
-rw-r--r--archaeological_context_records/models.py10
-rw-r--r--archaeological_operations/admin.py3
-rw-r--r--archaeological_operations/migrations/0026_auto_20180430_1318.py31
-rw-r--r--archaeological_operations/models.py11
-rw-r--r--ishtar_common/models.py10
7 files changed, 97 insertions, 4 deletions
diff --git a/archaeological_context_records/admin.py b/archaeological_context_records/admin.py
index b966628ae..c06927f37 100644
--- a/archaeological_context_records/admin.py
+++ b/archaeological_context_records/admin.py
@@ -90,12 +90,15 @@ class RecordRelationsAdmin(admin.ModelAdmin):
'right_record': 'context_record',
})
+
admin_site.register(models.RecordRelations, RecordRelationsAdmin)
class RelationTypeAdmin(GeneralTypeAdmin):
list_display = ('label', 'txt_idx', 'tiny_label', 'available',
- 'symmetrical', 'inverse_relation', 'order', 'comment')
+ 'symmetrical', 'logical_relation', 'inverse_relation',
+ 'order', 'comment')
+
admin_site.register(models.RelationType, RelationTypeAdmin)
diff --git a/archaeological_context_records/migrations/0020_auto_20180430_1318.py b/archaeological_context_records/migrations/0020_auto_20180430_1318.py
new file mode 100644
index 000000000..416c16311
--- /dev/null
+++ b/archaeological_context_records/migrations/0020_auto_20180430_1318.py
@@ -0,0 +1,31 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.10 on 2018-04-30 13:18
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import ishtar_common.models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('archaeological_context_records', '0019_auto_20180403_1120'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='contextrecord',
+ name='relation_image',
+ field=models.FileField(blank=True, null=True, upload_to=ishtar_common.models.get_image_path, verbose_name='Generated relation image (SVG)'),
+ ),
+ migrations.AddField(
+ model_name='historicalcontextrecord',
+ name='relation_image',
+ field=models.TextField(blank=True, max_length=100, null=True, verbose_name='Generated relation image (SVG)'),
+ ),
+ migrations.AddField(
+ model_name='relationtype',
+ name='logical_relation',
+ field=models.CharField(blank=True, choices=[(b'above', 'Above'), (b'bellow', 'Bellow'), (b'equal', 'Equal')], max_length=10, null=True, verbose_name='Logical relation'),
+ ),
+ ]
diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py
index 07429e606..a3dcd5761 100644
--- a/archaeological_context_records/models.py
+++ b/archaeological_context_records/models.py
@@ -32,7 +32,7 @@ from ishtar_common.utils import cached_label_changed
from ishtar_common.models import GeneralType, BaseHistorizedItem, \
HistoricalRecords, OwnPerms, ShortMenuItem, Source, GeneralRelationType,\
- GeneralRecordRelations, post_delete_record_relation, \
+ GeneralRecordRelations, post_delete_record_relation, get_image_path, \
ImageModel, post_save_cache, ValueGetter, BulkUpdatedItem, IshtarImage
from archaeological_operations.models import Operation, Period, Parcel, \
ArchaeologicalSite
@@ -326,6 +326,10 @@ class ContextRecord(BulkUpdatedItem, BaseHistorizedItem,
blank=True)
cached_label = models.TextField(_(u"Cached name"), null=True, blank=True,
db_index=True)
+ relation_image = models.FileField(
+ _(u"Generated relation image (SVG)"), null=True, blank=True,
+ upload_to=get_image_path
+ )
PARENT_SEARCH_VECTORS = ['operation']
BASE_SEARCH_VECTORS = ["cached_label", "label", "location",
"interpretation", "filling", "datings_comment",
@@ -424,6 +428,10 @@ class ContextRecord(BulkUpdatedItem, BaseHistorizedItem,
self.operation.get_reference(), self.parcel, self.label] if item])
@property
+ def relation_label(self):
+ return self.label
+
+ @property
def show_url(self):
return reverse('show-contextrecord', args=[self.pk, ''])
diff --git a/archaeological_operations/admin.py b/archaeological_operations/admin.py
index 874311978..d906b9faf 100644
--- a/archaeological_operations/admin.py
+++ b/archaeological_operations/admin.py
@@ -171,7 +171,8 @@ admin_site.register(models.RecordRelations, RecordRelationsAdmin)
class RelationTypeAdmin(GeneralTypeAdmin):
list_display = ('label', 'txt_idx', 'tiny_label', 'available',
- 'symmetrical', 'inverse_relation', 'comment')
+ 'symmetrical', 'logical_relation', 'inverse_relation',
+ 'order', 'comment')
admin_site.register(models.RelationType, RelationTypeAdmin)
diff --git a/archaeological_operations/migrations/0026_auto_20180430_1318.py b/archaeological_operations/migrations/0026_auto_20180430_1318.py
new file mode 100644
index 000000000..52218f089
--- /dev/null
+++ b/archaeological_operations/migrations/0026_auto_20180430_1318.py
@@ -0,0 +1,31 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.10 on 2018-04-30 13:18
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import ishtar_common.models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('archaeological_operations', '0025_auto_20180413_1604'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='historicaloperation',
+ name='relation_image',
+ field=models.TextField(blank=True, max_length=100, null=True, verbose_name='Generated relation image (SVG)'),
+ ),
+ migrations.AddField(
+ model_name='operation',
+ name='relation_image',
+ field=models.FileField(blank=True, null=True, upload_to=ishtar_common.models.get_image_path, verbose_name='Generated relation image (SVG)'),
+ ),
+ migrations.AddField(
+ model_name='relationtype',
+ name='logical_relation',
+ field=models.CharField(blank=True, choices=[(b'above', 'Above'), (b'bellow', 'Bellow'), (b'equal', 'Equal')], max_length=10, null=True, verbose_name='Logical relation'),
+ ),
+ ]
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py
index b52477995..87ec89870 100644
--- a/archaeological_operations/models.py
+++ b/archaeological_operations/models.py
@@ -38,7 +38,7 @@ from ishtar_common.models import GeneralType, BaseHistorizedItem, \
SourceType, Person, Organization, Town, Dashboard, IshtarUser, ValueGetter,\
DocumentTemplate, ShortMenuItem, DashboardFormItem, GeneralRelationType,\
GeneralRecordRelations, post_delete_record_relation, OperationType, \
- ImageModel, post_save_cache, PersonType, IshtarImage
+ ImageModel, post_save_cache, PersonType, IshtarImage, get_image_path
class RemainType(GeneralType):
@@ -477,6 +477,11 @@ class Operation(ClosedItem, BaseHistorizedItem, ImageModel, OwnPerms,
finds_received = models.NullBooleanField(
_(u"Finds received"), blank=True, null=True)
+ relation_image = models.FileField(
+ _(u"Generated relation image (SVG)"), null=True, blank=True,
+ upload_to=get_image_path
+ )
+
# judiciary
seizure_name = models.TextField(_(u"Seizure name"), blank=True, null=True)
official_report_number = models.TextField(_(u"Official report number"),
@@ -541,6 +546,10 @@ class Operation(ClosedItem, BaseHistorizedItem, ImageModel, OwnPerms,
return unicode(self)
@property
+ def relation_label(self):
+ return self.short_label
+
+ @property
def name(self):
return self.common_name
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index ccbe486e0..cbf1431a7 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -1404,6 +1404,13 @@ class BaseHistorizedItem(FullSearch, Imported, JsonData, FixAssociated):
return True
+LOGICAL_TYPES = (
+ ('above', _(u"Above")),
+ ('bellow', _(u"Bellow")),
+ ('equal', _(u"Equal"))
+)
+
+
class GeneralRelationType(GeneralType):
order = models.IntegerField(_(u"Order"), default=1)
symmetrical = models.BooleanField(_(u"Symmetrical"))
@@ -1412,6 +1419,9 @@ class GeneralRelationType(GeneralType):
inverse_relation = models.ForeignKey(
'self', verbose_name=_(u"Inverse relation"), blank=True,
null=True)
+ logical_relation = models.CharField(
+ verbose_name=_(u"Logical relation"), max_length=10,
+ choices=LOGICAL_TYPES, blank=True, null=True)
class Meta:
abstract = True