diff options
Diffstat (limited to 'archaeological_context_records')
| -rw-r--r-- | archaeological_context_records/forms.py | 10 | ||||
| -rw-r--r-- | archaeological_context_records/tests.py | 39 | ||||
| -rw-r--r-- | archaeological_context_records/views.py | 1 | 
3 files changed, 46 insertions, 4 deletions
diff --git a/archaeological_context_records/forms.py b/archaeological_context_records/forms.py index 7572b0bcb..512d2069b 100644 --- a/archaeological_context_records/forms.py +++ b/archaeological_context_records/forms.py @@ -30,7 +30,7 @@ from django.utils.translation import ugettext_lazy as _  from ishtar_common.models import valid_id  from archaeological_operations.models import Period, Parcel, Operation, \ -    ArchaeologicalSite +    ArchaeologicalSite, RelationType as OpeRelationType  import models  from ishtar_common import widgets @@ -56,6 +56,9 @@ class RecordSelect(TableSelect):              reverse_lazy('autocomplete-archaeologicalsite'),              associated_model=ArchaeologicalSite),          validators=[valid_id(ArchaeologicalSite)]) +    ope_relation_types = forms.MultipleChoiceField( +        label=_(u"Search within operation relations"), choices=[], +        widget=forms.CheckboxSelectMultiple)      datings__period = forms.ChoiceField(label=_(u"Period"), choices=[])      unit = forms.ChoiceField(label=_(u"Unit type"), choices=[])      parcel = ParcelField(label=_(u"Parcel (section/number/public domain)")) @@ -71,6 +74,8 @@ class RecordSelect(TableSelect):          self.fields['unit'].help_text = models.Unit.get_help()          self.fields['relation_types'].choices = models.RelationType.get_types(              empty_first=False) +        self.fields['ope_relation_types'].choices = OpeRelationType.get_types( +            empty_first=False)      def get_input_ids(self):          ids = super(RecordSelect, self).get_input_ids() @@ -81,6 +86,9 @@ class RecordSelect(TableSelect):          ids.pop(ids.index('relation_types'))          for idx, c in enumerate(self.fields['relation_types'].choices):              ids.append('relation_types_{}'.format(idx)) +        ids.pop(ids.index('ope_relation_types')) +        for idx, c in enumerate(self.fields['ope_relation_types'].choices): +            ids.append('ope_relation_types_{}'.format(idx))          return ids diff --git a/archaeological_context_records/tests.py b/archaeological_context_records/tests.py index 614156528..27ba0ab71 100644 --- a/archaeological_context_records/tests.py +++ b/archaeological_context_records/tests.py @@ -30,6 +30,7 @@ from ishtar_common.models import ImporterType, IshtarSiteProfile  from ishtar_common.tests import create_superuser  from archaeological_operations.tests import OperationInitTest, \      ImportOperationTest +from archaeological_operations import models as models_ope  from archaeological_context_records import models  from ishtar_common import forms_common @@ -126,18 +127,18 @@ class ContextRecordTest(ContextRecordInit, TestCase):      def setUp(self):          IshtarSiteProfile.objects.create()          self.username, self.password, self.user = create_superuser() -        self.create_context_record({"label": u"CR 1"}) -        self.create_context_record({"label": u"CR 2"}) +        self.create_context_record(data={"label": u"CR 1"}) +        self.create_context_record(data={"label": u"CR 2"})          cr_1 = self.context_records[0]          cr_2 = self.context_records[1]          sym_rel_type = models.RelationType.objects.filter(              symmetrical=True).all()[0] +        self.cr_rel_type = sym_rel_type          models.RecordRelations.objects.create(              left_record=cr_1, right_record=cr_2, relation_type=sym_rel_type)      def testSearchExport(self): -        "url = reverse()get-contextrecord-full/csv?submited=1&"          c = Client()          response = c.get(reverse('get-contextrecord'))          # no result when no authentification @@ -145,6 +146,38 @@ class ContextRecordTest(ContextRecordInit, TestCase):          c.login(username=self.username, password=self.password)          response = c.get(reverse('get-contextrecord'))          self.assertTrue(json.loads(response.content)['total'] == 2) +        # test search label +        response = c.get(reverse('get-contextrecord'), +                         {'label': 'cr 1'}) +        self.assertEqual(json.loads(response.content)['total'], 1) +        # test search between relations +        response = c.get(reverse('get-contextrecord'), +                         {'label': 'cr 1', +                          'relation_types_0': self.cr_rel_type.pk}) +        self.assertEqual(json.loads(response.content)['total'], 2) +        # test search between operation relations +        first_ope = self.operations[0] +        first_ope.year = 2010 +        first_ope.save() +        cr_1 = self.context_records[0] +        cr_1.operation = first_ope +        cr_1.save() +        other_ope = self.operations[1] +        other_ope.year = 2016 +        other_ope.save() +        cr_2 = self.context_records[1] +        cr_2.operation = other_ope +        cr_2.save() +        rel_ope = models_ope.RelationType.objects.create( +            symmetrical=True, label='Linked', txt_idx='link') +        models_ope.RecordRelations.objects.create( +            left_record=other_ope, +            right_record=first_ope, +            relation_type=rel_ope) +        response = c.get(reverse('get-contextrecord'), +                         {'operation__year': 2010, +                          'ope_relation_types_0': rel_ope.pk}) +        self.assertEqual(json.loads(response.content)['total'], 2)          # export          response = c.get(reverse('get-contextrecord-full',                                   kwargs={'type': 'csv'}), {'submited': '1'}) diff --git a/archaeological_context_records/views.py b/archaeological_context_records/views.py index 1b8585b82..4e3dcf7fe 100644 --- a/archaeological_context_records/views.py +++ b/archaeological_context_records/views.py @@ -80,6 +80,7 @@ def autocomplete_contextrecord(request):  get_contextrecord = get_item(      models.ContextRecord,      'get_contextrecord', 'contextrecord', +    relation_types_prefix={'ope_relation_types': 'operation__'},      extra_request_keys=contextrecord_extra_keys,)  get_contextrecord_for_ope = get_item(      models.ContextRecord,  | 
