Conjunto de mudanças 6123 no repositório publico


Ignorar:
Timestamp:
14/03/2012 19:52:04 (8 anos atrás)
Autor:
felipetio
Mensagem:

primeira versao da api de graficos

Localização:
SIGI/trunk/sigi
Arquivos:
3 editados

Legenda:

Não Modificado
Adicionado
Removido
  • SIGI/trunk/sigi/apps/diagnosticos/models.py

    r6118 r6123  
    156156    categoria = models.ForeignKey(Categoria, related_name='perguntas')
    157157
     158    def group_choices(self):
     159        from django.db import connection, transaction
     160        cursor = connection.cursor()
     161
     162        cursor.execute("""
     163          SELECT choice_id, sum(1)
     164          FROM diagnosticos_resposta
     165          WHERE schema_id=%s
     166          GROUP BY choice_id;
     167        """, [self.id])
     168
     169        return [
     170          (Escolha.objects.get(id=int(row[0])), row[1])
     171          for row in cursor.fetchall()
     172        ]
     173
    158174    class Meta:
    159175        ordering = ('title',)
  • SIGI/trunk/sigi/apps/diagnosticos/views.py

    r6065 r6123  
    22
    33import new
    4 from django.http import HttpResponse
     4from django.http import HttpResponse, QueryDict
    55from django.utils import simplejson
    6 from django.shortcuts import render_to_response
     6from django.shortcuts import render_to_response, get_object_or_404, redirect
    77from django.template import RequestContext
    88from django.views.decorators.cache import never_cache
     
    1212from sigi.apps.utils.decorators import login_required
    1313from sigi.apps.diagnosticos.decorators import validate_diagnostico
    14 from sigi.apps.diagnosticos.models import Diagnostico, Categoria
     14from sigi.apps.diagnosticos.models import Diagnostico, Categoria, Pergunta
    1515from sigi.apps.casas.models import Funcionario
    1616from sigi.apps.diagnosticos.forms import (DiagnosticoMobileForm,
     
    212212            schemas.append(schema)
    213213
    214         schemas = sorted(schemas, key=lambda schema: schema.title) # sort by title
    215214        schemas_by_categoria.append((categoria,schemas))
    216215
     
    225224    return render_to_pdf('diagnosticos/diagnostico_pdf.html', context)
    226225
     226def graficos(request):
     227    categorias = Categoria.objects.all()
     228
     229    sel_categoria = int(request.REQUEST.get("categoria","3"))
     230    perguntas = Pergunta.objects.filter(categoria=sel_categoria).all()
     231
     232    context = RequestContext(request, {
     233        'categorias': categorias,
     234        'sel_categoria': sel_categoria,
     235        'perguntas': perguntas,
     236        })
     237    return render_to_response('diagnosticos/graficos.html',
     238        context)
     239
     240def grafico_api(request):
     241    graph_url = "http://chart.apis.google.com/chart"
     242    graph_params = QueryDict("chxt=y&chbh=a&chco=A2C180,3D7930")
     243    graph_params = graph_params.copy() # to make it mutable
     244
     245    width = request.REQUEST.get('width', '300')
     246    height = request.REQUEST.get('height', '200')
     247    graph_params.update({'chs': width + 'x' + height})
     248
     249    pergunta_slug = request.REQUEST.get('id', None)
     250    pergunta = get_object_or_404(Pergunta, name=pergunta_slug)
     251
     252    if pergunta.datatype == 'many':
     253      choices = [r[1] for r in pergunta.get_choices()]
     254      graph_params.update({
     255            'cht': 'bvg',
     256            'chxt' : 'y',
     257            'chd': 't:' + ",".join(choices)
     258        })
     259    elif pergunta.datatype == 'one':
     260      choices = [str(r[1]) for r in pergunta.group_choices()]
     261      graph_params.update({
     262        'cht': 'p',
     263        'chd': 't:' + ",".join(choices)
     264        })
     265
     266    response = {
     267        "version": "1.0",
     268        "type": "photo",
     269        "width": width,
     270        "height": height,
     271        "title": pergunta.title,
     272        "url": graph_url + "?" + graph_params.urlencode(),
     273        "provider_name": "SIGI",
     274        "provider_url": "https://intranet.interlegis.gov.br/sigi/"
     275    }
     276
     277    json = simplejson.dumps(response)
     278    return HttpResponse(json, mimetype="application/json")
     279    return redirect(response['url'])
     280
  • SIGI/trunk/sigi/urls.py

    r6062 r6123  
    7777    (r'^sigi/birt/',
    7878     'sigi.apps.birt.views.menu'),
    79 
     79    # graficos de perguntas
     80    (r'^sigi/diagnosticos/graficos/$',
     81     'sigi.apps.diagnosticos.views.graficos'),
     82    (r'^sigi/diagnosticos/grafico_api/$',
     83     'sigi.apps.diagnosticos.views.grafico_api'),
    8084    # automatic interface based on admin
    8185    (r'^sigi/(.*)', sites.default.root),
Note: Veja TracChangeset para ajuda no uso do visualizador de conjunto de mudanças.
 

The contents and data of this website are published under license:
Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual.