Browse Source

Fix #44

pull/66/head
Sesostris Vieira 4 years ago
parent
commit
883e15b2d4
  1. 3
      sigi/apps/convenios/admin.py
  2. 34
      sigi/apps/convenios/migrations/0008_auto_20210422_1907.py
  3. 27
      sigi/apps/convenios/models.py
  4. 98
      sigi/apps/servidores/admin.py
  5. 109
      sigi/apps/servidores/migrations/0003_auto_20210422_1729.py
  6. 27
      sigi/apps/servidores/migrations/0004_auto_20210422_1907.py
  7. 200
      sigi/apps/servidores/models.py
  8. 51
      sigi/apps/servidores/templates/servidores/servidores_por_cargo.html
  9. 51
      sigi/apps/servidores/templates/servidores/servidores_por_funcao.html
  10. 11
      sigi/apps/servidores/urls.py
  11. 34
      sigi/apps/servidores/views.py
  12. 1
      sigi/urls.py

3
sigi/apps/convenios/admin.py

@ -53,6 +53,9 @@ class ConvenioAdmin(BaseModelAdmin):
{'fields': ('data_solicitacao', 'data_sigad', 'tipo_solicitacao', {'fields': ('data_solicitacao', 'data_sigad', 'tipo_solicitacao',
'status', 'acompanha', 'observacao',)} 'status', 'acompanha', 'observacao',)}
), ),
(_(u"Gestão do convênio"),
{'fields': ('servico_gestao', 'servidor_gestao',)}
),
(_(u'Datas'), (_(u'Datas'),
{'fields': ('data_retorno_assinatura', 'duracao', {'fields': ('data_retorno_assinatura', 'duracao',
'data_pub_diario',)} 'data_pub_diario',)}

34
sigi/apps/convenios/migrations/0008_auto_20210422_1907.py

@ -0,0 +1,34 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('servidores', '0004_auto_20210422_1907'),
('convenios', '0007_auto_20210416_0918'),
]
operations = [
migrations.AddField(
model_name='convenio',
name='servico_gestao',
field=models.ForeignKey(related_name='convenios_geridos', on_delete=django.db.models.deletion.SET_NULL, verbose_name='servi\xe7o de gest\xe3o', blank=True, to='servidores.Servico', null=True),
preserve_default=True,
),
migrations.AddField(
model_name='convenio',
name='servidor_gestao',
field=models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, verbose_name='servidor de gest\xe3o', blank=True, to='servidores.Servidor', null=True),
preserve_default=True,
),
migrations.AlterField(
model_name='convenio',
name='acompanha',
field=models.ForeignKey(related_name='convenios_acompanhados', on_delete=django.db.models.deletion.SET_NULL, verbose_name='acompanhado por', blank=True, to='servidores.Servidor', null=True),
preserve_default=True,
),
]

27
sigi/apps/convenios/models.py

@ -4,7 +4,7 @@ from datetime import datetime, date
from django.db import models from django.db import models
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from sigi.apps.utils import SearchField from sigi.apps.utils import SearchField
from sigi.apps.servidores.models import Servidor from sigi.apps.servidores.models import Servidor, Servico
class Projeto(models.Model): class Projeto(models.Model):
""" Modelo para representar os projetos do programa """ Modelo para representar os projetos do programa
@ -40,15 +40,6 @@ class TipoSolicitacao(models.Model):
return self.nome return self.nome
class Convenio(models.Model): class Convenio(models.Model):
""" Modelo que representa um convênio do Interlegis
com uma Casa Legislativa.
Uma Casa Legislativa pode não ter um convênio e sim
apenas uma adesão com o Interlegis, isto é,
não tem compromissos direto com o Interlegis apenas
um pacto de colaboração entre as partes
"""
casa_legislativa = models.ForeignKey( casa_legislativa = models.ForeignKey(
'casas.Orgao', 'casas.Orgao',
on_delete=models.PROTECT, on_delete=models.PROTECT,
@ -105,6 +96,7 @@ class Convenio(models.Model):
acompanha = models.ForeignKey( acompanha = models.ForeignKey(
Servidor, Servidor,
on_delete=models.SET_NULL, on_delete=models.SET_NULL,
related_name='convenios_acompanhados',
verbose_name=_(u"acompanhado por"), verbose_name=_(u"acompanhado por"),
null=True, null=True,
blank=True blank=True
@ -114,6 +106,21 @@ class Convenio(models.Model):
null=True, null=True,
blank=True, blank=True,
) )
servico_gestao = models.ForeignKey(
Servico,
on_delete=models.SET_NULL,
null=True,
blank=True,
related_name='convenios_geridos',
verbose_name=_(u"serviço de gestão")
)
servidor_gestao = models.ForeignKey(
Servidor,
on_delete=models.SET_NULL,
null=True,
blank=True,
verbose_name=_(u"servidor de gestão")
)
data_adesao = models.DateField( data_adesao = models.DateField(
_(u'aderidas'), _(u'aderidas'),
null=True, null=True,

98
sigi/apps/servidores/admin.py

@ -4,90 +4,30 @@ from django.contrib.contenttypes import generic
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from sigi.apps.contatos.models import Endereco, Telefone from sigi.apps.contatos.models import Endereco, Telefone
from sigi.apps.servidores.forms import FeriasForm, LicencaForm, FuncaoForm from sigi.apps.servidores.models import Servidor, Servico
from sigi.apps.servidores.models import Servidor, Funcao, Licenca, Ferias, Servico, Subsecretaria
from sigi.apps.utils.admin_widgets import AdminImageWidget from sigi.apps.utils.admin_widgets import AdminImageWidget
from sigi.apps.utils.base_admin import BaseModelAdmin from sigi.apps.utils.base_admin import BaseModelAdmin
from sigi.apps.utils.filters import AlphabeticFilter from sigi.apps.utils.filters import AlphabeticFilter
class FuncaoAdmin(BaseModelAdmin):
form = FuncaoForm
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 FeriasAdmin(BaseModelAdmin):
form = FeriasForm
list_display = ('servidor', 'inicio_ferias', 'fim_ferias')
list_filter = ('inicio_ferias', 'fim_ferias')
search_fields = ('obs',
'servidor__nome_completo', 'servidor__email_pessoal',
'servidor__user__email', 'servidor__user__username')
class ServidorFilter(AlphabeticFilter): class ServidorFilter(AlphabeticFilter):
title = _(u'Nome do Servidor') title = _(u'Nome do Servidor')
parameter_name = 'servidor__nome_completo' parameter_name = 'servidor__nome_completo'
@admin.register(Servico)
class ServicoAdmin(admin.ModelAdmin):
list_display = ['sigla', 'nome', 'subordinado', 'responsavel']
list_filter = ['subordinado',]
search_fields = ['nome', 'sigla',]
class LicencaAdmin(BaseModelAdmin): @admin.register(Servidor)
form = LicencaForm
list_display = ('servidor', 'inicio_licenca', 'fim_licenca')
list_filter = (ServidorFilter, 'inicio_licenca', 'fim_licenca')
search_fields = ('obs',
'servidor__nome_completo', 'servidor__email_pessoal',
'servidor__user__email', 'servidor__user__username')
def lookup_allowed(self, lookup, value):
return super(LicencaAdmin, self).lookup_allowed(lookup, value) or \
lookup in ['servidor__nome_completo']
class EnderecoInline(generic.GenericStackedInline):
model = Endereco
extra = 0
raw_id_fields = ('municipio',)
class TelefonesInline(generic.GenericTabularInline):
extra = 1
model = Telefone
class ServidorAdmin(BaseModelAdmin): class ServidorAdmin(BaseModelAdmin):
list_display = ('foto', 'nome_completo', 'is_active', 'servico', )
def is_active(self, servidor): list_filter = ('user__is_active', 'servico',)
return servidor.user.is_active search_fields = ('nome_completo', 'user__email', 'user__first_name',
is_active.admin_order_field = 'user__is_active' 'user__last_name', 'user__username', 'servico__nome',
is_active.boolean = True 'servico__sigla')
is_active.short_description = _(u'ativo')
list_display = ('nome_completo', 'is_active', 'foto', 'servico', )
list_filter = ('user__is_active', 'sexo', 'servico',)
search_fields = ('nome_completo', 'obs', 'apontamentos',
'user__email', 'user__first_name',
'user__last_name', 'user__username')
raw_id_fields = ('user',) raw_id_fields = ('user',)
inlines = (TelefonesInline, EnderecoInline) fields = ['user', 'nome_completo', 'foto', 'servico',]
fieldsets = (
(_(u'Autenticação'), {
'fields': ('user',),
}),
(_(u'Cadastro'), {
'fields': ('nome_completo', 'foto', 'email_pessoal', 'rg', 'cpf', 'sexo', 'data_nascimento', 'matricula', 'ramal', 'data_nomeacao', 'ato_numero', 'ato_exoneracao')
}),
(_(u'Lotação'), {
'fields': ('servico', 'turno', 'de_fora'),
}),
(_(u'Observações'), {
'fields': ('apontamentos', 'obs'),
}),
)
def lookup_allowed(self, lookup, value): def lookup_allowed(self, lookup, value):
return super(ServidorAdmin, self).lookup_allowed(lookup, value) or \ return super(ServidorAdmin, self).lookup_allowed(lookup, value) or \
@ -103,10 +43,8 @@ class ServidorAdmin(BaseModelAdmin):
return db_field.formfield(**kwargs) return db_field.formfield(**kwargs)
return super(ServidorAdmin, self).formfield_for_dbfield(db_field, **kwargs) return super(ServidorAdmin, self).formfield_for_dbfield(db_field, **kwargs)
def is_active(self, servidor):
admin.site.register(Servidor, ServidorAdmin) return servidor.user.is_active
admin.site.register(Funcao, FuncaoAdmin) is_active.admin_order_field = 'user__is_active'
admin.site.register(Ferias, FeriasAdmin) is_active.boolean = True
admin.site.register(Licenca, LicencaAdmin) is_active.short_description = _(u'ativo')
admin.site.register(Servico)
admin.site.register(Subsecretaria)

109
sigi/apps/servidores/migrations/0003_auto_20210422_1729.py

@ -0,0 +1,109 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('servidores', '0002_auto_20210416_0841'),
]
operations = [
migrations.RemoveField(
model_name='ferias',
name='servidor',
),
migrations.DeleteModel(
name='Ferias',
),
migrations.RemoveField(
model_name='funcao',
name='servidor',
),
migrations.DeleteModel(
name='Funcao',
),
migrations.RemoveField(
model_name='licenca',
name='servidor',
),
migrations.DeleteModel(
name='Licenca',
),
migrations.RemoveField(
model_name='subsecretaria',
name='responsavel',
),
migrations.RemoveField(
model_name='servico',
name='subsecretaria',
),
migrations.DeleteModel(
name='Subsecretaria',
),
migrations.RemoveField(
model_name='servidor',
name='apontamentos',
),
migrations.RemoveField(
model_name='servidor',
name='ato_exoneracao',
),
migrations.RemoveField(
model_name='servidor',
name='ato_numero',
),
migrations.RemoveField(
model_name='servidor',
name='cpf',
),
migrations.RemoveField(
model_name='servidor',
name='data_nascimento',
),
migrations.RemoveField(
model_name='servidor',
name='data_nomeacao',
),
migrations.RemoveField(
model_name='servidor',
name='de_fora',
),
migrations.RemoveField(
model_name='servidor',
name='email_pessoal',
),
migrations.RemoveField(
model_name='servidor',
name='matricula',
),
migrations.RemoveField(
model_name='servidor',
name='obs',
),
migrations.RemoveField(
model_name='servidor',
name='ramal',
),
migrations.RemoveField(
model_name='servidor',
name='rg',
),
migrations.RemoveField(
model_name='servidor',
name='sexo',
),
migrations.RemoveField(
model_name='servidor',
name='turno',
),
migrations.AddField(
model_name='servico',
name='subordinado',
field=models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, verbose_name='subordinado a', to='servidores.Servico', null=True),
preserve_default=True,
),
]

27
sigi/apps/servidores/migrations/0004_auto_20210422_1907.py

@ -0,0 +1,27 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('servidores', '0003_auto_20210422_1729'),
]
operations = [
migrations.AlterField(
model_name='servico',
name='responsavel',
field=models.ForeignKey(related_name='chefe', on_delete=django.db.models.deletion.SET_NULL, blank=True, to='servidores.Servidor', null=True),
preserve_default=True,
),
migrations.AlterField(
model_name='servico',
name='subordinado',
field=models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, verbose_name='subordinado a', blank=True, to='servidores.Servico', null=True),
preserve_default=True,
),
]

200
sigi/apps/servidores/models.py

@ -5,47 +5,22 @@ from django.db import models
from django.db.models.signals import post_save from django.db.models.signals import post_save
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
class Subsecretaria(models.Model):
""" Modelo para representação das Subsecretarias do Interlegis
"""
nome = models.CharField(max_length=250, null=True)
sigla = models.CharField(max_length=10, null=True)
# servidor responsavel por dirigir a Subsecretaria
responsavel = models.ForeignKey(
'servidores.Servidor',
on_delete=models.SET_NULL,
related_name='diretor',
null=True
)
class Meta:
ordering = ('nome',)
def __unicode__(self):
return '%s (%s)' % (unicode(self.nome), unicode(self.sigla))
class Servico(models.Model): class Servico(models.Model):
""" Modelo para representação dos Serviços de uma Subsecretaria
"""
nome = models.CharField(_(u'Setor'), max_length=250, null=True) nome = models.CharField(_(u'Setor'), max_length=250, null=True)
sigla = models.CharField(max_length=10, null=True) sigla = models.CharField(max_length=10, null=True)
subsecretaria = models.ForeignKey( subordinado = models.ForeignKey(
Subsecretaria, 'self',
on_delete=models.CASCADE, on_delete=models.SET_NULL,
null=True null=True,
blank=True,
verbose_name=_(u"subordinado a")
) )
# servidor responsavel por chefiar o serviço
responsavel = models.ForeignKey( responsavel = models.ForeignKey(
'servidores.Servidor', 'servidores.Servidor',
on_delete=models.SET_NULL, on_delete=models.SET_NULL,
related_name='chefe', related_name='chefe',
null=True null=True,
blank=True
) )
class Meta: class Meta:
@ -54,33 +29,12 @@ class Servico(models.Model):
verbose_name_plural = _(u'serviços') verbose_name_plural = _(u'serviços')
def __unicode__(self): def __unicode__(self):
return '%s (%s)' % (unicode(self.nome), unicode(self.sigla)) return u"{sigla} - {nome}".format(sigla=self.sigla, nome=self.nome)
class Servidor(models.Model): class Servidor(models.Model):
""" Modelo para representação de um Servidor.
Um servidor pertence a um Serviço e uma Subsecretaria os campos
deste modelo são referente as informações básicas de cadastro.
"""
SEXO_CHOICES = (
('M', u'Masculino'),
('F', u'Feminino'),
)
TURNO_CHOICES = (
('M', u'Manhã'),
('T', u'Tarde'),
('N', u'Noite'),
)
# usuario responsavel pela autenticação do servidor no sistema
user = models.ForeignKey(User, on_delete=models.CASCADE, unique=True) user = models.ForeignKey(User, on_delete=models.CASCADE, unique=True)
nome_completo = models.CharField(max_length=128) nome_completo = models.CharField(max_length=128)
apelido = models.CharField(max_length=50, blank=True) apelido = models.CharField(max_length=50, blank=True)
# caminho no sistema para arquivo com a imagem
foto = models.ImageField( foto = models.ImageField(
upload_to='fotos/servidores', upload_to='fotos/servidores',
width_field='foto_largura', width_field='foto_largura',
@ -89,79 +43,17 @@ class Servidor(models.Model):
) )
foto_largura = models.SmallIntegerField(editable=False, null=True) foto_largura = models.SmallIntegerField(editable=False, null=True)
foto_altura = 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,
)
servico = models.ForeignKey( servico = models.ForeignKey(
'servidores.Servico', Servico,
on_delete=models.SET_NULL, on_delete=models.SET_NULL,
blank=True, blank=True,
null=True null=True
) )
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,
)
de_fora = models.BooleanField(default=False)
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)
ato_numero = 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)
# Informações de contato
email_pessoal = models.EmailField('email pessoal', blank=True, null=True)
endereco = generic.GenericRelation('contatos.Endereco')
telefones = generic.GenericRelation('contatos.Telefone')
ramal = models.CharField(max_length=25, blank=True, null=True)
class Meta: class Meta:
ordering = ('nome_completo',) ordering = ('nome_completo',)
verbose_name_plural = 'servidores' verbose_name_plural = 'servidores'
def is_chefe(self):
""" Verifica se o servidor é chefe ou diretor
"""
pass
def data_entrada(self):
""" Verifica a data de entrada da função mais antiga
"""
pass
def data_saida(self):
""" Verifica a data de saída da função mais recente
de um servidor desativado
Caso o usuário esteja ativo retorna None
"""
pass
@property
def diagnosticos(self):
""" Retorna todos os diagnosticos que este servidor
participa, isto é, como responsavel ou parte da equipe
"""
diagnosticos = set(self.diagnostico_set.filter(publicado=True).all())
for equipe in self.equipe_set.all():
diagnosticos.add(equipe.diagnostico)
return list(diagnosticos)
def __unicode__(self): def __unicode__(self):
return self.nome_completo return self.nome_completo
@ -172,8 +64,6 @@ User.servidor = property(lambda user: Servidor.objects.get(user=user))
# Sinal para ao criar um usuário criar um servidor # Sinal para ao criar um usuário criar um servidor
# baseado no nome contino no LDAP # baseado no nome contino no LDAP
def create_user_profile(sender, instance, created, **kwargs): def create_user_profile(sender, instance, created, **kwargs):
if created: if created:
Servidor.objects.create( Servidor.objects.create(
@ -182,73 +72,3 @@ def create_user_profile(sender, instance, created, **kwargs):
) )
post_save.connect(create_user_profile, sender=User) post_save.connect(create_user_profile, sender=User)
class Funcao(models.Model):
""" Modelo para guardar o histórico de funções dos
servidores no Interlegis
"""
servidor = models.ForeignKey(Servidor, on_delete=models.CASCADE)
funcao = models.CharField(max_length=250, null=True)
cargo = models.CharField(max_length=250, null=True)
inicio_funcao = models.DateField(u'início da função', null=True)
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):
""" Modelo que representa as licenças tiradas pelos servidores
"""
servidor = models.ForeignKey(Servidor, on_delete=models.CASCADE)
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 days():
""" Calcula a quantidade de dias da licença
"""
pass
def __unicode__(self):
return str(self.id)
class Ferias(models.Model):
""" Modelo que representa as férias tiradas pelos servidores
"""
servidor = models.ForeignKey(Servidor, on_delete=models.CASCADE)
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 days():
""" Calcula a quantidade de dias das férias
"""
pass
def __unicode__(self):
return str(self.id)

51
sigi/apps/servidores/templates/servidores/servidores_por_cargo.html

@ -1,51 +0,0 @@
{% extends "base_report.html" %}
{% load i18n %}
{% block extra_head %}
<style type="text/css">
tr.title {
text-align: center;
font-size: 1.2em;
border-bottom: 2px black solid;
}
tr.data {
padding: 2px 5px;
border-bottom: 1px gray solid;
}
tr.total {
font-weight: bold;
}
td.index {
width: 50px;
}
</style>
{% endblock %}
{% block subsecretaria %}
{% trans 'SUBSECRETARIA DE ADMINISTRAÇÃO – SSADM' %}
{% endblock %}
{% block report %}
<div>
<h1>{% trans 'Relatório de Servidores por Cargo' %}</h1>
<table class="report">
<tr class="title">
<td class="index"></td>
<td>{% trans 'Cargo' %}</td>
<td>{% trans 'Servidores' %}</td>
</tr>
{% for r in report %}
<tr class="data">
<td>{{ forloop.counter }}</td>
<td>{{ r.cargo }}</td>
<td>{{ r.cargo__count }}</td>
</tr>
{% endfor %}
<tr class="data total">
<td></td>
<td>{% trans 'Total' %}</td>
<td>{{ total }}</td>
</tr>
</table>
</div>
{% endblock %}

51
sigi/apps/servidores/templates/servidores/servidores_por_funcao.html

@ -1,51 +0,0 @@
{% extends "base_report.html" %}
{% load i18n %}
{% block extra_head %}
<style type="text/css">
tr.title {
text-align: center;
font-size: 1.2em;
border-bottom: 2px black solid;
}
tr.data {
padding: 2px 5px;
border-bottom: 1px gray solid;
}
tr.total {
font-weight: bold;
}
td.index {
width: 50px;
}
</style>
{% endblock %}
{% block subsecretaria %}
{% trans 'SUBSECRETARIA DE ADMINISTRAÇÃO – SSADM' %}
{% endblock %}
{% block report %}
<div>
<h1>{% trans 'Relatório de Servidores por Função' %}</h1>
<table class="report">
<tr class="title">
<td class="index"></td>
<td>{% trans 'Função' %}</td>
<td>{% trans 'Servidores' %}</td>
</tr>
{% for r in report %}
<tr class="data">
<td>{{ forloop.counter }}</td>
<td>{{ r.funcao }}</td>
<td>{{ r.funcao__count }}</td>
</tr>
{% endfor %}
<tr class="data total">
<td></td>
<td>{% trans 'Total' %}</td>
<td>{{ total }}</td>
</tr>
</table>
</div>
{% endblock %}

11
sigi/apps/servidores/urls.py

@ -1,11 +0,0 @@
# -*- coding: utf-8 -*-
from django.conf.urls import patterns, url
urlpatterns = patterns(
'sigi.apps.servidores.views',
# Reports servidores
url(r'^servidores_por_funcao.pdf$', 'servidores_por_funcao', name='servidores-funcao-pdf'),
url(r'^servidores_por_cargo.pdf$', 'servidores_por_cargo', name='servidores-cargo-pdf'),
)

34
sigi/apps/servidores/views.py

@ -1,34 +0,0 @@
# -*- coding: utf-8 -*-
import new
from django.template import RequestContext
from django.shortcuts import render_to_response, get_object_or_404, redirect
from django.db.models import Avg, Max, Min, Count
from sigi.apps.servidores.models import Servidor, Funcao
from sigi.shortcuts import render_to_pdf
def servidores_por_funcao(request):
report = Funcao.objects.values('funcao').annotate(funcao__count=Count('funcao')).order_by('funcao__count')
total = Funcao.objects.count()
context = RequestContext(request, {
'pagesize': 'A4',
'report': report,
'total': total
})
return render_to_pdf('servidores/servidores_por_funcao.html', context)
def servidores_por_cargo(request):
report = Funcao.objects.values('cargo').annotate(cargo__count=Count('cargo')).order_by('cargo__count')
total = Funcao.objects.count()
context = RequestContext(request, {
'pagesize': 'A4',
'report': report,
'total': total
})
return render_to_pdf('servidores/servidores_por_cargo.html', context)

1
sigi/urls.py

@ -15,7 +15,6 @@ urlpatterns = patterns(
url(r'^casas/', include('sigi.apps.casas.urls')), url(r'^casas/', include('sigi.apps.casas.urls')),
url(r'^convenios/', include('sigi.apps.convenios.urls')), url(r'^convenios/', include('sigi.apps.convenios.urls')),
url(r'^diagnosticos/', include('sigi.apps.diagnosticos.urls')), url(r'^diagnosticos/', include('sigi.apps.diagnosticos.urls')),
url(r'^servidores/', include('sigi.apps.servidores.urls')),
url(r'^servicos/', include('sigi.apps.servicos.urls')), url(r'^servicos/', include('sigi.apps.servicos.urls')),
url(r'^dashboard/', include('sigi.apps.metas.urls')), url(r'^dashboard/', include('sigi.apps.metas.urls')),
url(r'^ocorrencias/', include('sigi.apps.ocorrencias.urls')), url(r'^ocorrencias/', include('sigi.apps.ocorrencias.urls')),

Loading…
Cancel
Save