Browse Source

Categoria de informacao de casa legislativa e respectivos contatos

diagnosticos
Felipe Vieira 13 years ago
parent
commit
1c6defce0b
  1. 4
      media/css/diagnosticos/diagnosticos_categoria_model_form.css
  2. 13
      sigi/apps/casas/models.py
  3. 17
      sigi/apps/diagnosticos/forms.py
  4. 12
      sigi/apps/diagnosticos/urls.py
  5. 49
      sigi/apps/diagnosticos/views.py
  6. 1
      sigi/migrations/20111125_casas_funcionario.sql
  7. 53
      sigi/templates/diagnosticos/diagnosticos_categoria_casa_legislativa_form.html
  8. 45
      sigi/templates/diagnosticos/diagnosticos_categoria_contatos_form.html
  9. 10
      sigi/templates/diagnosticos/diagnosticos_categorias_list.html

4
media/css/diagnosticos/diagnosticos_categoria_model_form.css

@ -0,0 +1,4 @@
label.attr {
display: inline-block;
width: 100px;
}

13
sigi/apps/casas/models.py

@ -79,6 +79,17 @@ class Funcionario(models.Model):
""" Modelo para registrar contatos vinculados às """ Modelo para registrar contatos vinculados às
Casas Legislativas Casas Legislativas
""" """
SETOR_CHOICES = [
("presidencia","Presidencia"),
("infraestrutura_fisica","Infraestrutura Física"),
("estrutura_de_ti","Estrutura de TI"),
("organizacao_do_processo_legislativo","Organização do Processo Legislativo"),
("estrutura_de_comunicacao_social","Estrutura de Comunicação Social"),
("estrutura_de_recursos_humanos","Estrutura de Recursos Humanos"),
("estrutura_de_recursos_humanos","Estrutura de Recursos Humanos"),
("estrutura_de_secretaria","Estrutura de Secretaria"),
("outros","Outros"),
]
casa_legislativa = models.ForeignKey(CasaLegislativa) casa_legislativa = models.ForeignKey(CasaLegislativa)
nome = models.CharField('nome completo', max_length=60) nome = models.CharField('nome completo', max_length=60)
nome.alphabetic_filter = True nome.alphabetic_filter = True
@ -88,6 +99,7 @@ class Funcionario(models.Model):
endereco = generic.GenericRelation('contatos.Endereco') endereco = generic.GenericRelation('contatos.Endereco')
cargo = models.CharField(max_length=100, null=True, blank=True) cargo = models.CharField(max_length=100, null=True, blank=True)
funcao = models.CharField(u'função', max_length=100, null=True, blank=True) funcao = models.CharField(u'função', max_length=100, null=True, blank=True)
setor = models.CharField(max_length=100, choices = SETOR_CHOICES, default="outros")
tempo_de_servico = models.CharField(u'tempo de serviço', max_length=50, null=True, blank=True) tempo_de_servico = models.CharField(u'tempo de serviço', max_length=50, null=True, blank=True)
class Meta: class Meta:
@ -112,4 +124,5 @@ class Presidente(Funcionario):
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
self.cargo = 'Presidente' self.cargo = 'Presidente'
self.setor = 'presidencia'
return super(Presidente, self).save(*args, **kwargs) return super(Presidente, self).save(*args, **kwargs)

17
sigi/apps/diagnosticos/forms.py

@ -1,12 +1,12 @@
# -*- coding: utf8 -*- # -*- coding: utf8 -*-
from copy import deepcopy from copy import deepcopy
from django import forms
from models import Diagnostico
from django.forms.forms import BoundField from django.forms.forms import BoundField
from sigi.apps.casas.models import CasaLegislativa, Funcionario
from sigi.apps.diagnosticos.models import Diagnostico
from eav.forms import BaseDynamicEntityForm from eav.forms import BaseDynamicEntityForm
class DiagnosticoForm(BaseDynamicEntityForm): class DiagnosticoForm(BaseDynamicEntityForm):
"""Classe responsável por contruir o formulário, """Classe responsável por contruir o formulário,
vinculando ao modelo Diagnostico vinculando ao modelo Diagnostico
@ -84,3 +84,14 @@ class DiagnosticoMobileForm(BaseDynamicEntityForm):
if value and not datatype in (schema.TYPE_ONE, schema.TYPE_MANY): # choices are already done above if value and not datatype in (schema.TYPE_ONE, schema.TYPE_MANY): # choices are already done above
self.initial[schema.name] = value self.initial[schema.name] = value
class CasaLegislativaMobileForm(forms.ModelForm):
pass
class Meta:
model = CasaLegislativa
fields = ('cnpj', 'logradouro', 'bairro', 'cep', 'email', 'pagina_web')
class FuncionariosMobileForm(forms.ModelForm):
pass
class Meta:
model = Funcionario
fields = ('nome', 'email', 'cargo', 'funcao', 'tempo_de_servico')

12
sigi/apps/diagnosticos/urls.py

@ -18,7 +18,17 @@ urlpatterns = patterns('',
# Lista de Categorias # Lista de Categorias
url(r'^(?P<id_diagnostico>\d+)/categorias/$', 'sigi.apps.diagnosticos.views.categorias', name='lista_categorias'), url(r'^(?P<id_diagnostico>\d+)/categorias/$', 'sigi.apps.diagnosticos.views.categorias', name='lista_categorias'),
# Detalhes da Categoria # Detalhes da Categoria da Casa Legislativa
url(r'^(?P<id_diagnostico>\d+)/categorias/1/$',
'sigi.apps.diagnosticos.views.categoria_casa_legislativa',
name='detalhes_categoria_casa_legislativa'),
# Detalhes da Categoria de Contatos
url(r'^(?P<id_diagnostico>\d+)/categorias/2/$',
'sigi.apps.diagnosticos.views.categoria_contatos',
name='detalhes_categoria_contatos'),
# Detalhes de Categorias Dinamicas
url(r'^(?P<id_diagnostico>\d+)/categorias/(?P<id_categoria>\d+)/$', url(r'^(?P<id_diagnostico>\d+)/categorias/(?P<id_categoria>\d+)/$',
'sigi.apps.diagnosticos.views.categoria_detalhes', 'sigi.apps.diagnosticos.views.categoria_detalhes',
name='detalhes_categoria'), name='detalhes_categoria'),

49
sigi/apps/diagnosticos/views.py

@ -6,7 +6,8 @@ from django.core.urlresolvers import reverse
from sigi.apps.utils.decorators import login_required from sigi.apps.utils.decorators import login_required
from sigi.apps.diagnosticos.models import Diagnostico, Categoria from sigi.apps.diagnosticos.models import Diagnostico, Categoria
from sigi.apps.diagnosticos.forms import DiagnosticoMobileForm from sigi.apps.casas.models import Funcionario
from sigi.apps.diagnosticos.forms import DiagnosticoMobileForm, CasaLegislativaMobileForm, FuncionariosMobileForm
@login_required(login_url='/mobile/diagnosticos/login') @login_required(login_url='/mobile/diagnosticos/login')
@ -42,6 +43,7 @@ def categoria_detalhes(request, id_diagnostico, id_categoria):
"""Captura as perguntas da categoria """Captura as perguntas da categoria
selecionada. selecionada.
""" """
try: try:
diagnostico = Diagnostico.objects.get(pk=id_diagnostico) diagnostico = Diagnostico.objects.get(pk=id_diagnostico)
categoria = Categoria.objects.get(pk=id_categoria) categoria = Categoria.objects.get(pk=id_categoria)
@ -49,7 +51,7 @@ def categoria_detalhes(request, id_diagnostico, id_categoria):
context = RequestContext(request) context = RequestContext(request)
return render_to_response('mobile/404.html', {}) return render_to_response('mobile/404.html', {})
if request.POST: if request.method =="POST":
form = DiagnosticoMobileForm(request.POST, form = DiagnosticoMobileForm(request.POST,
instance=diagnostico, category=id_categoria) instance=diagnostico, category=id_categoria)
if form.is_valid(): if form.is_valid():
@ -62,3 +64,46 @@ def categoria_detalhes(request, id_diagnostico, id_categoria):
'diagnostico': diagnostico}) 'diagnostico': diagnostico})
return render_to_response('diagnosticos/diagnosticos_categorias_form.html', return render_to_response('diagnosticos/diagnosticos_categorias_form.html',
context) context)
def categoria_casa_legislativa(request, id_diagnostico):
try:
diagnostico = Diagnostico.objects.get(pk=id_diagnostico)
casa_legislativa = diagnostico.casa_legislativa
except Diagnostico.DoesNotExist:
context = RequestContext(request)
return render_to_response('mobile/404.html', {})
if request.method =="POST":
form = CasaLegislativaMobileForm(request.POST, instance=casa_legislativa)
if form.is_valid():
form.save()
else:
form = CasaLegislativaMobileForm(instance=casa_legislativa)
context = RequestContext(request, {'form': form, 'diagnostico': diagnostico,
'casa_legislativa': casa_legislativa})
return render_to_response('diagnosticos/diagnosticos_categoria_casa_legislativa_form.html',
context)
def categoria_contatos(request, id_diagnostico):
try:
diagnostico = Diagnostico.objects.get(pk=id_diagnostico)
casa_legislativa = diagnostico.casa_legislativa
except Diagnostico.DoesNotExist:
context = RequestContext(request)
return render_to_response('mobile/404.html', {})
funcionarios = [casa_legislativa.funcionario_set.get_or_create(setor=n) for n, l in Funcionario.SETOR_CHOICES]
if request.method == "POST":
forms = [FuncionariosMobileForm(request.POST, prefix=f.setor, instance=f) for f, c in funcionarios]
if all([form.is_valid() for form in forms]):
for form in forms:
form.save()
else:
forms = [FuncionariosMobileForm(prefix=f.setor, instance=f) for f, c in funcionarios]
context = RequestContext(request, {'forms': forms, 'diagnostico': diagnostico,
'casa_legislativa': casa_legislativa})
return render_to_response('diagnosticos/diagnosticos_categoria_contatos_form.html',
context)

1
sigi/migrations/20111125_casas_funcionario.sql

@ -9,6 +9,7 @@ CREATE TABLE "casas_funcionario" (
"email" varchar(75) NOT NULL, "email" varchar(75) NOT NULL,
"cargo" varchar(100), "cargo" varchar(100),
"funcao" varchar(100), "funcao" varchar(100),
"setor" varchar(100),
"tempo_de_servico" varchar(50) "tempo_de_servico" varchar(50)
); );
CREATE INDEX "casas_funcionario_casa_legislativa_id" ON "casas_funcionario" ("casa_legislativa_id"); CREATE INDEX "casas_funcionario_casa_legislativa_id" ON "casas_funcionario" ("casa_legislativa_id");

53
sigi/templates/diagnosticos/diagnosticos_categoria_casa_legislativa_form.html

@ -0,0 +1,53 @@
{% extends "base_mobile.html" %}
{% block media %}
{{ block.super }}
<link rel="stylesheet" href="{{MEDIA_URL}}css/diagnosticos/diagnosticos_categoria_model_form.css" />
<script src="{{MEDIA_URL}}js/diagnosticos/diagnosticos_categorias_form.js"></script>
{% endblock %}
{% block cabecalho %}
<h1>Identificação da Camara Municipal</h1>
<a href="{% url lista_categorias diagnostico.id %}" data-icon="arrow-l"
data-direction="reverse" data-theme="c" class="ui-btn-left">Voltar</a>
{% endblock cabecalho %}
{% block corpo %}
{% if form %}
<div id="waiting">
<!-- Exibe as perguntas apos o carregamento completo do javascript -->
<h2>Aguarde carregando perguntas para essa categoria...</h2>
</div>
<div id="form" style="display:none;">
<div data-role="fieldcontain">
<label class="attr">Município - UF</label>
{{ casa_legislativa.municipio }}
</div>
<div data-role="fieldcontain">
<label class="attr">Nome</label>
{{ casa_legislativa.nome }}
</div>
<form id="diagnostico" action="." method="post">
{% for field in form %}
<div data-role="fieldcontain">
<label class="attr" for="{{ field.name }}">{{ field.label }}</label>
{{ field }}
</div>
{% endfor %}
</form>
</div>
{% else %}
<h2>Nenhuma existem perguntas para essa categoria.</h2>
{% endif %}
{% endblock corpo %}
{% block rodape %}
<div data-role="footer" data-position="fixed">
<div data-role="navbar">
<ul>
<li><a href="{% url lista_categorias diagnostico.id %}" data-icon="grid" class="ui-state-persist ui-btn-active">Listar</a></li>
<li><a href="{% url lista_diagnosticos %}" data-icon="home">Home</a></li>
</ul>
</div>
</div> <!-- footer -->
{% endblock rodape %}

45
sigi/templates/diagnosticos/diagnosticos_categoria_contatos_form.html

@ -0,0 +1,45 @@
{% extends "base_mobile.html" %}
{% block media %}
{{ block.super }}
<link rel="stylesheet" href="{{MEDIA_URL}}css/diagnosticos/diagnosticos_categoria_model_form.css" />
<script src="{{MEDIA_URL}}js/diagnosticos/diagnosticos_categorias_form.js"></script>
{% endblock %}
{% block cabecalho %}
<h1>Identificação de Competências</h1>
<a href="{% url lista_categorias diagnostico.id %}" data-icon="arrow-l"
data-direction="reverse" data-theme="c" class="ui-btn-left">Voltar</a>
{% endblock cabecalho %}
{% block corpo %}
<div id="waiting">
<!-- Exibe as perguntas apos o carregamento completo do javascript -->
<h2>Aguarde carregando perguntas para essa categoria...</h2>
</div>
<div id="form" style="display:none;">
<form id="diagnostico" action="." method="post">
{% for form in forms %}
<h3>{{ form.instance.get_setor_display }}</h3>
{% for field in form %}
<div data-role="fieldcontain">
<label class="attr" for="{{ field.name }}">{{ field.label }}</label>
{{ field }}
</div>
{% endfor %}
<hr/>
{% endfor %}
</form>
</div>
{% endblock corpo %}
{% block rodape %}
<div data-role="footer" data-position="fixed">
<div data-role="navbar">
<ul>
<li><a href="{% url lista_categorias diagnostico.id %}" data-icon="grid" class="ui-state-persist ui-btn-active">Listar</a></li>
<li><a href="{% url lista_diagnosticos %}" data-icon="home">Home</a></li>
</ul>
</div>
</div> <!-- footer -->
{% endblock rodape %}

10
sigi/templates/diagnosticos/diagnosticos_categorias_list.html

@ -8,6 +8,16 @@
{% block corpo %} {% block corpo %}
{% if categorias %} {% if categorias %}
<ul data-role="listview"> <ul data-role="listview">
<li>
<a href="{% url detalhes_categoria_casa_legislativa diagnostico %}">
<h4>01. Identificação da Casa Legislativa</h4>
</a>
</li>
<li>
<a href="{% url detalhes_categoria_contatos diagnostico %}">
<h4>02. Identificação de Competências</h4>
</a>
</li>
{% for categoria in categorias %} {% for categoria in categorias %}
<li> <li>
<a href="{% url detalhes_categoria diagnostico categoria.id %}"> <a href="{% url detalhes_categoria diagnostico categoria.id %}">

Loading…
Cancel
Save