#!/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_operation(request, non_closed=True): person_types = request.user.ishtaruser.person.person_type if (not request.user.has_perm('ishtar_common.view_operation', models.Operation)\ and not request.user.has_perm('ishtar_common.view_own_operation', models.Operation) and not person_types.rights.filter(wizard__url_name='operation_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(towns__name__icontains=q) try: value = int(q) extra = extra | Q(year=q) | Q(operation_code=q) except ValueError: pass query = query & extra if non_closed: query = query & Q(end_date__isnull=True) limit = 15 operations = models.Operation.objects.filter(query)[:limit] data = json.dumps([{'id':operation.pk, 'value':unicode(operation)} for operation in operations]) return HttpResponse(data, mimetype='text/plain') def get_available_operation_code(request, year=None): if not request.user.has_perm('ishtar_common.view_operation', models.Operation)\ and not request.user.has_perm('ishtar_common.view_own_operation', models.Operation): return HttpResponse(mimetype='text/plain') data = json.dumps({'id':models.Operation.get_available_operation_code(year)}) return HttpResponse(data, mimetype='text/plain') get_operation = get_item(models.Operation, 'get_operation', 'operation', bool_fields = ['end_date__isnull'], extra_request_keys={'common_name':'common_name__icontains', 'end_date':'end_date__isnull', 'year_index':('year', 'operation_code')}) show_operation = show_item(models.Operation, 'operation') revert_operation = revert_item(models.Operation) get_operationsource = get_item(models.OperationSource, 'get_operationsource', 'operationsource', extra_request_keys={'operation__towns':'operation__towns__pk', 'operation__operation_type':'operation__operation_type__pk', 'operation__year':'operation__year'}) get_administrativeactfile = get_item(models.AdministrativeAct, 'get_administrativeactfile', 'administrativeactfile', extra_request_keys={'associated_file__towns':'associated_file__towns__pk', 'operation__towns':'operation__towns__pk', 'act_type__intented_to':'act_type__intented_to'}) get_administrativeactop = get_item(models.AdministrativeAct, 'get_administrativeactop', 'administrativeactop', extra_request_keys={'associated_file__towns':'associated_file__towns__pk', 'operation__towns':'operation__towns__pk', 'act_type__intented_to':'act_type__intented_to'}) def dashboard_operation(request, dct, obj_id=None, *args, **kwargs): """ Operation dashboard """ dct = {'dashboard': models.OperationDashboard()} return render_to_response('dashboard_operation.html', dct, context_instance=RequestContext(request))