diff options
Diffstat (limited to 'archaeological_operations/tests.py')
-rw-r--r-- | archaeological_operations/tests.py | 54 |
1 files changed, 42 insertions, 12 deletions
diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py index 0d17acb8b..60078b7e2 100644 --- a/archaeological_operations/tests.py +++ b/archaeological_operations/tests.py @@ -25,6 +25,7 @@ import zipfile from django.conf import settings from django.core.files.uploadedfile import SimpleUploadedFile from django.core.urlresolvers import reverse +from django.db.models import Q from django.test.client import Client from django.contrib.auth.models import User @@ -125,6 +126,11 @@ class ImportTest(object): def init_ope_targetkey(self, imp): # doing manually connections + q = Q(importer=imp) | Q(user=imp.user) + if imp.associated_group: + q |= Q(group=imp.associated_group) + for ik in ItemKey.objects.filter(q).all(): + ik.delete() # target for this import target = TargetKey.objects.filter( @@ -136,39 +142,56 @@ class ImportTest(object): target.save() # target for all users - target2 = TargetKey.objects.get(key='gallo-romain') + tgs = list(TargetKey.objects.filter(key='gallo-romain').all()) + for tg in tgs[1:]: + tg.delete() + target2 = tgs[0] gallo = models.Period.objects.get(txt_idx='gallo-roman') target2.value = gallo.pk target2.is_set = True target2.associated_import = None + target2.associated_group = None + target2.associated_user = None target2.save() # target for this user - target3 = TargetKey.objects.get(key='age-du-fer') + tgs = list(TargetKey.objects.filter(key='age-du-fer').all()) + for tg in tgs[1:]: + tg.delete() + target3 = tgs[0] iron = models.Period.objects.get(txt_idx='iron_age') target3.value = iron.pk target3.is_set = True target3.associated_import = None target3.associated_user = self.ishtar_user + target3.associated_group = None target3.save() # target for another user username, password, user = create_user() another_user = IshtarUser.objects.get(pk=user.pk) - target4 = TargetKey.objects.get(key='neolithique') + tgs = list(TargetKey.objects.filter(key='neolithik').all()) + for tg in tgs[1:]: + tg.delete() + target4 = tgs[0] neo = models.Period.objects.get(txt_idx='neolithic') target4.value = neo.pk target4.is_set = True target4.associated_import = None + target4.associated_group = None target4.associated_user = another_user target4.save() # target for the current group - target5 = TargetKey.objects.get(key='moderne') + tgs = list(TargetKey.objects.filter(key='moderne').all()) + for tg in tgs[1:]: + tg.delete() + target5 = tgs[0] modern = models.Period.objects.get(txt_idx='modern') target5.value = modern.pk target5.is_set = True target5.associated_import = None + target5.associated_user = None target5.associated_group = imp.associated_group target5.save() @@ -271,13 +294,12 @@ class ImportOperationTest(ImportTest, TestCase): self.assertEqual(last_ope.code_patriarche, '4200') self.assertEqual(last_ope.operation_type.txt_idx, 'prog_excavation') - # self.assertEqual(last_ope.periods.count(), 3) - self.assertEqual(last_ope.periods.count(), 4) + self.assertEqual(last_ope.periods.count(), 3) periods = [period.txt_idx for period in last_ope.periods.all()] self.assertIn('iron_age', periods) self.assertIn('gallo-roman', periods) # target key set for another user - # self.assertNotIn('neolithic', periods) + self.assertNotIn('neolithic', periods) # a second importation will be not possible: no two same patriarche # code @@ -298,12 +320,20 @@ class ImportOperationTest(ImportTest, TestCase): importer, form = self.init_ope_import() other_imp = form.save(self.ishtar_user) - # associate with another import - for ik in ItemKey.objects.filter(importer=impt).all(): - ik.importer = other_imp - ik.save() - for tg in TargetKey.objects.filter(associated_import=impt).all(): + # re-associate with another import + q = Q(importer=impt) | Q(user=impt.user) + if impt.associated_group: + q |= Q(group=impt.associated_group) + for ik in ItemKey.objects.filter(q).all(): + ik.delete() + + q = Q(associated_import=impt) | Q(associated_user=impt.user) + if impt.associated_group: + q |= Q(associated_group=impt.associated_group) + for tg in TargetKey.objects.filter(q).all(): + tg.associated_user = None + tg.associated_group = None tg.associated_import = other_imp tg.save() |