diff options
Diffstat (limited to 'archaeological_context_records')
-rw-r--r-- | archaeological_context_records/migrations/0048_auto_20190704_1526.py | 96 | ||||
-rw-r--r-- | archaeological_context_records/tests.py | 97 |
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) + + |