Browse Source

Adiciona exportação csv para relatórios de casas sem convênio

whois_api
Sesostris Vieira 9 years ago
parent
commit
7582f25d3d
  1. 38
      sigi/apps/home/views.py
  2. 15
      templates/snippets/modules/resumo_convenios.html

38
sigi/apps/home/views.py

@ -35,10 +35,11 @@ from sigi.apps.servicos.models import TipoServico
from sigi.apps.servidores.models import Servidor from sigi.apps.servidores.models import Servidor
from django.views.decorators.cache import never_cache from django.views.decorators.cache import never_cache
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.http.response import JsonResponse from django.http.response import JsonResponse, HttpResponse
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.db.models import Q, Count from django.db.models import Q, Count
from sigi.shortcuts import render_to_pdf from sigi.shortcuts import render_to_pdf
import csv
@never_cache @never_cache
@login_required @login_required
@ -159,6 +160,7 @@ def chart_performance(request):
@login_required @login_required
def report_sem_convenio(request): def report_sem_convenio(request):
modo = request.GET.get('modo', None) modo = request.GET.get('modo', None)
format = request.GET.get('f', 'pdf')
sc = sem_convenio() sc = sem_convenio()
@ -172,10 +174,36 @@ def report_sem_convenio(request):
casas = sc['total'] casas = sc['total']
titulo = _(u"Casas sem convenio que utilizam algum serviço de registro e/ou hospedagem") titulo = _(u"Casas sem convenio que utilizam algum serviço de registro e/ou hospedagem")
context = {'casas': casas, 'titulo': titulo} if format == 'csv':
print context response = HttpResponse(content_type='text/csv')
# return render(request, 'home/sem_convenio.html', context) response['Content-Disposition'] = 'attachment; filename=casas.csv'
return render_to_pdf('home/sem_convenio.html', context) writer = csv.writer(response)
writer.writerow([titulo.encode('utf8')])
writer.writerow([u''])
writer.writerow([u'casa', u'uf', u'gerente', u'serviços'.encode('utf8')])
for casa in casas:
writer.writerow([
casa.nome.encode('utf8'),
casa.municipio.uf.sigla.encode('utf8'),
casa.gerente_contas.nome_completo.encode('utf8'),
(u', '.join(casa.servico_set.filter(data_desativacao__isnull=True).values_list('tipo_servico__nome', flat=True))).encode('utf8'),
])
return response
elif format == 'json':
data = {
'titulo': titulo,
'casas': [
{'nome': casa.nome,
'uf': casa.municipio.uf.sigla,
'gerente': casa.gerente_contas.nome_completo,
'servicos': list(casa.servico_set.filter(data_desativacao__isnull=True).values_list('tipo_servico__nome', flat=True))}
for casa in casas
]
}
return JsonResponse(data, safe=False)
else:
context = {'casas': casas, 'titulo': titulo}
return render_to_pdf('home/sem_convenio.html', context)
def busca_informacoes_camara(): def busca_informacoes_camara():

15
templates/snippets/modules/resumo_convenios.html

@ -44,15 +44,24 @@
</tr> </tr>
<tr> <tr>
<th>{% trans 'Casas sem convenio que utilizam algum serviço de hospedagem' %} <a href="{% url "home_reportsemconvenio" %}?modo=H" target="_blank" aria-label="{% trans "Listar casas" %}" title="{% trans "Listar casas" %}"><span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span></a></th> <th>{% trans 'Casas sem convenio que utilizam algum serviço de hospedagem' %}
<a href="{% url "home_reportsemconvenio" %}?modo=H" target="_blank" aria-label="{% trans "Listar casas" %}" title="{% trans "Listar casas" %}"><span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span></a>
<a href="{% url "home_reportsemconvenio" %}?modo=H&f=csv" aria-label="{% trans "Download csv" %}" title="{% trans "Download csv" %}"><span class="glyphicon glyphicon-download" aria-hidden="true"></span></a>
</th>
<td>{{ tabela_resumo_camara.sem_convenio.hospedagem|length }}</td> <td>{{ tabela_resumo_camara.sem_convenio.hospedagem|length }}</td>
</tr> </tr>
<tr> <tr>
<th>{% trans 'Casas sem convenio que utilizam somente serviço de registro' %} <a href="{% url "home_reportsemconvenio" %}?modo=R" target="_blank" aria-label="{% trans "Listar casas" %}" title="{% trans "Listar casas" %}"><span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span></a></th> <th>{% trans 'Casas sem convenio que utilizam somente serviço de registro' %}
<a href="{% url "home_reportsemconvenio" %}?modo=R" target="_blank" aria-label="{% trans "Listar casas" %}" title="{% trans "Listar casas" %}"><span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span></a>
<a href="{% url "home_reportsemconvenio" %}?modo=R&f=csv" aria-label="{% trans "Download csv" %}" title="{% trans "Download csv" %}"><span class="glyphicon glyphicon-download" aria-hidden="true"></span></a>
</th>
<td>{{ tabela_resumo_camara.sem_convenio.registro|length }}</td> <td>{{ tabela_resumo_camara.sem_convenio.registro|length }}</td>
</tr> </tr>
<tr> <tr>
<th>{% trans 'Casas sem convenio que utilizam algum serviço de registro e/ou hospedagem' %} <a href="{% url "home_reportsemconvenio" %}" target="_blank" aria-label="{% trans "Listar casas" %}" title="{% trans "Listar casas" %}"><span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span></a></th> <th>{% trans 'Casas sem convenio que utilizam algum serviço de registro e/ou hospedagem' %}
<a href="{% url "home_reportsemconvenio" %}" target="_blank" aria-label="{% trans "Listar casas" %}" title="{% trans "Listar casas" %}"><span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span></a>
<a href="{% url "home_reportsemconvenio" %}?f=csv" aria-label="{% trans "Download csv" %}" title="{% trans "Download csv" %}"><span class="glyphicon glyphicon-download" aria-hidden="true"></span></a>
</th>
<td>{{ tabela_resumo_camara.sem_convenio.total|length }}</td> <td>{{ tabela_resumo_camara.sem_convenio.total|length }}</td>
</tr> </tr>
</table> </table>

Loading…
Cancel
Save