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):
model = Contato
extra = 1
class TelefonesInline(generic.GenericTabularInline):
model = Telefone
extra = 1
class CasaLegislativaAdmin(admin.ModelAdmin):
form = CasaLegislativaForm

34
sigi/apps/contatos/admin.py

@ -4,26 +4,44 @@ from sigi.apps.contatos.models import (UnidadeFederativa, Municipio, Telefone,
Contato)
class UnidadeFederativaAdmin(admin.ModelAdmin):
list_display = ('codigo_ibge', 'nome', 'sigla')
list_display_links = ('codigo_ibge', 'nome', 'sigla')
search_fields = ('codigo_ibge', 'nome', 'sigla')
list_display = ('codigo_ibge', 'nome', 'sigla', 'regiao', 'populacao')
list_display_links = ('codigo_ibge', 'nome')
list_filter = ('regiao', 'populacao')
search_fields = ('codigo_ibge', 'nome', 'sigla', 'regiao')
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_filter = ('uf',)
search_fields = ('codigo_ibge', 'nome', 'uf')
list_filter = ('uf', 'is_capital', 'is_polo', 'populacao')
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):
list_display = ('codigo_ddd', 'numero', 'tipo', 'nota')
list_display_links = ('codigo_ddd', 'numero')
list_filter = ('codigo_ddd',)
list_filter = ('codigo_ddd', 'tipo')
radio_fields = {'tipo': admin.VERTICAL}
search_fields = ('codigo_ddd', 'numero', 'tipo', 'nota')
class ContatoAdmin(admin.ModelAdmin):
list_display = ('nome', 'nota')
list_display = ('nome', 'nota', 'email', 'municipio', 'get_uf')
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(Municipio, MunicipioAdmin)

5
sigi/apps/contatos/models.py

@ -23,8 +23,9 @@ class UnidadeFederativa(models.Model):
unique=True,
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.list_filter_range = [100000, 1000000, 10000000]
class Meta:
ordering = ('nome',)
@ -51,6 +52,7 @@ class Municipio(models.Model):
uf = models.ForeignKey(UnidadeFederativa, verbose_name='UF')
is_capital = models.BooleanField('capital')
populacao = models.PositiveIntegerField(u'população')
populacao.list_filter_range = [10000, 100000, 1000000]
is_polo = models.BooleanField(u'pólo')
latitude = models.DecimalField(
max_digits=10,
@ -113,6 +115,7 @@ class Telefone(models.Model):
class Contato(models.Model):
nome = models.CharField('nome completo', max_length=60)
nome.alphabetic_filter = True
nota = models.CharField(max_length=70, 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 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):
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',
'num_processo_sf', 'data_adesao')
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):
ordering = ('convenio', 'equipamento')
list_display = ('convenio', 'equipamento', 'quantidade')
list_display_links = ('convenio', 'equipamento')
class AnexoAdmin(admin.ModelAdmin):
date_hierarchy = 'data_pub'
list_display = ('descricao', 'data_pub', 'convenio')
ordering = ('convenio', 'equipamento')
search_fields = ('convenio__num_convenio', 'equipamento__fabricante__nome',
'equipamento__modelo__modelo', 'equipamento__modelo__tipo__tipo')
admin.site.register(Convenio, ConvenioAdmin)
admin.site.register(EquipamentoPrevisto, EquipamentoPrevistoAdmin)

15
sigi/apps/convenios/models.py

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

41
sigi/apps/inventario/admin.py

@ -1,30 +1,63 @@
# -*- coding: utf-8 -*-
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,
TipoEquipamento, ModeloEquipamento,
Bem)
class ContatosInline(generic.GenericTabularInline):
model = Contato
extra = 1
class TelefonesInline(generic.GenericTabularInline):
model = Telefone
extra = 1
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):
list_display = ('id', 'nome')
list_display_links = list_display
list_filter = ('nome',)
search_fields = ('id', 'nome')
class TipoEquipamentoAdmin(admin.ModelAdmin):
list_display = ('id', 'tipo')
list_display_links = list_display
list_filter = ('tipo',)
search_fields = ('id', 'tipo')
class ModeloEquipamentoAdmin(admin.ModelAdmin):
list_display = ('id', 'tipo', 'modelo')
list_filter = ('tipo', 'modelo')
ordering = ('tipo', 'modelo')
search_fields = ('id', 'tipo', 'modelo')
class EquipamentoAdmin(admin.ModelAdmin):
ordering = ('fabricante', 'modelo')
list_display = ('id', 'modelo', 'fabricante')
list_display = ('id', 'fabricante', 'modelo', 'get_tipo')
list_display_links = ('id', 'modelo')
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):
ordering = ('casa_legislativa', 'fornecedor', 'equipamento')
list_display = ('equipamento', 'fornecedor', 'num_serie',
'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(Fabricante, FabricanteAdmin)

10
sigi/apps/inventario/models.py

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

13
sigi/apps/servicos/admin.py

@ -1,9 +1,18 @@
# -*- coding: utf-8 -*-
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
class ContatosInline(generic.GenericTabularInline):
model = Contato
extra = 1
class ServicoAdmin(admin.ModelAdmin):
list_display = ('id', 'tipo', 'situacao', 'avaliacao')
list_filter = ('situacao', 'avaliacao',)
date_hierarchy = 'data_inicio'
inlines = (ContatosInline,)
list_display = ('id', 'titulo', 'tipo', 'situacao', 'avaliacao')
list_filter = ('tipo','situacao', 'avaliacao',)
search_fields = ('titulo', 'tipo', 'descricao',)
admin.site.register(Servico, ServicoAdmin)

5
sigi/apps/servicos/models.py

@ -16,7 +16,8 @@ class Servico(models.Model):
(2, 'Regular'),
(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')
colaboradores = generic.GenericRelation('contatos.Contato')
data_inicio = models.DateField(
@ -49,4 +50,4 @@ class Servico(models.Model):
verbose_name_plural = 'serviços'
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.admin.sites import AdminSite
from maintenancemode.admin import AllowedPath, AllowedPathAdmin
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):
index_template = 'index.html'
login_template = 'login.html'
default = DefaultSite()
# django.contrib.auth
default.register(Group, GroupAdmin)
default.register(User, UserAdmin)
# django.contrib.sites
default.register(Site, SiteAdmin)
# maintenancemode
default.register(AllowedPath, AllowedPathAdmin)
# sigi.apps.casas
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