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 -*-
from django.contrib import admin
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
class EquipeInline(admin.TabularInline):
@ -26,7 +26,38 @@ class DiagnosticoAdmin(BaseEntityAdmin):
inlines = (EquipeInline, AnexosInline)
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(Pergunta, BaseSchemaAdmin)
admin.site.register(Escolha)
admin.site.register(Pergunta, PerguntaAdmin)
admin.site.register(Escolha, EscolhaAdmin)
admin.site.register(Anexo, AnexoAdmin)
admin.site.register(Categoria)

9
sigi/apps/diagnosticos/models.py

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
from datetime import datetime
from django.db import models
from django.utils.translation import ugettext_lazy as _
from sigi.apps.utils import SearchField
from eav.models import BaseChoice, BaseEntity, BaseSchema, BaseAttribute
@ -52,8 +53,9 @@ class Categoria(models.Model):
""" Modelo para representar a categoria de uma pergunta
e sua ordem na hora de exibir no formulário
"""
nome= models.CharField(max_length=50)
ordem = models.PositiveSmallIntegerField(blank=True, null=True)
nome= models.CharField(max_length=255)
def __unicode__(self):
return self.nome
class Pergunta(BaseSchema):
""" 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
"""
categoria = models.ForeignKey(Categoria,blank=True, null=True)
categoria = models.ForeignKey(Categoria)
class Meta:
verbose_name, verbose_name_plural = 'pergunta', 'perguntas'
@ -70,6 +72,7 @@ class Escolha(BaseChoice):
cadastradas neste modelo
"""
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:
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,
ParlamentarAdmin, Mandato, MandatoAdmin)
from sigi.apps.diagnosticos.admin import (Diagnostico, DiagnosticoAdmin, Pergunta,
BaseSchemaAdmin, Escolha, Anexo as AnexoDiagnostico,
AnexoAdmin as AnexoDiagnosticoAdmin)
PerguntaAdmin, Escolha, Anexo as AnexoDiagnostico,
AnexoAdmin as AnexoDiagnosticoAdmin, Categoria as
CategoriaDiagnostico)
from sigi.apps.servidores.admin import (Servidor, ServidorAdmin, Funcao, FuncaoAdmin,
Ferias, FeriasAdmin, Licenca, LicencaAdmin)
from sigi.apps.ocorrencias.admin import (Ocorrencia, OcorrenciaAdmin, Anexo as AnexoOcorrencia,
@ -93,9 +94,10 @@ default.register(Mandato, MandatoAdmin)
# sigi.apps.diagnosticos
default.register(Diagnostico, DiagnosticoAdmin)
default.register(Pergunta, BaseSchemaAdmin)
default.register(Pergunta, PerguntaAdmin)
default.register(Escolha)
default.register(AnexoDiagnostico, AnexoDiagnosticoAdmin)
default.register(CategoriaDiagnostico)
# sigi.apps.servidores
default.register(Servidor, ServidorAdmin)

Loading…
Cancel
Save