Sistema de Apoio ao Processo Legislativo
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

92 lines
3.3 KiB

from django import apps
from django.conf import settings
from django.db import connection, models
from django.db.utils import DEFAULT_DB_ALIAS, IntegrityError
from django.utils.translation import ugettext_lazy as _
class AppConfig(apps.AppConfig):
name = "sapl.compilacao"
label = "compilacao"
verbose_name = _("Compilação")
@staticmethod
def import_pattern():
from django.contrib.contenttypes.models import ContentType
from unipath import Path
from sapl.compilacao.models import TipoTextoArticulado
from sapl.compilacao.utils import get_integrations_view_names
compilacao_app = Path(__file__).ancestor(1)
# print(compilacao_app)
with open(compilacao_app + "/compilacao_data_tables.sql", "r") as f:
lines = f.readlines()
lines = [line.rstrip("\n") for line in lines]
with connection.cursor() as cursor:
for line in lines:
line = line.strip()
if not line or line.startswith("#"):
continue
try:
cursor.execute(line)
except IntegrityError as e:
if not settings.DEBUG:
print(
"{} {} {}".format(
_("Ocorreu erro na importação:"), line, str(e)
)
)
except Exception as ee:
print(ee)
integrations_view_names = get_integrations_view_names()
def cria_sigla(verbose_name):
verbose_name = verbose_name.upper().split()
if len(verbose_name) == 1:
verbose_name = verbose_name[0]
sigla = ""
for letra in verbose_name:
if letra in "BCDFGHJKLMNPQRSTVWXYZ":
sigla += letra
else:
sigla = "".join([palavra[0] for palavra in verbose_name])
return sigla[:3]
for view in integrations_view_names:
try:
tipo = TipoTextoArticulado()
tipo.sigla = cria_sigla(
view.model._meta.verbose_name
if view.model._meta.verbose_name
else view.model._meta.model_name
)
tipo.descricao = view.model._meta.verbose_name
tipo.content_type = ContentType.objects.get_by_natural_key(
view.model._meta.app_label, view.model._meta.model_name
)
tipo.save()
except IntegrityError as e:
if not settings.DEBUG:
print(
"{} {}".format(_("Ocorreu erro na criação tipo de ta:"), str(e))
)
def init_compilacao_base(
app_config, verbosity=2, interactive=True, using=DEFAULT_DB_ALIAS, **kwargs
):
if app_config != AppConfig and not isinstance(app_config, AppConfig):
return
from sapl.compilacao.models import TipoDispositivo
if not TipoDispositivo.objects.exists():
print("")
print("\033[93m\033[1m{}\033[0m".format(_("Iniciando Textos Articulados...")))
AppConfig.import_pattern()
models.signals.post_migrate.connect(receiver=init_compilacao_base)