summaryrefslogtreecommitdiff
path: root/ishtar_common/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r--ishtar_common/views.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index 3d64535d4..72418e4fa 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -527,6 +527,29 @@ def autocomplete_user(request):
return HttpResponse(data, content_type='text/plain')
+def autocomplete_ishtaruser(request):
+ if not request.user.has_perm('ishtar_common.view_person', models.Person):
+ return HttpResponse('[]', content_type='text/plain')
+ q = request.GET.get('term', '')
+ limit = request.GET.get('limit', 20)
+ try:
+ limit = int(limit)
+ except ValueError:
+ return HttpResponseBadRequest()
+ query = Q()
+ for q in q.split(' '):
+ qu = (Q(person__name__icontains=q) |
+ Q(person__surname__icontains=q) |
+ Q(person__raw_name__icontains=q))
+ query = query & qu
+ users = models.IshtarUser.objects.filter(query)[:limit]
+ data = json.dumps([
+ {'id': user.pk,
+ 'value': unicode(user)}
+ for user in users])
+ return HttpResponse(data, content_type='text/plain')
+
+
def autocomplete_person(request, person_types=None, attached_to=None,
is_ishtar_user=None, permissive=False):
all_items = request.user.has_perm('ishtar_common.view_person',
@@ -1754,6 +1777,32 @@ def get_bookmark(request, pk):
)
+def gen_generate_doc(model):
+
+ def func(request, pk, template_pk=None):
+ if not request.user.has_perm('view_' + model.SLUG, model):
+ return HttpResponse(content_type='text/plain')
+ try:
+ item = model.objects.get(pk=pk)
+ doc = item.publish(template_pk)
+ except model.DoesNotExist:
+ doc = None
+ if doc:
+ MIMES = {'odt': 'application/vnd.oasis.opendocument.text',
+ 'ods': 'application/vnd.oasis.opendocument.spreadsheet'}
+ ext = doc.split('.')[-1]
+ doc_name = item.get_filename() + "." + ext
+ mimetype = 'text/csv'
+ if ext in MIMES:
+ mimetype = MIMES[ext]
+ response = HttpResponse(open(doc), content_type=mimetype)
+ response['Content-Disposition'] = 'attachment; filename=%s' % \
+ doc_name
+ return response
+ return HttpResponse(content_type='text/plain')
+ return func
+
+
class SearchQueryMixin(object):
"""
Manage content type and profile init
@@ -1978,3 +2027,5 @@ class QAItemEditForm(QAItemForm):
def form_save(self, form):
form.save(self.items, self.request.user)
return HttpResponseRedirect(reverse("success"))
+
+