Browse Source

Migração app Inventário

revisaoSidenav
Sesostris Vieira 3 years ago
parent
commit
bd7d6565c3
  1. 4
      MIGRACAO.md
  2. 40
      sigi/apps/inventario/admin.py
  3. 6
      sigi/apps/inventario/apps.py
  4. 12
      sigi/apps/inventario/migrations/0001_initial.py
  5. 2
      sigi/apps/inventario/migrations/0002_auto_20210406_1945.py
  6. 48
      sigi/apps/inventario/migrations/0004_alter_bem_id_alter_equipamento_id_and_more.py
  7. 27
      sigi/apps/inventario/models.py
  8. 3
      sigi/apps/inventario/tests.py
  9. 1
      sigi/settings/base.py

4
MIGRACAO.md

@ -43,7 +43,7 @@ Macro-tarefas:
* [ ] Migração dos APPS, nesta sequência: * [ ] Migração dos APPS, nesta sequência:
* [x] servidores * [x] servidores
* [x] contatos * [x] contatos
* [ ] casas * [-] casas - migração básica - falta integração com outros apps
* [ ] convenios * [ ] convenios
* [ ] parlamentares * [ ] parlamentares
* [ ] eventos * [ ] eventos
@ -51,6 +51,6 @@ Macro-tarefas:
* [ ] ocorrencias * [ ] ocorrencias
* [ ] whois * [ ] whois
* [ ] financeiro * [ ] financeiro
* [ ] inventario * [x] inventario
* [ ] metas * [ ] metas
* [ ] Definição de um novo tema *bootstrapado* para o admin * [ ] Definição de um novo tema *bootstrapado* para o admin

40
sigi/apps/inventario/admin.py

@ -1,56 +1,53 @@
# -*- coding: utf-8 -*-
from django.contrib import admin from django.contrib import admin
from django.contrib.contenttypes import generic from django.contrib.contenttypes.admin import GenericTabularInline
from sigi.apps.contatos.models import Contato, Telefone 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)
from sigi.apps.utils.base_admin import BaseModelAdmin
class ContatosInline(generic.GenericTabularInline): class ContatosInline(GenericTabularInline):
model = Contato model = Contato
extra = 2 extra = 2
raw_id_fields = ('municipio',) raw_id_fields = ('municipio',)
class TelefonesInline(GenericTabularInline):
class TelefonesInline(generic.GenericTabularInline):
model = Telefone model = Telefone
extra = 2 extra = 2
@admin.register(Fornecedor)
class FornecedorAdmin(BaseModelAdmin): class FornecedorAdmin(admin.ModelAdmin):
inlines = (TelefonesInline, ContatosInline) inlines = (TelefonesInline, ContatosInline)
list_display = ('id', 'nome', 'email', 'pagina_web') list_display = ('id', 'nome', 'email', 'pagina_web')
list_display_links = ('id', 'nome') list_display_links = ('id', 'nome')
list_filter = ('nome',) list_filter = ('nome',)
search_fields = ('id', 'nome', 'email', 'pagina_web') search_fields = ('id', 'nome', 'email', 'pagina_web')
@admin.register(Fabricante)
class FabricanteAdmin(BaseModelAdmin): class FabricanteAdmin(admin.ModelAdmin):
list_display = ('id', 'nome') list_display = ('id', 'nome')
list_display_links = list_display list_display_links = list_display
list_filter = ('nome',) list_filter = ('nome',)
search_fields = ('id', 'nome') search_fields = ('id', 'nome')
@admin.register(TipoEquipamento)
class TipoEquipamentoAdmin(BaseModelAdmin): class TipoEquipamentoAdmin(admin.ModelAdmin):
list_display = ('id', 'tipo') list_display = ('id', 'tipo')
list_display_links = list_display list_display_links = list_display
list_filter = ('tipo',) list_filter = ('tipo',)
search_fields = ('id', 'tipo') search_fields = ('id', 'tipo')
@admin.register(ModeloEquipamento)
class ModeloEquipamentoAdmin(BaseModelAdmin): class ModeloEquipamentoAdmin(admin.ModelAdmin):
list_display = ('id', 'tipo', 'modelo') list_display = ('id', 'tipo', 'modelo')
list_filter = ('tipo', 'modelo') list_filter = ('tipo', 'modelo')
ordering = ('tipo', 'modelo') ordering = ('tipo', 'modelo')
search_fields = ('id', 'tipo', 'modelo') search_fields = ('id', 'tipo', 'modelo')
raw_id_fields = ('tipo',) raw_id_fields = ('tipo',)
@admin.register(Equipamento)
class EquipamentoAdmin(BaseModelAdmin): class EquipamentoAdmin(admin.ModelAdmin):
list_display = ('id', 'fabricante', 'modelo', 'get_tipo') list_display = ('id', 'fabricante', 'modelo', 'get_tipo')
list_display_links = ('id',) list_display_links = ('id',)
list_filter = ('fabricante',) list_filter = ('fabricante',)
@ -62,8 +59,8 @@ class EquipamentoAdmin(BaseModelAdmin):
return obj.modelo.tipo.tipo return obj.modelo.tipo.tipo
get_tipo.short_description = 'tipo' get_tipo.short_description = 'tipo'
@admin.register(Bem)
class BemAdmin(BaseModelAdmin): class BemAdmin(admin.ModelAdmin):
list_display = ('equipamento', 'fornecedor', 'num_serie', list_display = ('equipamento', 'fornecedor', 'num_serie',
'casa_legislativa') 'casa_legislativa')
list_filter = ('fornecedor',) list_filter = ('fornecedor',)
@ -72,10 +69,3 @@ class BemAdmin(BaseModelAdmin):
search_fields = ('fornecedor__nome', 'equipamento__fabricante__nome', search_fields = ('fornecedor__nome', 'equipamento__fabricante__nome',
'equipamento__modelo__modelo', 'num_serie', 'equipamento__modelo__modelo', 'num_serie',
'num_tombamento', 'casa_legislativa__nome') 'num_tombamento', 'casa_legislativa__nome')
admin.site.register(Fornecedor, FornecedorAdmin)
admin.site.register(Fabricante, FabricanteAdmin)
admin.site.register(TipoEquipamento, TipoEquipamentoAdmin)
admin.site.register(ModeloEquipamento, ModeloEquipamentoAdmin)
admin.site.register(Equipamento, EquipamentoAdmin)
admin.site.register(Bem, BemAdmin)

6
sigi/apps/inventario/apps.py

@ -0,0 +1,6 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class InventarioConfig(AppConfig):
name = 'sigi.apps.inventario'
verbose_name = _('inventário')

12
sigi/apps/inventario/migrations/0001_initial.py

@ -18,7 +18,7 @@ class Migration(migrations.Migration):
('num_serie', models.CharField(help_text='N\xfamero fornecido pelo fabricante.', unique=True, max_length=64, verbose_name='n\xfamero de s\xe9rie')), ('num_serie', models.CharField(help_text='N\xfamero fornecido pelo fabricante.', unique=True, max_length=64, verbose_name='n\xfamero de s\xe9rie')),
('recebido_por', models.CharField(help_text='Nome de quem recebeu o equipamento.', max_length=64, blank=True)), ('recebido_por', models.CharField(help_text='Nome de quem recebeu o equipamento.', max_length=64, blank=True)),
('observacoes', models.TextField(verbose_name='observa\xe7\xf5es', blank=True)), ('observacoes', models.TextField(verbose_name='observa\xe7\xf5es', blank=True)),
('casa_legislativa', models.ForeignKey(to='casas.CasaLegislativa')), ('casa_legislativa', models.ForeignKey(to='casas.CasaLegislativa', on_delete=models.CASCADE)),
], ],
options={ options={
'verbose_name_plural': 'bens', 'verbose_name_plural': 'bens',
@ -88,19 +88,19 @@ class Migration(migrations.Migration):
migrations.AddField( migrations.AddField(
model_name='modeloequipamento', model_name='modeloequipamento',
name='tipo', name='tipo',
field=models.ForeignKey(verbose_name='tipo de equipamento', to='inventario.TipoEquipamento'), field=models.ForeignKey(verbose_name='tipo de equipamento', to='inventario.TipoEquipamento', on_delete=models.CASCADE),
preserve_default=True, preserve_default=True,
), ),
migrations.AddField( migrations.AddField(
model_name='equipamento', model_name='equipamento',
name='fabricante', name='fabricante',
field=models.ForeignKey(to='inventario.Fabricante'), field=models.ForeignKey(to='inventario.Fabricante', on_delete=models.CASCADE),
preserve_default=True, preserve_default=True,
), ),
migrations.AddField( migrations.AddField(
model_name='equipamento', model_name='equipamento',
name='modelo', name='modelo',
field=models.ForeignKey(to='inventario.ModeloEquipamento'), field=models.ForeignKey(to='inventario.ModeloEquipamento', on_delete=models.CASCADE),
preserve_default=True, preserve_default=True,
), ),
migrations.AlterUniqueTogether( migrations.AlterUniqueTogether(
@ -110,13 +110,13 @@ class Migration(migrations.Migration):
migrations.AddField( migrations.AddField(
model_name='bem', model_name='bem',
name='equipamento', name='equipamento',
field=models.ForeignKey(to='inventario.Equipamento'), field=models.ForeignKey(to='inventario.Equipamento', on_delete=models.CASCADE),
preserve_default=True, preserve_default=True,
), ),
migrations.AddField( migrations.AddField(
model_name='bem', model_name='bem',
name='fornecedor', name='fornecedor',
field=models.ForeignKey(to='inventario.Fornecedor'), field=models.ForeignKey(to='inventario.Fornecedor', on_delete=models.CASCADE),
preserve_default=True, preserve_default=True,
), ),
] ]

2
sigi/apps/inventario/migrations/0002_auto_20210406_1945.py

@ -15,7 +15,7 @@ class Migration(migrations.Migration):
migrations.AlterField( migrations.AlterField(
model_name='bem', model_name='bem',
name='casa_legislativa', name='casa_legislativa',
field=models.ForeignKey(to='casas.Orgao'), field=models.ForeignKey(to='casas.Orgao', on_delete=models.CASCADE),
preserve_default=True, preserve_default=True,
), ),
] ]

48
sigi/apps/inventario/migrations/0004_alter_bem_id_alter_equipamento_id_and_more.py

@ -0,0 +1,48 @@
# Generated by Django 4.0.1 on 2022-01-12 13:15
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('inventario', '0003_auto_20210416_0841'),
]
operations = [
migrations.AlterField(
model_name='bem',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='equipamento',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='fabricante',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='fornecedor',
name='email',
field=models.EmailField(blank=True, max_length=254, verbose_name='e-mail'),
),
migrations.AlterField(
model_name='fornecedor',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='modeloequipamento',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='tipoequipamento',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
]

27
sigi/apps/inventario/models.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from django.contrib.contenttypes.fields import GenericRelation from django.contrib.contenttypes.fields import GenericRelation
from django.db import models from django.db import models
from django.utils.translation import gettext as _ from django.utils.translation import gettext as _
@ -6,7 +5,6 @@ from django.utils.translation import gettext as _
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 = GenericRelation('contatos.Telefone') telefones = GenericRelation('contatos.Telefone')
@ -16,21 +14,18 @@ class Fornecedor(models.Model):
ordering = ('nome',) ordering = ('nome',)
verbose_name_plural = _('fornecedores') verbose_name_plural = _('fornecedores')
def __unicode__(self): def __str__(self):
return self.nome return self.nome
class Fabricante(models.Model): class Fabricante(models.Model):
nome = models.CharField(max_length=40, unique=True) nome = models.CharField(max_length=40, unique=True)
nome.alphabetic_filter = True
class Meta: class Meta:
ordering = ('nome',) ordering = ('nome',)
def __unicode__(self): def __str__(self):
return self.nome return self.nome
class TipoEquipamento(models.Model): class TipoEquipamento(models.Model):
tipo = models.CharField(max_length=40) tipo = models.CharField(max_length=40)
@ -39,10 +34,9 @@ class TipoEquipamento(models.Model):
verbose_name = _('tipo de equipamento') verbose_name = _('tipo de equipamento')
verbose_name_plural = _('tipos de equipamentos') verbose_name_plural = _('tipos de equipamentos')
def __unicode__(self): def __str__(self):
return self.tipo return self.tipo
class ModeloEquipamento(models.Model): class ModeloEquipamento(models.Model):
tipo = models.ForeignKey( tipo = models.ForeignKey(
TipoEquipamento, TipoEquipamento,
@ -56,10 +50,9 @@ class ModeloEquipamento(models.Model):
verbose_name = _('modelo de equipamento') verbose_name = _('modelo de equipamento')
verbose_name_plural = _('modelos de equipamentos') verbose_name_plural = _('modelos de equipamentos')
def __unicode__(self): def __str__(self):
return self.modelo return self.modelo
class Equipamento(models.Model): class Equipamento(models.Model):
fabricante = models.ForeignKey( fabricante = models.ForeignKey(
Fabricante, Fabricante,
@ -73,10 +66,10 @@ class Equipamento(models.Model):
class Meta: class Meta:
unique_together = (('fabricante', 'modelo'),) unique_together = (('fabricante', 'modelo'),)
def __unicode__(self): def __str__(self):
return unicode('%s %s %s' % (self.modelo.tipo, self.fabricante.nome, return _(
self.modelo.modelo)) f"{self.modelo.tipo} {self.fabricante.nome} {self.modelo.modelo}"
)
class Bem(models.Model): class Bem(models.Model):
casa_legislativa = models.ForeignKey( casa_legislativa = models.ForeignKey(
@ -101,5 +94,5 @@ class Bem(models.Model):
class Meta: class Meta:
verbose_name_plural = _('bens') verbose_name_plural = _('bens')
def __unicode__(self): def __str__(self):
return unicode('%s (%s)') % (self.equipamento, self.casa_legislativa) return _(f"{self.equipamento} ({self.casa_legislativa})")

3
sigi/apps/inventario/tests.py

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

1
sigi/settings/base.py

@ -22,6 +22,7 @@ INSTALLED_APPS = [
'sigi.apps.servidores', 'sigi.apps.servidores',
'sigi.apps.contatos', 'sigi.apps.contatos',
'sigi.apps.casas', 'sigi.apps.casas',
'sigi.apps.inventario',
'django_bootstrap5', 'django_bootstrap5',
'localflavor', 'localflavor',
'django.forms', 'django.forms',

Loading…
Cancel
Save