From 1c6defce0bb4621fb78711ad064b5e995c0f29ac Mon Sep 17 00:00:00 2001 From: Felipe Vieira Date: Wed, 30 Nov 2011 18:37:36 +0000 Subject: [PATCH] Categoria de informacao de casa legislativa e respectivos contatos --- .../diagnosticos_categoria_model_form.css | 4 ++ sigi/apps/casas/models.py | 13 +++++ sigi/apps/diagnosticos/forms.py | 17 ++++-- sigi/apps/diagnosticos/urls.py | 12 ++++- sigi/apps/diagnosticos/views.py | 49 ++++++++++++++++- .../migrations/20111125_casas_funcionario.sql | 1 + ...ticos_categoria_casa_legislativa_form.html | 53 +++++++++++++++++++ .../diagnosticos_categoria_contatos_form.html | 45 ++++++++++++++++ .../diagnosticos_categorias_list.html | 10 ++++ 9 files changed, 198 insertions(+), 6 deletions(-) create mode 100644 media/css/diagnosticos/diagnosticos_categoria_model_form.css create mode 100644 sigi/templates/diagnosticos/diagnosticos_categoria_casa_legislativa_form.html create mode 100644 sigi/templates/diagnosticos/diagnosticos_categoria_contatos_form.html diff --git a/media/css/diagnosticos/diagnosticos_categoria_model_form.css b/media/css/diagnosticos/diagnosticos_categoria_model_form.css new file mode 100644 index 0000000..99e381c --- /dev/null +++ b/media/css/diagnosticos/diagnosticos_categoria_model_form.css @@ -0,0 +1,4 @@ +label.attr { + display: inline-block; + width: 100px; +} diff --git a/sigi/apps/casas/models.py b/sigi/apps/casas/models.py index 1bf1c68..03a260b 100644 --- a/sigi/apps/casas/models.py +++ b/sigi/apps/casas/models.py @@ -79,6 +79,17 @@ class Funcionario(models.Model): """ Modelo para registrar contatos vinculados às 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) nome = models.CharField('nome completo', max_length=60) nome.alphabetic_filter = True @@ -88,6 +99,7 @@ class Funcionario(models.Model): endereco = generic.GenericRelation('contatos.Endereco') cargo = models.CharField(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) class Meta: @@ -112,4 +124,5 @@ class Presidente(Funcionario): def save(self, *args, **kwargs): self.cargo = 'Presidente' + self.setor = 'presidencia' return super(Presidente, self).save(*args, **kwargs) diff --git a/sigi/apps/diagnosticos/forms.py b/sigi/apps/diagnosticos/forms.py index 1bf15df..dab2281 100644 --- a/sigi/apps/diagnosticos/forms.py +++ b/sigi/apps/diagnosticos/forms.py @@ -1,12 +1,12 @@ # -*- coding: utf8 -*- from copy import deepcopy - -from models import Diagnostico +from django import forms 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 - class DiagnosticoForm(BaseDynamicEntityForm): """Classe responsável por contruir o formulário, 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 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') diff --git a/sigi/apps/diagnosticos/urls.py b/sigi/apps/diagnosticos/urls.py index 6f40dda..b9bc720 100644 --- a/sigi/apps/diagnosticos/urls.py +++ b/sigi/apps/diagnosticos/urls.py @@ -18,7 +18,17 @@ urlpatterns = patterns('', # Lista de Categorias url(r'^(?P\d+)/categorias/$', 'sigi.apps.diagnosticos.views.categorias', name='lista_categorias'), - # Detalhes da Categoria + # Detalhes da Categoria da Casa Legislativa + url(r'^(?P\d+)/categorias/1/$', + 'sigi.apps.diagnosticos.views.categoria_casa_legislativa', + name='detalhes_categoria_casa_legislativa'), + + # Detalhes da Categoria de Contatos + url(r'^(?P\d+)/categorias/2/$', + 'sigi.apps.diagnosticos.views.categoria_contatos', + name='detalhes_categoria_contatos'), + + # Detalhes de Categorias Dinamicas url(r'^(?P\d+)/categorias/(?P\d+)/$', 'sigi.apps.diagnosticos.views.categoria_detalhes', name='detalhes_categoria'), diff --git a/sigi/apps/diagnosticos/views.py b/sigi/apps/diagnosticos/views.py index 6b153ed..fbdcd7e 100644 --- a/sigi/apps/diagnosticos/views.py +++ b/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.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') @@ -42,6 +43,7 @@ def categoria_detalhes(request, id_diagnostico, id_categoria): """Captura as perguntas da categoria selecionada. """ + try: diagnostico = Diagnostico.objects.get(pk=id_diagnostico) categoria = Categoria.objects.get(pk=id_categoria) @@ -49,7 +51,7 @@ def categoria_detalhes(request, id_diagnostico, id_categoria): context = RequestContext(request) return render_to_response('mobile/404.html', {}) - if request.POST: + if request.method =="POST": form = DiagnosticoMobileForm(request.POST, instance=diagnostico, category=id_categoria) if form.is_valid(): @@ -62,3 +64,46 @@ def categoria_detalhes(request, id_diagnostico, id_categoria): 'diagnostico': diagnostico}) return render_to_response('diagnosticos/diagnosticos_categorias_form.html', 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) diff --git a/sigi/migrations/20111125_casas_funcionario.sql b/sigi/migrations/20111125_casas_funcionario.sql index cc8fcff..cc4eb1b 100644 --- a/sigi/migrations/20111125_casas_funcionario.sql +++ b/sigi/migrations/20111125_casas_funcionario.sql @@ -9,6 +9,7 @@ CREATE TABLE "casas_funcionario" ( "email" varchar(75) NOT NULL, "cargo" varchar(100), "funcao" varchar(100), + "setor" varchar(100), "tempo_de_servico" varchar(50) ); CREATE INDEX "casas_funcionario_casa_legislativa_id" ON "casas_funcionario" ("casa_legislativa_id"); diff --git a/sigi/templates/diagnosticos/diagnosticos_categoria_casa_legislativa_form.html b/sigi/templates/diagnosticos/diagnosticos_categoria_casa_legislativa_form.html new file mode 100644 index 0000000..68cc4ea --- /dev/null +++ b/sigi/templates/diagnosticos/diagnosticos_categoria_casa_legislativa_form.html @@ -0,0 +1,53 @@ +{% extends "base_mobile.html" %} + +{% block media %} + {{ block.super }} + + +{% endblock %} + +{% block cabecalho %} +

Identificação da Camara Municipal

+ Voltar +{% endblock cabecalho %} + +{% block corpo %} + {% if form %} +
+ +

Aguarde carregando perguntas para essa categoria...

+
+ + {% else %} +

Nenhuma existem perguntas para essa categoria.

+ {% endif %} +{% endblock corpo %} + +{% block rodape %} +
+
+ +
+
+{% endblock rodape %} diff --git a/sigi/templates/diagnosticos/diagnosticos_categoria_contatos_form.html b/sigi/templates/diagnosticos/diagnosticos_categoria_contatos_form.html new file mode 100644 index 0000000..24b883a --- /dev/null +++ b/sigi/templates/diagnosticos/diagnosticos_categoria_contatos_form.html @@ -0,0 +1,45 @@ +{% extends "base_mobile.html" %} + +{% block media %} + {{ block.super }} + + +{% endblock %} + +{% block cabecalho %} +

Identificação de Competências

+ Voltar +{% endblock cabecalho %} + +{% block corpo %} +
+ +

Aguarde carregando perguntas para essa categoria...

+
+ +{% endblock corpo %} + +{% block rodape %} +
+
+ +
+
+{% endblock rodape %} diff --git a/sigi/templates/diagnosticos/diagnosticos_categorias_list.html b/sigi/templates/diagnosticos/diagnosticos_categorias_list.html index 0d58bd0..8912c27 100644 --- a/sigi/templates/diagnosticos/diagnosticos_categorias_list.html +++ b/sigi/templates/diagnosticos/diagnosticos_categorias_list.html @@ -8,6 +8,16 @@ {% block corpo %} {% if categorias %}