Browse Source

Coloca FK para ProtocoloAdm em DocAdm e faz script de substituicao

pull/940/head
Eduardo Calil 9 years ago
parent
commit
9e625008bd
  1. 26
      sapl/protocoloadm/migrations/0012_auto_20170315_1211.py
  2. 100
      sapl/protocoloadm/models.py
  3. 22
      scripts/fk_protocoloadm_docadm.py

26
sapl/protocoloadm/migrations/0012_auto_20170315_1211.py

@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2017-03-15 12:11
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('protocoloadm', '0011_merge'),
]
operations = [
migrations.AddField(
model_name='documentoadministrativo',
name='protocolo',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='protocoloadm.Protocolo'),
),
migrations.AlterField(
model_name='documentoadministrativo',
name='observacao',
field=models.TextField(blank=True, null=True, verbose_name='Observação'),
),
]

100
sapl/protocoloadm/models.py

@ -47,6 +47,54 @@ def texto_upload_path(instance, filename):
"""
@reversion.register()
class Protocolo(models.Model):
numero = models.PositiveIntegerField(
blank=False, null=False, verbose_name=_('Número de Protocolo'))
ano = models.PositiveSmallIntegerField(blank=False,
null=False,
choices=RANGE_ANOS,
verbose_name=_('Ano do Protocolo'))
data = models.DateField()
hora = models.TimeField()
# TODO transformar campo timestamp em auto_now_add
timestamp = models.DateTimeField()
tipo_protocolo = models.PositiveIntegerField(
blank=True, null=True, verbose_name=_('Tipo de Protocolo'))
tipo_processo = models.PositiveIntegerField()
interessado = models.CharField(
max_length=60, blank=True, verbose_name=_('Interessado'))
autor = models.ForeignKey(Autor, blank=True, null=True)
assunto_ementa = models.TextField(blank=True)
tipo_documento = models.ForeignKey(
TipoDocumentoAdministrativo,
blank=True,
null=True,
verbose_name=_('Tipo de documento'))
tipo_materia = models.ForeignKey(
TipoMateriaLegislativa,
blank=True,
null=True,
verbose_name=_('Tipo Matéria'))
numero_paginas = models.PositiveIntegerField(
blank=True, null=True, verbose_name=_('Número de Páginas'))
observacao = models.TextField(
blank=True, verbose_name=_('Observação'))
anulado = models.BooleanField()
user_anulacao = models.CharField(max_length=20, blank=True)
ip_anulacao = models.CharField(max_length=15, blank=True)
justificativa_anulacao = models.CharField(
max_length=60, blank=True, verbose_name='Motivo')
timestamp_anulacao = models.DateTimeField(blank=True, null=True)
class Meta:
verbose_name = _('Protocolo')
verbose_name_plural = _('Protocolos')
permissions = (
('action_anular_protocolo', _('Permissão para Anular Protocolo')),
)
@reversion.register()
class DocumentoAdministrativo(models.Model):
tipo = models.ForeignKey(
@ -54,6 +102,10 @@ class DocumentoAdministrativo(models.Model):
numero = models.PositiveIntegerField(verbose_name=_('Número'))
ano = models.PositiveSmallIntegerField(verbose_name=_('Ano'),
choices=RANGE_ANOS)
protocolo = models.ForeignKey(
Protocolo,
blank=True,
null=True)
data = models.DateField(verbose_name=_('Data'))
numero_protocolo = models.PositiveIntegerField(
blank=True, null=True, verbose_name=_('Núm. Protocolo'))
@ -160,54 +212,6 @@ class DocumentoAcessorioAdministrativo(models.Model):
update_fields=update_fields)
@reversion.register()
class Protocolo(models.Model):
numero = models.PositiveIntegerField(
blank=False, null=False, verbose_name=_('Número de Protocolo'))
ano = models.PositiveSmallIntegerField(blank=False,
null=False,
choices=RANGE_ANOS,
verbose_name=_('Ano do Protocolo'))
data = models.DateField()
hora = models.TimeField()
# TODO transformar campo timestamp em auto_now_add
timestamp = models.DateTimeField()
tipo_protocolo = models.PositiveIntegerField(
blank=True, null=True, verbose_name=_('Tipo de Protocolo'))
tipo_processo = models.PositiveIntegerField()
interessado = models.CharField(
max_length=60, blank=True, verbose_name=_('Interessado'))
autor = models.ForeignKey(Autor, blank=True, null=True)
assunto_ementa = models.TextField(blank=True)
tipo_documento = models.ForeignKey(
TipoDocumentoAdministrativo,
blank=True,
null=True,
verbose_name=_('Tipo de documento'))
tipo_materia = models.ForeignKey(
TipoMateriaLegislativa,
blank=True,
null=True,
verbose_name=_('Tipo Matéria'))
numero_paginas = models.PositiveIntegerField(
blank=True, null=True, verbose_name=_('Número de Páginas'))
observacao = models.TextField(
blank=True, verbose_name=_('Observação'))
anulado = models.BooleanField()
user_anulacao = models.CharField(max_length=20, blank=True)
ip_anulacao = models.CharField(max_length=15, blank=True)
justificativa_anulacao = models.CharField(
max_length=60, blank=True, verbose_name='Motivo')
timestamp_anulacao = models.DateTimeField(blank=True, null=True)
class Meta:
verbose_name = _('Protocolo')
verbose_name_plural = _('Protocolos')
permissions = (
('action_anular_protocolo', _('Permissão para Anular Protocolo')),
)
@reversion.register()
class StatusTramitacaoAdministrativo(models.Model):
INDICADOR_CHOICES = Choices(

22
scripts/fk_protocoloadm_docadm.py

@ -0,0 +1,22 @@
# Esse script foi feito para substituir a referência a Protocolo
# em algum Documento, que antes era numero e ano, para uma FK
from django.core.exceptions import ObjectDoesNotExist
from sapl.protocoloadm.models import DocumentoAdministrativo, Protocolo
def substitui():
for d in DocumentoAdministrativo.objects.all():
if d.numero_protocolo:
try:
d.protocolo = Protocolo.objects.get(
ano=d.ano,
numero=d.numero_protocolo)
d.save()
except ObjectDoesNotExist:
return
if __name__ == '__main__':
substitui()
Loading…
Cancel
Save