Browse Source

Corrigido albuns bugs e adicionado CRUD para inventário, serviços e convênios.

0.2
Guilherme Gondim 17 years ago
parent
commit
73a01a23b5
  1. 2
      sigi/apps/casas/admin.py
  2. 34
      sigi/apps/contatos/admin.py
  3. 5
      sigi/apps/contatos/models.py
  4. 42
      sigi/apps/convenios/admin.py
  5. 15
      sigi/apps/convenios/models.py
  6. 41
      sigi/apps/inventario/admin.py
  7. 10
      sigi/apps/inventario/models.py
  8. 13
      sigi/apps/servicos/admin.py
  9. 5
      sigi/apps/servicos/models.py
  10. 47
      sigi/sites.py

2
sigi/apps/casas/admin.py

@ -7,9 +7,11 @@ from sigi.apps.contatos.models import Contato, Telefone
class ContatosInline(generic.GenericTabularInline): class ContatosInline(generic.GenericTabularInline):
model = Contato model = Contato
extra = 1
class TelefonesInline(generic.GenericTabularInline): class TelefonesInline(generic.GenericTabularInline):
model = Telefone model = Telefone
extra = 1
class CasaLegislativaAdmin(admin.ModelAdmin): class CasaLegislativaAdmin(admin.ModelAdmin):
form = CasaLegislativaForm form = CasaLegislativaForm

34
sigi/apps/contatos/admin.py

@ -4,26 +4,44 @@ from sigi.apps.contatos.models import (UnidadeFederativa, Municipio, Telefone,
Contato) Contato)
class UnidadeFederativaAdmin(admin.ModelAdmin): class UnidadeFederativaAdmin(admin.ModelAdmin):
list_display = ('codigo_ibge', 'nome', 'sigla') list_display = ('codigo_ibge', 'nome', 'sigla', 'regiao', 'populacao')
list_display_links = ('codigo_ibge', 'nome', 'sigla') list_display_links = ('codigo_ibge', 'nome')
search_fields = ('codigo_ibge', 'nome', 'sigla') list_filter = ('regiao', 'populacao')
search_fields = ('codigo_ibge', 'nome', 'sigla', 'regiao')
class MunicipioAdmin(admin.ModelAdmin): class MunicipioAdmin(admin.ModelAdmin):
list_display = ('codigo_ibge', 'nome', 'uf') list_display = ('codigo_ibge', 'nome', 'uf', 'is_capital', 'populacao', 'is_polo')
list_display_links = ('codigo_ibge', 'nome') list_display_links = ('codigo_ibge', 'nome')
list_filter = ('uf',) list_filter = ('uf', 'is_capital', 'is_polo', 'populacao')
search_fields = ('codigo_ibge', 'nome', 'uf') fieldsets = (
(None, {
'fields': ('codigo_ibge', 'codigo_mesorregiao',
'codigo_microrregiao', 'nome', 'uf', 'is_capital',
'populacao', 'is_polo')
}),
('Posição geográfica', {
'fields': ('latitude', 'longitude'),
}),
)
search_fields = ('codigo_ibge', 'codigo_mesorregiao', 'codigo_microrregiao',
'nome', 'uf__nome', 'uf__sigla')
class TelefoneAdmin(admin.ModelAdmin): class TelefoneAdmin(admin.ModelAdmin):
list_display = ('codigo_ddd', 'numero', 'tipo', 'nota') list_display = ('codigo_ddd', 'numero', 'tipo', 'nota')
list_display_links = ('codigo_ddd', 'numero') list_display_links = ('codigo_ddd', 'numero')
list_filter = ('codigo_ddd',) list_filter = ('codigo_ddd', 'tipo')
radio_fields = {'tipo': admin.VERTICAL} radio_fields = {'tipo': admin.VERTICAL}
search_fields = ('codigo_ddd', 'numero', 'tipo', 'nota') search_fields = ('codigo_ddd', 'numero', 'tipo', 'nota')
class ContatoAdmin(admin.ModelAdmin): class ContatoAdmin(admin.ModelAdmin):
list_display = ('nome', 'nota') list_display = ('nome', 'nota', 'email', 'municipio', 'get_uf')
list_display_links = ('nome',) list_display_links = ('nome',)
list_filter = ('nome',)
search_fields = ('nome', 'nota', 'email', 'municipio__nome', 'municipio__uf__nome')
def get_uf(self, obj):
return obj.municipio.uf.nome
get_uf.short_description = 'UF'
admin.site.register(UnidadeFederativa, UnidadeFederativaAdmin) admin.site.register(UnidadeFederativa, UnidadeFederativaAdmin)
admin.site.register(Municipio, MunicipioAdmin) admin.site.register(Municipio, MunicipioAdmin)

5
sigi/apps/contatos/models.py

@ -23,8 +23,9 @@ class UnidadeFederativa(models.Model):
unique=True, unique=True,
help_text="Exemplo: <em>MG</em>.", help_text="Exemplo: <em>MG</em>.",
) )
regiao = models.CharField(max_length=2, choices=REGIAO_CHOICES) regiao = models.CharField('região', max_length=2, choices=REGIAO_CHOICES)
populacao = models.PositiveIntegerField('população') populacao = models.PositiveIntegerField('população')
populacao.list_filter_range = [100000, 1000000, 10000000]
class Meta: class Meta:
ordering = ('nome',) ordering = ('nome',)
@ -51,6 +52,7 @@ class Municipio(models.Model):
uf = models.ForeignKey(UnidadeFederativa, verbose_name='UF') uf = models.ForeignKey(UnidadeFederativa, verbose_name='UF')
is_capital = models.BooleanField('capital') is_capital = models.BooleanField('capital')
populacao = models.PositiveIntegerField(u'população') populacao = models.PositiveIntegerField(u'população')
populacao.list_filter_range = [10000, 100000, 1000000]
is_polo = models.BooleanField(u'pólo') is_polo = models.BooleanField(u'pólo')
latitude = models.DecimalField( latitude = models.DecimalField(
max_digits=10, max_digits=10,
@ -113,6 +115,7 @@ class Telefone(models.Model):
class Contato(models.Model): class Contato(models.Model):
nome = models.CharField('nome completo', max_length=60) nome = models.CharField('nome completo', max_length=60)
nome.alphabetic_filter = True
nota = models.CharField(max_length=70, blank=True) nota = models.CharField(max_length=70, blank=True)
email = models.EmailField('e-mail', blank=True) email = models.EmailField('e-mail', blank=True)

42
sigi/apps/convenios/admin.py

@ -2,20 +2,50 @@
from django.contrib import admin from django.contrib import admin
from sigi.apps.convenios.models import Convenio, EquipamentoPrevisto, Anexo from sigi.apps.convenios.models import Convenio, EquipamentoPrevisto, Anexo
class AnexosInline(admin.TabularInline):
model = Anexo
extra = 1
class EquipamentoPrevistoInline(admin.TabularInline):
model = EquipamentoPrevisto
extra = 1
class AnexoAdmin(admin.ModelAdmin):
date_hierarchy = 'data_pub'
exclude = ['data_pub',]
list_display = ('arquivo', 'descricao', 'data_pub', 'convenio')
search_fields = ('descricao', 'convenio__num_convenio', 'arquivo',
'convenio__casa_legislativa__nome')
class ConvenioAdmin(admin.ModelAdmin): class ConvenioAdmin(admin.ModelAdmin):
ordering = ('-num_convenio',) date_hierarchy = 'data_adesao'
fieldsets = (
(None,
{'fields': ('casa_legislativa', 'num_convenio', 'num_processo_sf',)}
),
('Datas',
{'fields': ('data_adesao', 'data_retorno_assinatura',
'data_termo_aceite', 'data_pub_diario')}
),
('Equipamentos & Serviços',
{'fields': ('equipamentos_recebidos', 'servicos')}
)
)
inlines = (AnexosInline, EquipamentoPrevistoInline)
list_display = ('num_convenio', 'casa_legislativa', list_display = ('num_convenio', 'casa_legislativa',
'num_processo_sf', 'data_adesao') 'num_processo_sf', 'data_adesao')
list_filter = ('equipamentos_recebidos',) list_filter = ('equipamentos_recebidos',)
ordering = ('-num_convenio',)
search_fields = ('num_convenio', 'casa_legislativa__nome',
'num_processo_sf', 'casa_legislativa__municipio__nome',
'casa_legislativa__municipio__uf__nome')
class EquipamentoPrevistoAdmin(admin.ModelAdmin): class EquipamentoPrevistoAdmin(admin.ModelAdmin):
ordering = ('convenio', 'equipamento')
list_display = ('convenio', 'equipamento', 'quantidade') list_display = ('convenio', 'equipamento', 'quantidade')
list_display_links = ('convenio', 'equipamento') list_display_links = ('convenio', 'equipamento')
ordering = ('convenio', 'equipamento')
class AnexoAdmin(admin.ModelAdmin): search_fields = ('convenio__num_convenio', 'equipamento__fabricante__nome',
date_hierarchy = 'data_pub' 'equipamento__modelo__modelo', 'equipamento__modelo__tipo__tipo')
list_display = ('descricao', 'data_pub', 'convenio')
admin.site.register(Convenio, ConvenioAdmin) admin.site.register(Convenio, ConvenioAdmin)
admin.site.register(EquipamentoPrevisto, EquipamentoPrevistoAdmin) admin.site.register(EquipamentoPrevisto, EquipamentoPrevistoAdmin)

15
sigi/apps/convenios/models.py

@ -42,6 +42,8 @@ class Convenio(models.Model):
servicos = models.ManyToManyField( servicos = models.ManyToManyField(
'servicos.Servico', 'servicos.Servico',
verbose_name='serviços prestados', verbose_name='serviços prestados',
null=True,
blank=True
) )
class Meta: class Meta:
@ -49,8 +51,11 @@ class Convenio(models.Model):
ordering = ('num_convenio',) ordering = ('num_convenio',)
verbose_name = 'convênio' verbose_name = 'convênio'
def __unicode__(self):
return str(self.num_convenio)
class EquipamentoPrevisto(models.Model): class EquipamentoPrevisto(models.Model):
convenio = models.ForeignKey(Convenio) convenio = models.ForeignKey(Convenio, verbose_name='convênio')
equipamento = models.ForeignKey('inventario.Equipamento') equipamento = models.ForeignKey('inventario.Equipamento')
quantidade = models.PositiveSmallIntegerField(default=1) quantidade = models.PositiveSmallIntegerField(default=1)
@ -58,14 +63,20 @@ class EquipamentoPrevisto(models.Model):
verbose_name = 'equipamento previsto' verbose_name = 'equipamento previsto'
verbose_name_plural = 'equipamentos previstos' verbose_name_plural = 'equipamentos previstos'
def __unicode__(self):
return '%s %s(s)' % (self.quantidade, self.equipamento)
class Anexo(models.Model): class Anexo(models.Model):
convenio = models.ForeignKey(Convenio, verbose_name='convênio') convenio = models.ForeignKey(Convenio, verbose_name='convênio')
arquivo = models.FileField(upload_to='arquivos/anexos',) arquivo = models.FileField(upload_to='arquivos/anexos',)
descricao = models.CharField('descrição', max_length='70') descricao = models.CharField('descrição', max_length='70')
data_pub = models.DateField( data_pub = models.DateTimeField(
'data da publicação do anexo', 'data da publicação do anexo',
default=datetime.now default=datetime.now
) )
class Meta: class Meta:
ordering = ('-data_pub',) ordering = ('-data_pub',)
def __unicode__(self):
return self.arquivo.name

41
sigi/apps/inventario/admin.py

@ -1,30 +1,63 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.contrib import admin from django.contrib import admin
from django.contrib.contenttypes import generic
from sigi.apps.contatos.models import Contato, Telefone
from sigi.apps.inventario.models import (Fornecedor, Fabricante, Equipamento, from sigi.apps.inventario.models import (Fornecedor, Fabricante, Equipamento,
TipoEquipamento, ModeloEquipamento, TipoEquipamento, ModeloEquipamento,
Bem) Bem)
class ContatosInline(generic.GenericTabularInline):
model = Contato
extra = 1
class TelefonesInline(generic.GenericTabularInline):
model = Telefone
extra = 1
class FornecedorAdmin(admin.ModelAdmin): class FornecedorAdmin(admin.ModelAdmin):
list_display = ('id', 'nome') inlines = (TelefonesInline, ContatosInline)
list_display = ('id', 'nome', 'email', 'pagina_web')
list_display_links = ('id', 'nome')
list_filter = ('nome',)
search_fields = ('id', 'nome', 'email', 'pagina_web')
class FabricanteAdmin(admin.ModelAdmin): class FabricanteAdmin(admin.ModelAdmin):
list_display = ('id', 'nome') list_display = ('id', 'nome')
list_display_links = list_display
list_filter = ('nome',)
search_fields = ('id', 'nome')
class TipoEquipamentoAdmin(admin.ModelAdmin): class TipoEquipamentoAdmin(admin.ModelAdmin):
list_display = ('id', 'tipo') list_display = ('id', 'tipo')
list_display_links = list_display
list_filter = ('tipo',)
search_fields = ('id', 'tipo')
class ModeloEquipamentoAdmin(admin.ModelAdmin): class ModeloEquipamentoAdmin(admin.ModelAdmin):
list_display = ('id', 'tipo', 'modelo') list_display = ('id', 'tipo', 'modelo')
list_filter = ('tipo', 'modelo')
ordering = ('tipo', 'modelo')
search_fields = ('id', 'tipo', 'modelo')
class EquipamentoAdmin(admin.ModelAdmin): class EquipamentoAdmin(admin.ModelAdmin):
ordering = ('fabricante', 'modelo') list_display = ('id', 'fabricante', 'modelo', 'get_tipo')
list_display = ('id', 'modelo', 'fabricante') list_display_links = ('id', 'modelo')
list_filter = ('fabricante',) list_filter = ('fabricante',)
ordering = ('fabricante', 'modelo')
search_fields = ('id', 'modelo', 'fabricante')
def get_tipo(self, obj):
return obj.modelo.tipo.tipo
get_tipo.short_description = 'tipo'
class BemAdmin(admin.ModelAdmin): class BemAdmin(admin.ModelAdmin):
ordering = ('casa_legislativa', 'fornecedor', 'equipamento')
list_display = ('equipamento', 'fornecedor', 'num_serie', list_display = ('equipamento', 'fornecedor', 'num_serie',
'num_tombamento', 'casa_legislativa') 'num_tombamento', 'casa_legislativa')
list_filter = ('fornecedor',)
ordering = ('casa_legislativa', 'fornecedor', 'equipamento')
search_fields = ('fornecedor__nome', 'equipamento__fabricante__nome',
'equipamento__modelo__modelo', 'num_serie',
'num_tombamento', 'casa_legislativa__nome')
admin.site.register(Fornecedor, FornecedorAdmin) admin.site.register(Fornecedor, FornecedorAdmin)
admin.site.register(Fabricante, FabricanteAdmin) admin.site.register(Fabricante, FabricanteAdmin)

10
sigi/apps/inventario/models.py

@ -4,6 +4,7 @@ from django.contrib.contenttypes import generic
class Fornecedor(models.Model): class Fornecedor(models.Model):
nome = models.CharField(max_length=40) nome = models.CharField(max_length=40)
nome.alphabetic_filter = True
email = models.EmailField('e-mail', blank=True) email = models.EmailField('e-mail', blank=True)
pagina_web = models.URLField('página web', blank=True) pagina_web = models.URLField('página web', blank=True)
telefones = generic.GenericRelation('contatos.Telefone') telefones = generic.GenericRelation('contatos.Telefone')
@ -18,6 +19,7 @@ class Fornecedor(models.Model):
class Fabricante(models.Model): class Fabricante(models.Model):
nome = models.CharField(max_length=40) nome = models.CharField(max_length=40)
nome.alphabetic_filter = True
class Meta: class Meta:
ordering = ('nome',) ordering = ('nome',)
@ -27,6 +29,7 @@ class Fabricante(models.Model):
class TipoEquipamento(models.Model): class TipoEquipamento(models.Model):
tipo = models.CharField(max_length=40) tipo = models.CharField(max_length=40)
tipo.alphabetic_filter = True
class Meta: class Meta:
ordering = ('tipo',) ordering = ('tipo',)
@ -42,6 +45,7 @@ class ModeloEquipamento(models.Model):
verbose_name='tipo de equipamento' verbose_name='tipo de equipamento'
) )
modelo = models.CharField(max_length=30) modelo = models.CharField(max_length=30)
modelo.alphabetic_filter = True
class Meta: class Meta:
ordering = ('modelo',) ordering = ('modelo',)
@ -59,7 +63,8 @@ class Equipamento(models.Model):
unique_together = (('fabricante', 'modelo'),) unique_together = (('fabricante', 'modelo'),)
def __unicode__(self): def __unicode__(self):
return str(self.id) return unicode('%s %s %s' % (self.modelo.tipo, self.fabricante.nome,
self.modelo.modelo))
class Bem(models.Model): class Bem(models.Model):
casa_legislativa = models.ForeignKey('casas.CasaLegislativa') casa_legislativa = models.ForeignKey('casas.CasaLegislativa')
@ -82,5 +87,4 @@ class Bem(models.Model):
verbose_name_plural = 'bens' verbose_name_plural = 'bens'
def __unicode__(self): def __unicode__(self):
return '%s (%s)' % (unicode(self.equipamento), return unicode('%s (%s)') % (self.equipamento, self.casa_legislativa)
unicode(self.casa_legislativa))

13
sigi/apps/servicos/admin.py

@ -1,9 +1,18 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.contrib import admin from django.contrib import admin
from django.contrib.contenttypes import generic
from sigi.apps.contatos.models import Contato
from sigi.apps.servicos.models import Servico from sigi.apps.servicos.models import Servico
class ContatosInline(generic.GenericTabularInline):
model = Contato
extra = 1
class ServicoAdmin(admin.ModelAdmin): class ServicoAdmin(admin.ModelAdmin):
list_display = ('id', 'tipo', 'situacao', 'avaliacao') date_hierarchy = 'data_inicio'
list_filter = ('situacao', 'avaliacao',) inlines = (ContatosInline,)
list_display = ('id', 'titulo', 'tipo', 'situacao', 'avaliacao')
list_filter = ('tipo','situacao', 'avaliacao',)
search_fields = ('titulo', 'tipo', 'descricao',)
admin.site.register(Servico, ServicoAdmin) admin.site.register(Servico, ServicoAdmin)

5
sigi/apps/servicos/models.py

@ -16,7 +16,8 @@ class Servico(models.Model):
(2, 'Regular'), (2, 'Regular'),
(1, 'Ruim'), (1, 'Ruim'),
) )
tipo = models.CharField(max_length=50) titulo = models.CharField('título', max_length=60)
tipo = models.CharField(max_length=30)
descricao = models.TextField(u'descrição') descricao = models.TextField(u'descrição')
colaboradores = generic.GenericRelation('contatos.Contato') colaboradores = generic.GenericRelation('contatos.Contato')
data_inicio = models.DateField( data_inicio = models.DateField(
@ -49,4 +50,4 @@ class Servico(models.Model):
verbose_name_plural = 'serviços' verbose_name_plural = 'serviços'
def __unicode__(self): def __unicode__(self):
return str(self.id) return str(self.titulo)

47
sigi/sites.py

@ -1,13 +1,58 @@
from django.contrib.admin.sites import AdminSite from django.contrib.auth.admin import Group, GroupAdmin, User, UserAdmin
from django.contrib.sites.admin import Site, SiteAdmin from django.contrib.sites.admin import Site, SiteAdmin
from django.contrib.admin.sites import AdminSite
from maintenancemode.admin import AllowedPath, AllowedPathAdmin from maintenancemode.admin import AllowedPath, AllowedPathAdmin
from sigi.apps.casas.admin import CasaLegislativa, CasaLegislativaAdmin from sigi.apps.casas.admin import CasaLegislativa, CasaLegislativaAdmin
from sigi.apps.contatos.admin import (UnidadeFederativa, UnidadeFederativaAdmin,
Municipio, MunicipioAdmin, Telefone,
TelefoneAdmin, Contato, ContatoAdmin)
from sigi.apps.convenios.admin import (Convenio, ConvenioAdmin, EquipamentoPrevisto,
EquipamentoPrevistoAdmin, Anexo, AnexoAdmin)
from sigi.apps.inventario.admin import (Fornecedor, FornecedorAdmin, Fabricante,
FabricanteAdmin, Equipamento,
EquipamentoAdmin, TipoEquipamento,
TipoEquipamentoAdmin, ModeloEquipamento,
ModeloEquipamentoAdmin, Bem, BemAdmin)
from sigi.apps.servicos.admin import Servico, ServicoAdmin
class DefaultSite(AdminSite): class DefaultSite(AdminSite):
index_template = 'index.html' index_template = 'index.html'
login_template = 'login.html' login_template = 'login.html'
default = DefaultSite() default = DefaultSite()
# django.contrib.auth
default.register(Group, GroupAdmin)
default.register(User, UserAdmin)
# django.contrib.sites
default.register(Site, SiteAdmin) default.register(Site, SiteAdmin)
# maintenancemode
default.register(AllowedPath, AllowedPathAdmin) default.register(AllowedPath, AllowedPathAdmin)
# sigi.apps.casas
default.register(CasaLegislativa, CasaLegislativaAdmin) default.register(CasaLegislativa, CasaLegislativaAdmin)
# sigi.apps.contatos
default.register(UnidadeFederativa, UnidadeFederativaAdmin)
default.register(Municipio, MunicipioAdmin)
default.register(Telefone, TelefoneAdmin)
default.register(Contato, ContatoAdmin)
# sigi.apps.convenios
default.register(Convenio, ConvenioAdmin)
default.register(EquipamentoPrevisto, EquipamentoPrevistoAdmin)
default.register(Anexo, AnexoAdmin)
# sigi.apps.inventario
default.register(Fornecedor, FornecedorAdmin)
default.register(Fabricante, FabricanteAdmin)
default.register(TipoEquipamento, TipoEquipamentoAdmin)
default.register(ModeloEquipamento,ModeloEquipamentoAdmin)
default.register(Equipamento, EquipamentoAdmin)
default.register(Bem, BemAdmin)
# sigi.apps.servicos
default.register(Servico, ServicoAdmin)

Loading…
Cancel
Save