diff options
| author | Étienne Loks <etienne.loks@proxience.com> | 2015-12-07 20:08:47 +0100 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@proxience.com> | 2015-12-07 20:08:47 +0100 | 
| commit | faadd6cb64cf0857e93798af5b2a128c7c8e53ea (patch) | |
| tree | 174270415c9b00d6850590f60e33840da92fa51d | |
| parent | 0e8b89cc3db520537e96157c178a4985c644b7ce (diff) | |
| download | Ishtar-faadd6cb64cf0857e93798af5b2a128c7c8e53ea.tar.bz2 Ishtar-faadd6cb64cf0857e93798af5b2a128c7c8e53ea.zip | |
Permissive search for in charge operation searches (refs #2920)
| -rw-r--r-- | archaeological_operations/forms.py | 4 | ||||
| -rw-r--r-- | ishtar_common/urls.py | 3 | ||||
| -rw-r--r-- | ishtar_common/views.py | 17 | 
3 files changed, 18 insertions, 6 deletions
| diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index 4728980e4..5aaee4112 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -354,7 +354,7 @@ class OperationSelect(TableSelect):                                         choices=[])      scientist = forms.IntegerField(          widget=widgets.JQueryAutoComplete( -            reverse_lazy('autocomplete-person', +            reverse_lazy('autocomplete-person-permissive',                           args=["_".join([unicode(HEAD_SCIENTIST.pk),                                           unicode(SRA_AGENT.pk)])]),              associated_model=Person), @@ -362,7 +362,7 @@ class OperationSelect(TableSelect):      in_charge = forms.IntegerField(          widget=widgets.JQueryAutoComplete(              reverse_lazy( -                'autocomplete-person', +                'autocomplete-person-permissive',                  args=["_".join(                      [unicode(PersonType.objects.get(txt_idx='sra_agent').pk)])]              ), diff --git a/ishtar_common/urls.py b/ishtar_common/urls.py index eb0fe7ac2..70109a2f3 100644 --- a/ishtar_common/urls.py +++ b/ishtar_common/urls.py @@ -103,6 +103,9 @@ urlpatterns += patterns(          'new_person_noorga', name='new-person-noorga'),      url(r'autocomplete-person(?:/([0-9_]+))?(?:/([0-9_]*))?/(user)?$',          'autocomplete_person', name='autocomplete-person'), +    url(r'autocomplete-person-permissive(?:/([0-9_]+))?(?:/([0-9_]*))?' +        r'/(user)?$', 'autocomplete_person_permissive', +        name='autocomplete-person-permissive'),      url(r'get-person/(?P<type>.+)?$', 'get_person',          name='get-person'),      url(r'show-person(?:/(?P<pk>.+))?/(?P<type>.+)?$', diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 819c88f32..ac29236ff 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -171,8 +171,14 @@ def check_permission(request, action_slug, obj_id=None):      return menu.items[action_slug].can_be_available(request.user) +def autocomplete_person_permissive(request, person_types=None, attached_to=None, +                                   is_ishtar_user=None): +    return autocomplete_person(request, person_types=person_types, attached_to=attached_to, +                               is_ishtar_user=is_ishtar_user, permissive=True) + +  def autocomplete_person(request, person_types=None, attached_to=None, -                        is_ishtar_user=None): +                        is_ishtar_user=None, permissive=False):      if not request.user.has_perm('ishtar_common.view_person', models.Person) and \         not request.user.has_perm('ishtar_common.view_own_person', models.Person) \         and not request.user.ishtaruser.has_right('person_search'): @@ -187,9 +193,11 @@ def autocomplete_person(request, person_types=None, attached_to=None,          return HttpResponseBadRequest()      query = Q()      for q in q.split(' '): -        query = query & (Q(name__icontains=q) | Q(surname__icontains=q) | -                         Q(email__icontains=q) | -                         Q(attached_to__name__icontains=q)) +        qu = (Q(name__icontains=q) | Q(surname__icontains=q) | +              Q(email__icontains=q) | Q(attached_to__name__icontains=q)) +        if permissive: +            qu = qu | Q(raw_name__icontains=q) +        query = query & qu      if attached_to:          query = query & Q(attached_to__pk__in=attached_to.split('_')) @@ -837,6 +845,7 @@ get_organization = get_item(      })  new_author = new_item(models.Author, forms.AuthorForm)  show_person = show_item(models.Person, 'person') +  get_person = get_item(      models.Person,      'get_person', 'person', | 
