summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commitfaadd6cb64cf0857e93798af5b2a128c7c8e53ea (patch)
tree174270415c9b00d6850590f60e33840da92fa51d
parent0e8b89cc3db520537e96157c178a4985c644b7ce (diff)
downloadIshtar-faadd6cb64cf0857e93798af5b2a128c7c8e53ea.tar.bz2
Ishtar-faadd6cb64cf0857e93798af5b2a128c7c8e53ea.zip
Permissive search for in charge operation searches (refs #2920)
-rw-r--r--archaeological_operations/forms.py4
-rw-r--r--ishtar_common/urls.py3
-rw-r--r--ishtar_common/views.py17
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',