Browse Source

Refactor map view to remove code duplication

producao
Marcio Mazza 10 years ago
parent
commit
51b82e80e4
  1. 56
      sigi/apps/metas/templates/metas/mapa.html
  2. 52
      sigi/apps/metas/views.py

56
sigi/apps/metas/templates/metas/mapa.html

@ -76,62 +76,20 @@
<div class="panel-heading">{% trans 'Filtros' %}</div>
<form id="filter_form" method="get" action="">
<h4>{% trans 'Por Serviços SEIT' %}</h4>
{% for name, heading, choices in filters %}
<h4>{{ heading }}</h4>
<ul>
{% for s in servico_choices %}
<li><input type="checkbox" name="seit" value="{{ s.sigla }}"
{% if s.sigla in seit %} checked="checked" {% endif %}/>
{{ s.nome }}
<span id="{{ s.sigla }}" class="totalizador">&nbsp;</span>
</li>
{% endfor %}
</ul>
<h4>{% trans 'Por Casas conveniadas' %}</h4>
<ul>
{% for p in projeto_choices %}
<li><input type="checkbox" name="convenios" value="{{ p.sigla }}" {% if p.sigla in convenios %}checked="checked" {% endif %}/>
ao {{ p.sigla }} <span id="convenio_{{ p.sigla }}" class="totalizador">&nbsp;</span> </li>
{% endfor %}
</ul>
<h4>{% trans 'Por Casas equipadas' %}</h4>
<ul>
{% for p in projeto_choices %}
<li><input type="checkbox" name="equipadas" value="{{ p.sigla }}" {% if p.sigla in equipadas %}checked="checked"{% endif %} />
pelo {{ p.sigla }}<span id="equip_{{ p.sigla }}" class="totalizador">&nbsp;</span> </li></li>
{% endfor %}
</ul>
<h4>{% trans 'Por Diagnósticos' %}</h4>
<ul>
<li><input type="checkbox" name="diagnosticos" value="A" {% if "A" in diagnosticos %}checked="checked" {% endif %}/>
{% trans 'Em andamento' %}<span id="diagnostico_A" class="totalizador">&nbsp;(1)</span></li>
<li><input type="checkbox" name="diagnosticos" value="P" {% if "P" in diagnosticos %}checked="checked" {% endif %}/>
{% trans 'Publicados' %}<span id="diagnostico_P" class="totalizador">&nbsp;(1)</span></li>
</ul>
<h4>{% trans 'Por região' %}</h4>
<ul>
{% for r in regiao_choices %}
<li><input type="checkbox" name="regioes" value="{{ r.0 }}" {% if r.0 in regioes %}checked="checked"{% endif %}/> {{ r.1 }}
<span id="{{ r.0 }}" class="totalizador">&nbsp;(1)</span></li>
{% endfor %}
</ul>
<h4>{% trans 'Por Estado' %}</h4>
<ul>
{% for e in estado_choices %}
<li><input type="checkbox" name="estados" value="{{ e.sigla }}"
{% if e.sigla in estados %} checked="checked" {% endif %}/>
{{ e.nome }}
<span id="{{ e.sigla }}" class="totalizador">&nbsp;(1)</span>
{% for value, span_id, label, checked in choices %}
<li><input type="checkbox" name="{{ name }}" value="{{ value }}" {% if checked %}checked="checked" {% endif %}/>
{{ label }}
<span id="{{ span_id }}" class="totalizador">&nbsp;</span>
</li>
{% endfor %}
</ul>
{% endfor %}
</form>
</div>
</div>
{% endblock %}

52
sigi/apps/metas/views.py

@ -10,7 +10,7 @@ from django.core.exceptions import PermissionDenied
from django.db.models import Q
from django.db.models.aggregates import Sum
from django.http import HttpResponse
from django.shortcuts import render_to_response
from django.shortcuts import render, render_to_response
from django.template import RequestContext
from django.utils.datastructures import SortedDict
from django.utils.translation import ugettext as _
@ -67,32 +67,30 @@ def mapa(request):
Mostra o mapa com filtros carregados com valores default
"""
regiao_choices = UnidadeFederativa.REGIAO_CHOICES
estado_choices = UnidadeFederativa.objects.all()
servico_choices = TipoServico.objects.all()
projeto_choices = Projeto.objects.all()
seit = [ts.sigla for ts in servico_choices]
convenios = ['PML'] # Apenas o ultimo #hardcoded #fixme
equipadas = [] # [p.sigla for p in projeto_choices]
diagnosticos = ['P'] # choices: ["A", "P"]
regioes = [r[0] for r in regiao_choices]
estados = []
extra_context = {
'seit': seit,
'convenios': convenios,
'equipadas': equipadas,
'diagnosticos': diagnosticos,
'regioes': regioes,
'estados': estados,
'regiao_choices': regiao_choices,
'estado_choices': estado_choices,
'servico_choices': servico_choices,
'projeto_choices': projeto_choices,
}
return render_to_response('metas/mapa.html', extra_context, context_instance=RequestContext(request))
projetos = Projeto.objects.all()
filters = (
# NAME, HEADING,
# [(value, label, checked) ...]
("seit", _(u'Por Serviços SEIT'),
[(x.sigla, x.sigla, x.nome, True)
for x in TipoServico.objects.all()]),
("convenios", _(u'Por Casas conveniadas'),
[(x.sigla, 'convenio_' + x.sigla, _(u'ao %(projeto)s') % {'projeto': x.sigla}, x.sigla == 'PML')
for x in projetos]), # Apenas o ultimo #hardcoded #fixme
("equipadas", _(u'Por Casas equipadas'),
[(x.sigla, 'equip_' + x.sigla, _(u'pelo %(projeto)s') % {'projeto': x.sigla}, False)
for x in projetos]),
("diagnosticos", _(u'Por Diagnósticos'),
[('A', 'diagnostico_A', 'Em andamento', False),
('P', 'diagnostico_P', 'Publicados', True)]),
("regioes", _(u'Por região'),
[(x[0], x[0], x[1], True)
for x in UnidadeFederativa.REGIAO_CHOICES]),
("estados", _(u'Por Estado'),
[(x.sigla, x.sigla, x.nome, False)
for x in UnidadeFederativa.objects.all()]),
)
return render(request, 'metas/mapa.html', {'filters': filters})
@cache_page(1800) # Cache de 30min

Loading…
Cancel
Save