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 /ishtar_common | |
parent | 0e8b89cc3db520537e96157c178a4985c644b7ce (diff) | |
download | Ishtar-faadd6cb64cf0857e93798af5b2a128c7c8e53ea.tar.bz2 Ishtar-faadd6cb64cf0857e93798af5b2a128c7c8e53ea.zip |
Permissive search for in charge operation searches (refs #2920)
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/urls.py | 3 | ||||
-rw-r--r-- | ishtar_common/views.py | 17 |
2 files changed, 16 insertions, 4 deletions
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', |