Browse Source

adicionando categoria e eav_fieldset de perguntas

diagnosticos
Felipe Vieira 13 years ago
parent
commit
44c2775b14
  1. 37
      sigi/apps/diagnosticos/admin.py
  2. 9
      sigi/apps/diagnosticos/models.py
  3. 8
      sigi/sites.py

37
sigi/apps/diagnosticos/admin.py

@ -1,7 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.contrib import admin from django.contrib import admin
from eav.admin import BaseEntityAdmin, BaseSchemaAdmin from eav.admin import BaseEntityAdmin, BaseSchemaAdmin
from sigi.apps.diagnosticos.models import Diagnostico, Pergunta, Escolha, Equipe, Anexo from sigi.apps.diagnosticos.models import Diagnostico, Pergunta, Escolha, Equipe, Anexo, Categoria
from sigi.apps.diagnosticos.forms import DiagnosticoForm from sigi.apps.diagnosticos.forms import DiagnosticoForm
class EquipeInline(admin.TabularInline): class EquipeInline(admin.TabularInline):
@ -26,7 +26,38 @@ class DiagnosticoAdmin(BaseEntityAdmin):
inlines = (EquipeInline, AnexosInline) inlines = (EquipeInline, AnexosInline)
raw_id_fields = ('casa_legislativa',) raw_id_fields = ('casa_legislativa',)
# separa as perguntas (title e name) dentro das categorias existente para ordenar
dict_categoria = {}
for pergunta in Pergunta.objects.all():
if pergunta.categoria:
categoria = pergunta.categoria.nome
else:
categoria = None
if categoria in dict_categoria.keys():
dict_categoria[categoria].append((pergunta.title.strip(), pergunta.name))
else:
dict_categoria[categoria] = [(pergunta.title.strip(), pergunta.name)]
# cria o eav fieldset ordenando as categorias e as perguntas
# para ser exibido no admin
eav_fieldsets = []
for categoria in sorted(dict_categoria.keys()):
# ordena as perguntas pelo title e utiliza o name no fieldset
perguntas = [pergunta[1] for pergunta in sorted(dict_categoria[categoria])]
eav_fieldsets.append((categoria, {
'fields': tuple(perguntas)
}))
class PerguntaAdmin (BaseSchemaAdmin):
list_display = ('title', 'categoria', 'datatype', 'help_text', 'required')
class EscolhaAdmin(admin.ModelAdmin):
list_display = ('title', 'schema')
admin.site.register(Diagnostico, DiagnosticoAdmin) admin.site.register(Diagnostico, DiagnosticoAdmin)
admin.site.register(Pergunta, BaseSchemaAdmin) admin.site.register(Pergunta, PerguntaAdmin)
admin.site.register(Escolha) admin.site.register(Escolha, EscolhaAdmin)
admin.site.register(Anexo, AnexoAdmin) admin.site.register(Anexo, AnexoAdmin)
admin.site.register(Categoria)

9
sigi/apps/diagnosticos/models.py

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from datetime import datetime from datetime import datetime
from django.db import models from django.db import models
from django.utils.translation import ugettext_lazy as _
from sigi.apps.utils import SearchField from sigi.apps.utils import SearchField
from eav.models import BaseChoice, BaseEntity, BaseSchema, BaseAttribute from eav.models import BaseChoice, BaseEntity, BaseSchema, BaseAttribute
@ -52,8 +53,9 @@ class Categoria(models.Model):
""" Modelo para representar a categoria de uma pergunta """ Modelo para representar a categoria de uma pergunta
e sua ordem na hora de exibir no formulário e sua ordem na hora de exibir no formulário
""" """
nome= models.CharField(max_length=50) nome= models.CharField(max_length=255)
ordem = models.PositiveSmallIntegerField(blank=True, null=True) def __unicode__(self):
return self.nome
class Pergunta(BaseSchema): class Pergunta(BaseSchema):
""" Modelo que representa uma pergunta no questionário """ Modelo que representa uma pergunta no questionário
@ -61,7 +63,7 @@ class Pergunta(BaseSchema):
Uma pergunta tem o nome e o tipo da resposta Uma pergunta tem o nome e o tipo da resposta
""" """
categoria = models.ForeignKey(Categoria,blank=True, null=True) categoria = models.ForeignKey(Categoria)
class Meta: class Meta:
verbose_name, verbose_name_plural = 'pergunta', 'perguntas' verbose_name, verbose_name_plural = 'pergunta', 'perguntas'
@ -70,6 +72,7 @@ class Escolha(BaseChoice):
cadastradas neste modelo cadastradas neste modelo
""" """
schema = models.ForeignKey(Pergunta, related_name='choices', verbose_name='pergunta') schema = models.ForeignKey(Pergunta, related_name='choices', verbose_name='pergunta')
schema_to_open = models.ForeignKey(Pergunta, related_name='', verbose_name='pergunta para abrir', blank=True, null=True)
class Meta: class Meta:
verbose_name, verbose_name_plural = 'escolha', 'escolhas' verbose_name, verbose_name_plural = 'escolha', 'escolhas'

8
sigi/sites.py

@ -24,8 +24,9 @@ from sigi.apps.mesas.admin import (Legislatura, LegislaturaAdmin, Coligacao,
from sigi.apps.parlamentares.admin import (Partido, PartidoAdmin, Parlamentar, from sigi.apps.parlamentares.admin import (Partido, PartidoAdmin, Parlamentar,
ParlamentarAdmin, Mandato, MandatoAdmin) ParlamentarAdmin, Mandato, MandatoAdmin)
from sigi.apps.diagnosticos.admin import (Diagnostico, DiagnosticoAdmin, Pergunta, from sigi.apps.diagnosticos.admin import (Diagnostico, DiagnosticoAdmin, Pergunta,
BaseSchemaAdmin, Escolha, Anexo as AnexoDiagnostico, PerguntaAdmin, Escolha, Anexo as AnexoDiagnostico,
AnexoAdmin as AnexoDiagnosticoAdmin) AnexoAdmin as AnexoDiagnosticoAdmin, Categoria as
CategoriaDiagnostico)
from sigi.apps.servidores.admin import (Servidor, ServidorAdmin, Funcao, FuncaoAdmin, from sigi.apps.servidores.admin import (Servidor, ServidorAdmin, Funcao, FuncaoAdmin,
Ferias, FeriasAdmin, Licenca, LicencaAdmin) Ferias, FeriasAdmin, Licenca, LicencaAdmin)
from sigi.apps.ocorrencias.admin import (Ocorrencia, OcorrenciaAdmin, Anexo as AnexoOcorrencia, from sigi.apps.ocorrencias.admin import (Ocorrencia, OcorrenciaAdmin, Anexo as AnexoOcorrencia,
@ -93,9 +94,10 @@ default.register(Mandato, MandatoAdmin)
# sigi.apps.diagnosticos # sigi.apps.diagnosticos
default.register(Diagnostico, DiagnosticoAdmin) default.register(Diagnostico, DiagnosticoAdmin)
default.register(Pergunta, BaseSchemaAdmin) default.register(Pergunta, PerguntaAdmin)
default.register(Escolha) default.register(Escolha)
default.register(AnexoDiagnostico, AnexoDiagnosticoAdmin) default.register(AnexoDiagnostico, AnexoDiagnosticoAdmin)
default.register(CategoriaDiagnostico)
# sigi.apps.servidores # sigi.apps.servidores
default.register(Servidor, ServidorAdmin) default.register(Servidor, ServidorAdmin)

Loading…
Cancel
Save