#!/usr/bin/env python # -*- coding: utf-8 -*- # Copyright (C) 2010-2012 Étienne Loks # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # See the file COPYING for details. import json from django.db.models import Q from django.http import HttpResponse from django.shortcuts import render_to_response from ishtar_common.views import get_item, show_item, revert_item import models def autocomplete_file(request): person_types = request.user.ishtaruser.person.person_type if (not request.user.has_perm('ishtar_common.view_file', models.File) and \ not request.user.has_perm('ishtar_common.view_own_file', models.File) and not person_types.rights.filter(wizard__url_name='file_search' ).count()): return HttpResponse(mimetype='text/plain') if not request.GET.get('term'): return HttpResponse(mimetype='text/plain') q = request.GET.get('term') query = Q() for q in q.split(' '): extra = Q(internal_reference__icontains=q) | \ Q(towns__name__icontains=q) try: value = int(q) extra = extra | Q(year=q) | Q(numeric_reference=q) except ValueError: pass query = query & extra limit = 20 files = models.File.objects.filter(query)[:limit] data = json.dumps([{'id':file.pk, 'value':unicode(file)} for file in files]) return HttpResponse(data, mimetype='text/plain') get_file = get_item(models.File, 'get_file', 'file') show_file = show_item(models.File, 'file') revert_file = revert_item(models.File) def dashboard_file(request, dct, obj_id=None, *args, **kwargs): """ Main dashboard """ dct = {'dashboard': models.FileDashboard()} return render_to_response('dashboard_file.html', dct, context_instance=RequestContext(request))