mirror of https://github.com/interlegis/sigi.git
Felipe Vieira
13 years ago
14 changed files with 560 additions and 2 deletions
@ -0,0 +1,32 @@ |
|||
# -*- 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.forms import DiagnosticoForm |
|||
|
|||
class EquipeInline(admin.TabularInline): |
|||
model = Equipe |
|||
extra = 4 |
|||
|
|||
class AnexosInline(admin.TabularInline): |
|||
model = Anexo |
|||
extra = 2 |
|||
exclude = ['data_pub',] |
|||
|
|||
class AnexoAdmin(admin.ModelAdmin): |
|||
date_hierarchy = 'data_pub' |
|||
exclude = ['data_pub',] |
|||
list_display = ('arquivo', 'descricao', 'data_pub', 'diagnostico') |
|||
raw_id_fields = ('diagnostico',) |
|||
search_fields = ('descricao', 'diagnostico__id', 'arquivo', |
|||
'diagnostico__casa_legislativa__nome') |
|||
|
|||
class DiagnosticoAdmin(BaseEntityAdmin): |
|||
form = DiagnosticoForm |
|||
inlines = (EquipeInline, AnexosInline) |
|||
raw_id_fields = ('casa_legislativa',) |
|||
|
|||
admin.site.register(Diagnostico, DiagnosticoAdmin) |
|||
admin.site.register(Pergunta, BaseSchemaAdmin) |
|||
admin.site.register(Escolha) |
|||
admin.site.register(Anexo, AnexoAdmin) |
@ -0,0 +1,5 @@ |
|||
from models import Diagnostico |
|||
from eav.forms import BaseDynamicEntityForm |
|||
|
|||
class DiagnosticoForm(BaseDynamicEntityForm): |
|||
model = Diagnostico |
@ -0,0 +1,90 @@ |
|||
# -*- coding: utf-8 -*- |
|||
from datetime import datetime |
|||
from django.db import models |
|||
from sigi.apps.utils import SearchField |
|||
from eav.models import BaseChoice, BaseEntity, BaseSchema, BaseAttribute |
|||
|
|||
class Diagnostico(BaseEntity): |
|||
casa_legislativa = models.ForeignKey( |
|||
'casas.CasaLegislativa', |
|||
verbose_name='Casa Legislativa' |
|||
) |
|||
search_text = SearchField(field_names=['casa_legislativa']) |
|||
casa_legislativa.convenio_uf_filter = True |
|||
casa_legislativa.convenio_cl_tipo_filter = True |
|||
data_visita = models.DateField( |
|||
'data da visita', |
|||
null=True, |
|||
blank=True, |
|||
) |
|||
data_questionario = models.DateField( |
|||
'data do questionario', |
|||
null=True, |
|||
blank=True, |
|||
help_text='Convênio firmado.' |
|||
) |
|||
data_relatorio_questionario = models.DateField( |
|||
'data do relatório do questionario', |
|||
null=True, |
|||
blank=True |
|||
) |
|||
data_termo_aceite = models.DateField( |
|||
'Equipadas', |
|||
null=True, |
|||
blank=True, |
|||
help_text='Equipamentos recebidos.' |
|||
) |
|||
class Meta: |
|||
verbose_name, verbose_name_plural = u'diagnóstico', u'diagnósticos' |
|||
|
|||
@classmethod |
|||
def get_schemata_for_model(self): |
|||
return Pergunta.objects.all() |
|||
|
|||
def __unicode__(self): |
|||
return str(self.casa_legislativa) |
|||
|
|||
class Categoria(models.Model): |
|||
nome= models.CharField(max_length=50) |
|||
ordem = models.PositiveSmallIntegerField(blank=True, null=True) |
|||
|
|||
class Pergunta(BaseSchema): |
|||
categoria = models.ForeignKey(Categoria) |
|||
ordem = models.PositiveSmallIntegerField(blank=True, null=True) |
|||
class Meta: |
|||
verbose_name, verbose_name_plural = 'pergunta', 'perguntas' |
|||
|
|||
class Escolha(BaseChoice): |
|||
schema = models.ForeignKey(Pergunta, related_name='choices', verbose_name='pergunta') |
|||
class Meta: |
|||
verbose_name, verbose_name_plural = 'escolha', 'escolhas' |
|||
|
|||
class Resposta(BaseAttribute): |
|||
schema = models.ForeignKey(Pergunta, related_name='attrs', verbose_name='pergunta') |
|||
choice = models.ForeignKey(Escolha, verbose_name='escolha', blank=True, null=True) |
|||
class Meta: |
|||
verbose_name, verbose_name_plural = 'resposta', 'respostas' |
|||
|
|||
class Equipe(models.Model): |
|||
diagnostico = models.ForeignKey(Diagnostico) |
|||
membro = models.ForeignKey('servidores.Servidor') |
|||
is_chefe = models.BooleanField() |
|||
|
|||
def __unicode__(self): |
|||
return str(self.id) |
|||
|
|||
class Anexo(models.Model): |
|||
diagnostico = models.ForeignKey(Diagnostico, verbose_name=u'diagnóstico') |
|||
arquivo = models.FileField(upload_to='apps/diagnostico/anexo/arquivo',) |
|||
descricao = models.CharField('descrição', max_length='70') |
|||
data_pub = models.DateTimeField( |
|||
'data da publicação do anexo', |
|||
default=datetime.now |
|||
) |
|||
|
|||
class Meta: |
|||
ordering = ('-data_pub',) |
|||
|
|||
def __unicode__(self): |
|||
return unicode(self.arquivo.name) |
|||
|
@ -0,0 +1,29 @@ |
|||
# -*- coding: utf-8 -*- |
|||
from django.contrib import admin |
|||
from eav.admin import BaseEntityAdmin, BaseSchemaAdmin |
|||
from sigi.apps.ocorrencias.models import Ocorrencia, Comentario, Anexo, Categoria |
|||
|
|||
class ComentarioInline(admin.TabularInline): |
|||
model = Comentario |
|||
extra = 1 |
|||
|
|||
class AnexosInline(admin.TabularInline): |
|||
model = Anexo |
|||
extra = 2 |
|||
exclude = ['data_pub',] |
|||
|
|||
class AnexoAdmin(admin.ModelAdmin): |
|||
date_hierarchy = 'data_pub' |
|||
exclude = ['data_pub',] |
|||
list_display = ('arquivo', 'descricao', 'data_pub', 'ocorrencia') |
|||
raw_id_fields = ('ocorrencia',) |
|||
search_fields = ('descricao', 'ocorrencia__id', 'arquivo', |
|||
'ocorrencia__casa_legislativa__nome') |
|||
|
|||
class OcorrenciaAdmin(BaseEntityAdmin): |
|||
inlines = (ComentarioInline, AnexosInline) |
|||
raw_id_fields = ('casa_legislativa',) |
|||
|
|||
admin.site.register(Ocorrencia, OcorrenciaAdmin) |
|||
admin.site.register(Anexo, AnexoAdmin) |
|||
admin.site.register(Categoria) |
@ -0,0 +1,83 @@ |
|||
# -*- coding: utf-8 -*- |
|||
from django.db import models |
|||
from datetime import datetime |
|||
from django.db import models |
|||
from sigi.apps.utils import SearchField |
|||
from eav.models import BaseChoice, BaseEntity, BaseSchema, BaseAttribute |
|||
|
|||
class Categoria(models.Model): |
|||
nome= models.CharField(max_length=50) |
|||
descricao = models.TextField('descrição', blank=True, null=True) |
|||
|
|||
def __unicode__(self): |
|||
return str(self.nome) |
|||
|
|||
class Ocorrencia(models.Model): |
|||
casa_legislativa = models.ForeignKey( |
|||
'casas.CasaLegislativa', |
|||
verbose_name='Casa Legislativa' |
|||
) |
|||
search_text = SearchField(field_names=['casa_legislativa']) |
|||
casa_legislativa.convenio_uf_filter = True |
|||
casa_legislativa.convenio_cl_tipo_filter = True |
|||
data_criacao = models.DateField( |
|||
'data de criacao', |
|||
null=True, |
|||
blank=True, |
|||
) |
|||
|
|||
data_modificacao = models.DateField( |
|||
u'data de modificação', |
|||
null=True, |
|||
blank=True, |
|||
) |
|||
|
|||
|
|||
STATUS_CHOICES = ( |
|||
(1, 'Aberto'), |
|||
(2, 'Reaberto'), |
|||
(3, 'Resolvido'), |
|||
(4, 'Fechado'), |
|||
(5, 'Duplicado'), |
|||
) |
|||
|
|||
PRIORITY_CHOICES = ( |
|||
(1, u'Altíssimo'), |
|||
(2, 'Alto'), |
|||
(3, 'Normal'), |
|||
(4, 'Baixo'), |
|||
(5, u'Baixíssimo'), |
|||
) |
|||
|
|||
categoria = models.ForeignKey(Categoria) |
|||
assunto = models.CharField(max_length=200) |
|||
status = models.IntegerField(choices=STATUS_CHOICES, default=1, blank=1) |
|||
prioridade = models.IntegerField(choices=PRIORITY_CHOICES, default=3, blank=3) |
|||
descricao = models.TextField(u'descirção', blank=True, null=True) |
|||
resolucao = models.TextField(u'resolução', blank=True, null=True) |
|||
responsavel = models.ForeignKey('servidores.Servidor', blank=True, null=True, verbose_name=u'responsável') |
|||
|
|||
class Meta: |
|||
verbose_name, verbose_name_plural = u'ocorrência', u'ocorrências' |
|||
|
|||
class Comentario(models.Model): |
|||
ocorrencia = models.ForeignKey(Ocorrencia, verbose_name=u'ocorrência') |
|||
data_criacao = models.DateTimeField(u'data de criação', default = datetime.now()) |
|||
descricao = models.TextField(u'descirção', blank=True, null=True) |
|||
usuario = models.ForeignKey('servidores.Servidor', blank=True, null=True, verbose_name=u'usuário') |
|||
|
|||
class Anexo(models.Model): |
|||
ocorrencia = models.ForeignKey(Ocorrencia, verbose_name=u'ocorrência') |
|||
arquivo = models.FileField(upload_to='apps/ocorrencia/anexo/arquivo',) |
|||
descricao = models.CharField('descrição', max_length='70') |
|||
data_pub = models.DateTimeField( |
|||
'data da publicação do anexo', |
|||
default=datetime.now |
|||
) |
|||
|
|||
class Meta: |
|||
ordering = ('-data_pub',) |
|||
|
|||
def __unicode__(self): |
|||
return unicode(self.arquivo.name) |
|||
|
@ -0,0 +1,63 @@ |
|||
# -*- coding: utf-8 -*- |
|||
from django.contrib import admin |
|||
from django.contrib.contenttypes import generic |
|||
from sigi.apps.servidores.models import Servidor, Funcao, Licenca, Ferias |
|||
from sigi.apps.contatos.models import Endereco, Telefone |
|||
|
|||
class FuncaoInline(admin.TabularInline): |
|||
model = Funcao |
|||
extra = 1 |
|||
|
|||
class FuncaoAdmin(admin.ModelAdmin): |
|||
list_display = ('servidor', 'funcao', 'cargo','inicio_funcao', 'fim_funcao') |
|||
list_filter = ('inicio_funcao', 'fim_funcao') |
|||
search_fields = ('funcao', 'cargo', 'descricao', |
|||
'servidor__nome_completo', 'servidor__obs', 'servidor__apontamentos', |
|||
'servidor__user__email', 'servidor__user__first_name', |
|||
'servidor__user__last_name', 'servidor__user__username') |
|||
|
|||
class FeriasInline(admin.TabularInline): |
|||
model = Ferias |
|||
extra = 1 |
|||
|
|||
class FeriasAdmin(admin.ModelAdmin): |
|||
list_display = ('servidor', 'inicio_ferias', 'fim_ferias') |
|||
list_filter = ('servidor', 'inicio_ferias', 'fim_ferias') |
|||
search_fields = ('obs', |
|||
'servidor__nome_completo', 'servidor__obs', 'servidor__apontamentos', |
|||
'servidor__user__email', 'servidor__user__first_name', |
|||
'servidor__user__last_name', 'servidor__user__username') |
|||
|
|||
class LicencaInline(admin.TabularInline): |
|||
model = Licenca |
|||
extra = 1 |
|||
|
|||
class LicencaAdmin(admin.ModelAdmin): |
|||
list_display = ('servidor', 'inicio_licenca', 'fim_licenca') |
|||
list_filter = ('servidor', 'inicio_licenca', 'fim_licenca') |
|||
search_fields = ('obs', |
|||
'servidor__nome_completo', 'servidor__obs', 'servidor__apontamentos', |
|||
'servidor__user__email', 'servidor__user__first_name', |
|||
'servidor__user__last_name', 'servidor__user__username') |
|||
|
|||
class EnderecoInline(generic.GenericTabularInline): |
|||
model = Endereco |
|||
extra = 1 |
|||
raw_id_fields = ('municipio',) |
|||
|
|||
class TelefonesInline(generic.GenericTabularInline): |
|||
extra = 1 |
|||
model = Telefone |
|||
|
|||
class ServidorAdmin(admin.ModelAdmin): |
|||
list_display = ('nome_completo', 'servico') |
|||
list_filter = ('sexo', 'servico') |
|||
search_fields = ('nome_completo', 'obs', 'apontamentos', |
|||
'user__email', 'user__first_name', |
|||
'user__last_name', 'user__username') |
|||
inlines= (EnderecoInline, TelefonesInline) |
|||
|
|||
admin.site.register(Servidor, ServidorAdmin) |
|||
admin.site.register(Funcao, FuncaoAdmin) |
|||
admin.site.register(Ferias, FeriasAdmin) |
|||
admin.site.register(Licenca, LicencaAdmin) |
@ -0,0 +1,141 @@ |
|||
# -*- coding: utf-8 -*- |
|||
from django.db import models |
|||
from django.contrib.contenttypes import generic |
|||
from django.contrib.auth.models import User |
|||
|
|||
class Subsecretaria(models.Model): |
|||
nome = models.CharField(max_length=50) |
|||
sigla = models.CharField(max_length=10) |
|||
#responsavel = models.ForeignKey('servidores.Servidor') |
|||
|
|||
class Meta: |
|||
ordering = ('nome',) |
|||
|
|||
def __unicode__(self): |
|||
return '%s (%s)' % (unicode(self.nome), unicode(self.sigla)) |
|||
|
|||
class Servico(models.Model): |
|||
nome = models.CharField(max_length=50) |
|||
sigla = models.CharField(max_length=10) |
|||
subsecretaria = models.ForeignKey(Subsecretaria) |
|||
#responsavel = models.ForeignKey('servidores.Servidor') |
|||
|
|||
class Meta: |
|||
ordering = ('nome',) |
|||
verbose_name = 'serviço' |
|||
verbose_name_plural = 'serviços' |
|||
|
|||
def __unicode__(self): |
|||
return '%s (%s)' % (unicode(self.nome), unicode(self.sigla)) |
|||
|
|||
class Servidor(models.Model): |
|||
SEXO_CHOICES = ( |
|||
('M', u'Masculino'), |
|||
('F', u'Feminino'), |
|||
) |
|||
TURNO_CHOICES = ( |
|||
('M', u'Manhã'), |
|||
('T', u'Tarde'), |
|||
('N', u'Noite'), |
|||
) |
|||
nome_completo = models.CharField(max_length=128) |
|||
nome_completo.alphabetic_filter = True |
|||
user = models.ForeignKey(User, unique=True) |
|||
apelido = models.CharField(max_length=50, blank=True) |
|||
foto = models.ImageField( |
|||
upload_to='fotos/servidores', |
|||
width_field='foto_largura', |
|||
height_field='foto_altura', |
|||
blank=True |
|||
) |
|||
foto_largura = models.SmallIntegerField(editable=False, null=True) |
|||
foto_altura = models.SmallIntegerField(editable=False, null=True) |
|||
sexo = models.CharField( |
|||
max_length=1, |
|||
choices=SEXO_CHOICES, |
|||
blank=True, |
|||
null=True, |
|||
) |
|||
data_nascimento = models.DateField( |
|||
'data de nascimento', |
|||
blank=True, |
|||
null=True, |
|||
) |
|||
email = models.EmailField('e-mail', blank=True, null=True) |
|||
servico = models.ForeignKey(Servico, blank=True, null=True) |
|||
is_chefe = models.BooleanField() |
|||
matricula = models.CharField(u'matrícula', max_length=25, blank=True, null=True) |
|||
turno= models.CharField( |
|||
max_length=1, |
|||
choices=TURNO_CHOICES, |
|||
blank=True, |
|||
null=True, |
|||
) |
|||
data_entrada = models.DateField(u'data de entrada', blank=True, null=True) |
|||
data_saida = models.DateField(u'data de saída', blank=True, null=True) |
|||
data_nomeacao = models.DateField(u'data de nomeação', blank=True, null=True) |
|||
ato_exoneracao = models.CharField(u'ato de exoneração',max_length=150, blank=True, null=True) |
|||
cpf = models.CharField('CPF', max_length=11, blank=True, null=True) |
|||
rg = models.CharField('RG', max_length=25, blank=True, null=True) |
|||
obs = models.TextField(u'observação', blank=True, null=True) |
|||
apontamentos = models.TextField(u'apontamentos', blank=True, null=True) |
|||
|
|||
#endereco = models.ForeignKey('contatos.Endereco', blank=True, null=True) |
|||
endereco = generic.GenericRelation('contatos.Endereco') |
|||
telefones = generic.GenericRelation('contatos.Telefone') |
|||
ramal = models.IntegerField('ramal', blank=True, null=True) |
|||
|
|||
class Meta: |
|||
ordering = ('nome_completo',) |
|||
verbose_name_plural = 'servidores' |
|||
|
|||
def __unicode__(self): |
|||
return self.nome_completo |
|||
|
|||
class Funcao(models.Model): |
|||
servidor = models.ForeignKey(Servidor) |
|||
funcao = models.CharField(max_length=50) |
|||
cargo = models.CharField(max_length=50, blank=True, null=True) |
|||
inicio_funcao = models.DateField(u'início da função') |
|||
fim_funcao = models.DateField(u'fim da função', blank=True, null=True) |
|||
descricao = models.TextField(u'descrição', blank=True, null=True) |
|||
|
|||
bap_entrada = models.CharField('BAP de entrada',max_length=50, blank=True, null=True) |
|||
data_bap_entrada = models.DateField('data BAP de entrada', blank=True, null=True) |
|||
|
|||
bap_saida = models.CharField(u'BAP de saída',max_length=50, blank=True, null=True) |
|||
data_bap_saida = models.DateField(u'data BAP de saída', blank=True, null=True) |
|||
|
|||
class Meta: |
|||
verbose_name = u'função' |
|||
verbose_name_plural = u'funções' |
|||
|
|||
def __unicode__(self): |
|||
return str(self.id) |
|||
|
|||
|
|||
class Licenca(models.Model): |
|||
servidor = models.ForeignKey(Servidor) |
|||
inicio_licenca = models.DateField(u'início da licença') |
|||
fim_licenca = models.DateField(u'fim da licença') |
|||
obs = models.TextField(u'observação', blank=True, null=True) |
|||
|
|||
class Meta: |
|||
verbose_name = u'licença' |
|||
verbose_name_plural = u'licenças' |
|||
|
|||
def __unicode__(self): |
|||
return str(self.id) |
|||
|
|||
class Ferias(models.Model): |
|||
servidor = models.ForeignKey(Servidor) |
|||
inicio_ferias = models.DateField(u'início das férias') |
|||
fim_ferias = models.DateField(u'fim das férias') |
|||
obs = models.TextField(u'observação', blank=True, null=True) |
|||
|
|||
class Meta: |
|||
verbose_name = u'férias' |
|||
verbose_name_plural = u'férias' |
|||
|
|||
def __unicode__(self): |
|||
return str(self.id) |
Loading…
Reference in new issue