Skip to content

Instantly share code, notes, and snippets.

@JuniorLima
Created June 26, 2013 14:46
Show Gist options
  • Save JuniorLima/5867961 to your computer and use it in GitHub Desktop.
Save JuniorLima/5867961 to your computer and use it in GitHub Desktop.
Incrementar número de processo com base na hora atual
# -*- coding: utf-8 -*-
from datetime import datetime
from django.contrib.auth.models import User
from django.db import models
from geral.models import Pessoas, BasePessoas, Unidades, Orgaos, Logradouros
OPERACAO = (('1', 'Despacho'),('2', 'Transferência'),('3', 'Parecer'))
SETOR_CHOICES = (('P', 'Processo'),('O', 'ouvidoria'))
class Advogados(BasePessoas, Logradouros):
oab = models.CharField('OAB', max_length=10, blank=True, null=True)
class Meta:
verbose_name_plural = 'Advogados'
db_table = 'gtp\".\"advogados'
class Provocacoes(models.Model):
provocacao = models.CharField('Provocação', max_length=30, unique=True)
criado_em = models.DateTimeField(auto_now_add=True)
alterado_em = models.DateTimeField(auto_now=True)
autor = models.ForeignKey(User, blank=True, null=True)
def __unicode__(self):
return self.provocacao
class Meta:
verbose_name_plural = 'Provocações'
db_table = 'gtp\".\"provocacoes'
class Especies(models.Model):
especies = models.CharField('Espécies', max_length=30, unique=True)
criado_em = models.DateTimeField(auto_now_add=True)
alterado_em = models.DateTimeField(auto_now=True)
autor = models.ForeignKey(User, blank=True, null=True)
def __unicode__(self):
return self.especies
class Meta:
verbose_name_plural = 'Espécies'
db_table = 'gtp\".\"especies'
class Objetos(models.Model):
especie = models.ForeignKey(Especies, verbose_name='Espécie')
nome = models.CharField('Nome', max_length = 40, unique=True)
criado_em = models.DateTimeField(auto_now_add=True)
alterado_em = models.DateTimeField(auto_now=True)
autor = models.ForeignKey(User, blank=True, null=True)
def __unicode__(self):
return self.nome
class Meta:
verbose_name_plural = 'Objetos'
db_table = 'gtp\".\"objetos'
class Processos(models.Model):
#Dados
ano = models.CharField('Ano', max_length=4, default=2013)
codigo = models.CharField('Código do processo', max_length=32, blank=True, null=True, unique=True)
serie = models.CharField(max_length=2, choices=SETOR_CHOICES)
observacao = models.TextField('Observação', blank=True, null=True)
#Local do processo
#provocacao = models.ForeignKey(Provocacoes, verbose_name='Provocação')
provocacao = models.ForeignKey(Provocacoes, verbose_name='Provocação', blank=True, null=True)
#especie = models.ForeignKey(Especies, verbose_name='Espécie')
especie = models.ForeignKey(Especies, verbose_name='Espécie', blank=True, null=True)
objeto = models.ForeignKey(Objetos, verbose_name='Objeto')
unidade = models.ForeignKey(Unidades, verbose_name='Unidade')
orgaos = models.ForeignKey(Orgaos, verbose_name='Orgão Responsável', related_name='Orgão do processo', blank=True, null=True)
advogados = models.ForeignKey(Advogados, blank=True, null=True, verbose_name='Advogados', related_name='Advogado do processo')
#Pessoa
pessoa = models.ForeignKey(Pessoas, verbose_name='Pessoas', blank=True, null=True)
#Status do processo
# Transferência
transferido = models.BooleanField(default=False)
# Arquivamento
arquivado = models.BooleanField(default=False)
ala = models.CharField('Ala', max_length=30, blank=True, null=True)
estante = models.CharField('Estante', max_length=30, blank=True, null=True)
prateleira = models.CharField('Prateleira', max_length=30, blank=True, null=True)
caixa = models.CharField('Caixa', max_length=30, blank=True, null=True)
# Cancelamento
cancelamento = models.BooleanField(default=False)
motivo_cancelamento = models.TextField('Motivo de cancelamento', blank=True, null=True)
#ouvidoria
#Informações extras
criado_p_em = models.DateTimeField('Data entrada', auto_now_add=True)
autor_p = models.ForeignKey(User, blank=True, null=True, related_name='autor_processo')
alterado_p_em = models.DateTimeField('Data alteração', auto_now=True)
class Meta:
verbose_name = 'Processo'
verbose_name_plural = 'Processos'
db_table = 'gtp\".\"processos'
def save(self):
self.ano = datetime.today().year
if (self.pk is None):
self.codigo = self.get_proximo_codigo_manifestacao()
super(Processos, self).save()
def get_proximo_codigo_manifestacao(self):
ano_corrente = datetime.today().year
agora = datetime.now()
hora = agora.hour
minu = agora.minute
try:
ultima_manifestacao_ano = Processos.objects.filter(criado_p_em__year=ano_corrente).latest('id')
proximo_id_manifestacao = int(ultima_manifestacao_ano.id) + 1
except Processos.DoesNotExist:
proximo_id_manifestacao = 1
chave = "%s%s%d" % (hora, minu, proximo_id_manifestacao)
return chave
def numero_ano(self):
ano_corrente = datetime.today().year
try:
processo_do_ano = Processos.objects.filter(criado_p_em__year=ano_corrente).latest('id')
proximo_processo = int(processo_do_ano.id) + 1
except Processos.DoesNotExist:
proximo_processo = 1
numerop = proximo_processo
return numerop
class Movimentacao_Processos(models.Model):
processo = models.ForeignKey(Processos, verbose_name='Processos')
operacao = models.CharField('Operação', max_length=2, choices=OPERACAO)
observacao = models.TextField('Observação', blank=True, null=True)
previsao = models.PositiveSmallIntegerField('Previsão')
transferido = models.BooleanField()
numero_transferencia = models.CharField('Número de transferência', max_length=10)
criado_em = models.DateTimeField(auto_now_add=True)
alterado_em = models.DateTimeField(auto_now=True)
autor = models.ForeignKey(User, blank=True, null=True)
class Meta:
verbose_name_plural = 'Movimentação de Processos'
db_table = 'gtp\".\"movimentacao'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment