summaryrefslogtreecommitdiff
path: root/archaeological_context_records
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-07-04 16:11:34 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-07-04 22:34:41 +0200
commita9b0c688f57f676f90dd27fb65520d2e1ad92f64 (patch)
tree423c5e22b1aea6c68bbbdc6e1aaeb694fc47d039 /archaeological_context_records
parenteda4554eeca077f2357235414f6d59708d1b9944 (diff)
downloadIshtar-a9b0c688f57f676f90dd27fb65520d2e1ad92f64.tar.bz2
Ishtar-a9b0c688f57f676f90dd27fb65520d2e1ad92f64.zip
Graphs: save results, options and tests
- can generate only above and only bellow - save dot files - option for no color for current - tests
Diffstat (limited to 'archaeological_context_records')
-rw-r--r--archaeological_context_records/migrations/0048_auto_20190704_1526.py96
-rw-r--r--archaeological_context_records/tests.py97
2 files changed, 193 insertions, 0 deletions
diff --git a/archaeological_context_records/migrations/0048_auto_20190704_1526.py b/archaeological_context_records/migrations/0048_auto_20190704_1526.py
new file mode 100644
index 000000000..9e65a4b31
--- /dev/null
+++ b/archaeological_context_records/migrations/0048_auto_20190704_1526.py
@@ -0,0 +1,96 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.18 on 2019-07-04 15:26
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import ishtar_common.models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('archaeological_context_records', '0047_auto_20190628_1257'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='contextrecord',
+ name='relation_bitmap_image',
+ field=models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', null=True, upload_to=ishtar_common.models.get_image_path, verbose_name='Generated relation image (PNG)'),
+ ),
+ migrations.AddField(
+ model_name='contextrecord',
+ name='relation_bitmap_image_above',
+ field=models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', null=True, upload_to=ishtar_common.models.get_image_path, verbose_name='Generated above relation image (PNG)'),
+ ),
+ migrations.AddField(
+ model_name='contextrecord',
+ name='relation_bitmap_image_bellow',
+ field=models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', null=True, upload_to=ishtar_common.models.get_image_path, verbose_name='Generated bellow relation image (PNG)'),
+ ),
+ migrations.AddField(
+ model_name='contextrecord',
+ name='relation_dot',
+ field=models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', null=True, upload_to=ishtar_common.models.get_image_path, verbose_name='Generated relation image (DOT)'),
+ ),
+ migrations.AddField(
+ model_name='contextrecord',
+ name='relation_dot_above',
+ field=models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', null=True, upload_to=ishtar_common.models.get_image_path, verbose_name='Generated above relation image (DOT)'),
+ ),
+ migrations.AddField(
+ model_name='contextrecord',
+ name='relation_dot_bellow',
+ field=models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', null=True, upload_to=ishtar_common.models.get_image_path, verbose_name='Generated bellow relation image (DOT)'),
+ ),
+ migrations.AddField(
+ model_name='contextrecord',
+ name='relation_image_above',
+ field=models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', null=True, upload_to=ishtar_common.models.get_image_path, verbose_name='Generated above relation image (SVG)'),
+ ),
+ migrations.AddField(
+ model_name='contextrecord',
+ name='relation_image_bellow',
+ field=models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', null=True, upload_to=ishtar_common.models.get_image_path, verbose_name='Generated bellow relation image (SVG)'),
+ ),
+ migrations.AddField(
+ model_name='historicalcontextrecord',
+ name='relation_bitmap_image',
+ field=models.TextField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=100, null=True, verbose_name='Generated relation image (PNG)'),
+ ),
+ migrations.AddField(
+ model_name='historicalcontextrecord',
+ name='relation_bitmap_image_above',
+ field=models.TextField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=100, null=True, verbose_name='Generated above relation image (PNG)'),
+ ),
+ migrations.AddField(
+ model_name='historicalcontextrecord',
+ name='relation_bitmap_image_bellow',
+ field=models.TextField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=100, null=True, verbose_name='Generated bellow relation image (PNG)'),
+ ),
+ migrations.AddField(
+ model_name='historicalcontextrecord',
+ name='relation_dot',
+ field=models.TextField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=100, null=True, verbose_name='Generated relation image (DOT)'),
+ ),
+ migrations.AddField(
+ model_name='historicalcontextrecord',
+ name='relation_dot_above',
+ field=models.TextField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=100, null=True, verbose_name='Generated above relation image (DOT)'),
+ ),
+ migrations.AddField(
+ model_name='historicalcontextrecord',
+ name='relation_dot_bellow',
+ field=models.TextField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=100, null=True, verbose_name='Generated bellow relation image (DOT)'),
+ ),
+ migrations.AddField(
+ model_name='historicalcontextrecord',
+ name='relation_image_above',
+ field=models.TextField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=100, null=True, verbose_name='Generated above relation image (SVG)'),
+ ),
+ migrations.AddField(
+ model_name='historicalcontextrecord',
+ name='relation_image_bellow',
+ field=models.TextField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=100, null=True, verbose_name='Generated bellow relation image (SVG)'),
+ ),
+ ]
diff --git a/archaeological_context_records/tests.py b/archaeological_context_records/tests.py
index 79d60bf09..a0a76ba78 100644
--- a/archaeological_context_records/tests.py
+++ b/archaeological_context_records/tests.py
@@ -37,6 +37,8 @@ from archaeological_operations.tests import OperationInitTest, \
from archaeological_operations import models as models_ope
from archaeological_context_records import models
+from ishtar_common.utils import generate_relation_graph
+
from ishtar_common.tests import WizardTest, WizardTestFormData as FormData, \
create_superuser, create_user, TestCase, AutocompleteTestBase, AcItem
@@ -865,3 +867,98 @@ class AutocompleteTest(AutocompleteTestBase, TestCase):
label=base_name
)
return item, None
+
+
+class GraphGenerationTest(ContextRecordInit, TestCase):
+ fixtures = CONTEXT_RECORD_TOWNS_FIXTURES
+
+ def setUp(self):
+ self.sym_rel_type, __ = models.RelationType.objects.get_or_create(
+ symmetrical=True, txt_idx='sym', logical_relation='equal')
+ self.rel_type_bellow, __ = models.RelationType.objects.get_or_create(
+ symmetrical=False, txt_idx='bellow', logical_relation='bellow')
+ self.rel_type_above, __ = models.RelationType.objects.get_or_create(
+ symmetrical=False, txt_idx='above', logical_relation='above')
+ self.create_context_record({"label": u"CR 1"})
+ self.create_context_record({"label": u"CR 2"})
+ self.create_context_record({"label": u"CR 3"})
+ self.create_context_record({"label": u"CR 4"})
+ self.create_context_record({"label": u"CR 1B"})
+ self.create_context_record({"label": u"CR 2B"})
+ self.create_context_record({"label": u"CR 3B"})
+
+ cr_1 = self.context_records[0]
+ self.cr_2 = cr_2 = self.context_records[1]
+ cr_3 = self.context_records[2]
+ cr_4 = self.context_records[3]
+ cr_1B = self.context_records[4]
+ cr_2B = self.context_records[5]
+ cr_3B = self.context_records[6]
+
+ models.RecordRelations.objects.create(
+ left_record=cr_2, right_record=cr_2B,
+ relation_type=self.sym_rel_type)
+
+ models.RecordRelations.objects.create(
+ left_record=cr_1, right_record=cr_2,
+ relation_type=self.rel_type_bellow)
+ models.RecordRelations.objects.create(
+ left_record=cr_3, right_record=cr_2,
+ relation_type=self.rel_type_above)
+ models.RecordRelations.objects.create(
+ left_record=cr_3, right_record=cr_4,
+ relation_type=self.rel_type_bellow)
+
+ models.RecordRelations.objects.create(
+ left_record=cr_1B, right_record=cr_2B,
+ relation_type=self.rel_type_bellow)
+ models.RecordRelations.objects.create(
+ left_record=cr_3B, right_record=cr_2B,
+ relation_type=self.rel_type_above)
+
+ def test_gen_relation_full(self):
+ generate_relation_graph(self.cr_2)
+ cr_2 = models.ContextRecord.objects.get(pk=self.cr_2.pk)
+ self.assertIsNotNone(cr_2.relation_image)
+ self.assertIsNotNone(cr_2.relation_bitmap_image)
+ self.assertIsNotNone(cr_2.relation_dot)
+ content = open(cr_2.relation_dot.path).read()
+ self.assertIn('"CR 1"', content)
+ self.assertIn('"CR 1B"', content)
+ self.assertIn('"CR 2B"', content)
+ self.assertIn('"CR 2",style=filled,fillcolor="#C6C0C0"', content)
+ self.assertIn('"CR 3"', content)
+ self.assertIn('"CR 3B"', content)
+ self.assertIn('"CR 4"', content)
+
+ def test_gen_relation_above(self):
+ generate_relation_graph(self.cr_2, render_above=False)
+ cr_2 = models.ContextRecord.objects.get(pk=self.cr_2.pk)
+ self.assertIsNotNone(cr_2.relation_image_above)
+ self.assertIsNotNone(cr_2.relation_bitmap_image_above)
+ self.assertIsNotNone(cr_2.relation_dot_above)
+ content = open(cr_2.relation_dot_above.path).read()
+ self.assertIn('"CR 1"', content)
+ self.assertIn('"CR 1B"', content)
+ self.assertIn('"CR 2B"', content)
+ self.assertIn('"CR 2",style=filled,fillcolor="#C6C0C0"', content)
+ self.assertNotIn('"CR 3B"', content)
+ self.assertNotIn('"CR 3"', content)
+ self.assertNotIn('"CR 4"', content)
+
+ def test_gen_relation_bellow(self):
+ generate_relation_graph(self.cr_2, render_bellow=False)
+ cr_2 = models.ContextRecord.objects.get(pk=self.cr_2.pk)
+ self.assertIsNotNone(cr_2.relation_image_bellow)
+ self.assertIsNotNone(cr_2.relation_bitmap_image_bellow)
+ self.assertIsNotNone(cr_2.relation_dot_bellow)
+ content = open(cr_2.relation_dot_bellow.path).read()
+ self.assertNotIn('"CR 1"', content)
+ self.assertNotIn('"CR 1B"', content)
+ self.assertIn('"CR 2B"', content)
+ self.assertIn('"CR 2",style=filled,fillcolor="#C6C0C0"', content)
+ self.assertIn('"CR 3"', content)
+ self.assertIn('"CR 3B"', content)
+ self.assertIn('"CR 4"', content)
+
+