|
|
@ -387,7 +387,7 @@ class MateriaLegislativa(models.Model): |
|
|
update_fields=update_fields) |
|
|
update_fields=update_fields) |
|
|
|
|
|
|
|
|
@staticmethod |
|
|
@staticmethod |
|
|
def get_proximo_numero(tipo, ano=None, numero_preferido=None): |
|
|
def get_proximo_numero(tipo, ano=None, numero_candidato=None): |
|
|
""" |
|
|
""" |
|
|
Retorna o próximo número disponível para uma MateriaLegislativa |
|
|
Retorna o próximo número disponível para uma MateriaLegislativa |
|
|
baseado no tipo e nas configurações de numeração. |
|
|
baseado no tipo e nas configurações de numeração. |
|
|
@ -399,7 +399,7 @@ class MateriaLegislativa(models.Model): |
|
|
Args: |
|
|
Args: |
|
|
tipo: TipoMateriaLegislativa ou int/str - o tipo da matéria |
|
|
tipo: TipoMateriaLegislativa ou int/str - o tipo da matéria |
|
|
ano: int - o ano da matéria (default: ano atual) |
|
|
ano: int - o ano da matéria (default: ano atual) |
|
|
numero_preferido: int - número preferido/desejado (opcional). |
|
|
numero_candidato: int - número candidato/desejado (opcional). |
|
|
Se fornecido e disponível, será retornado. Caso contrário, |
|
|
Se fornecido e disponível, será retornado. Caso contrário, |
|
|
retorna o próximo sequencial. |
|
|
retorna o próximo sequencial. |
|
|
|
|
|
|
|
|
@ -407,7 +407,6 @@ class MateriaLegislativa(models.Model): |
|
|
tuple[int, int]: Uma tupla contendo (numero, ano) da matéria. |
|
|
tuple[int, int]: Uma tupla contendo (numero, ano) da matéria. |
|
|
""" |
|
|
""" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ano is None: |
|
|
if ano is None: |
|
|
ano = timezone.now().year |
|
|
ano = timezone.now().year |
|
|
|
|
|
|
|
|
@ -467,20 +466,20 @@ class MateriaLegislativa(models.Model): |
|
|
else: |
|
|
else: |
|
|
numero = {'numero__max': 0} |
|
|
numero = {'numero__max': 0} |
|
|
|
|
|
|
|
|
# Converte o número preferido para inteiro, se possível |
|
|
# Converte o número candidato para inteiro, se possível |
|
|
numero_preferido_int = None |
|
|
numero_candidato_int = None |
|
|
if numero_preferido: |
|
|
if numero_candidato is not None: |
|
|
try: |
|
|
try: |
|
|
numero_preferido_int = int(numero_preferido) |
|
|
numero_candidato_int = int(numero_candidato) |
|
|
except (TypeError, ValueError): |
|
|
except (TypeError, ValueError): |
|
|
numero_preferido_int = None |
|
|
numero_candidato_int = None |
|
|
|
|
|
|
|
|
# Verifica se o número preferido está disponível |
|
|
# Verifica se o número candidato está disponível |
|
|
if numero_preferido_int is not None and not MateriaLegislativa.objects.filter( |
|
|
if numero_candidato_int is not None and not MateriaLegislativa.objects.filter( |
|
|
tipo=tipo, |
|
|
tipo=tipo, |
|
|
ano=ano, |
|
|
ano=ano, |
|
|
numero=numero_preferido_int).exists(): |
|
|
numero=numero_candidato_int).exists(): |
|
|
return numero_preferido_int, ano |
|
|
return numero_candidato_int, ano |
|
|
|
|
|
|
|
|
# Retorna o próximo número sequencial |
|
|
# Retorna o próximo número sequencial |
|
|
max_numero = numero['numero__max'] |
|
|
max_numero = numero['numero__max'] |
|
|
|