mirror of https://github.com/interlegis/sapl.git
38 changed files with 476 additions and 172 deletions
@ -0,0 +1,34 @@ |
|||
Créditos do SAPL - até versão 2.5 |
|||
================================= |
|||
|
|||
Obrigado aos colaboradores: |
|||
|
|||
- Adriano Gomes |
|||
- Angelo Marcondes Neto |
|||
- Claudio Morale |
|||
- Daniel C. Azevedo |
|||
- Davi Lima de Medeiros |
|||
- Edson Ma |
|||
- Fernando Ciciliati Júnior |
|||
- Gustavo Lepri |
|||
- Halison Casimiro |
|||
- Helder Vieira |
|||
- Jean Rodrigo Ferri |
|||
- João Lima |
|||
- José Borges |
|||
- Leandro Roberto |
|||
- Leonardo Caballero |
|||
- Luciano Di Fázio |
|||
- Luis Fernando Pires Machado |
|||
- Marcio Mazza |
|||
- Marcos Fragomeni |
|||
- Maria Cristina André de Mello |
|||
- Marta Maria Pincowsca Cardoso Maia |
|||
- Paulo Fernandes de Souza Júnior |
|||
- Petronio Barbosa Carvalho |
|||
- Ricardo Esperandio |
|||
- Rodrigo Barbosa Luz |
|||
- Sesóstris Vieira |
|||
- Sérgio Damiati |
|||
- Wilton Souza Alencar |
|||
- Wu Man Qi |
|||
@ -0,0 +1,69 @@ |
|||
import yaml |
|||
from django.conf import settings |
|||
from django.contrib.auth.models import Group, User |
|||
|
|||
|
|||
def le_yaml_dados_zope(caminho_yaml): |
|||
with open(caminho_yaml, 'r') as f: |
|||
dados = yaml.load(f.read()) |
|||
return dados |
|||
|
|||
PERFIL_LEGADO_PARA_NOVO = [ |
|||
('Autor', 'Autor'), |
|||
('Operador', 'Operador Geral'), |
|||
('Operador Comissao', 'Operador de Comissões'), |
|||
('Operador Materia', 'Operador de Matéria'), |
|||
('Operador Modulo Administrativo', 'Operador Administrativo'), |
|||
('Operador Norma', 'Operador de Norma Jurídica'), |
|||
('Operador Parlamentar', 'Parlamentar'), |
|||
('Operador Protocolo', 'Operador de Protocolo Administrativo'), |
|||
('Operador Sessao Plenaria', 'Operador de Sessão Plenária'), |
|||
] |
|||
|
|||
ADMINISTRADORES = ['Administrador', 'Manager'] |
|||
|
|||
VOTANTE = Group.objects.get(name='Votante') |
|||
|
|||
|
|||
def migra_usuarios(caminho_yaml): |
|||
""" |
|||
Existe um método em nosso projeto interno de **consulta a todos os sapls** |
|||
que exporta os dados de usuários (e nome da casa e url interna) |
|||
como um yaml. |
|||
|
|||
Esse yaml é lido por essa rotina e os usuários são criados se necessário |
|||
e seus perfis ajustados. |
|||
|
|||
Os seguintes perfis no legado não correspondem a nenhum no código atual |
|||
e estão sendo **ignorados**: |
|||
|
|||
* Operador Mesa Diretora |
|||
Contei apenas **8 usuários**, em todas as bases, que tem esse perfil |
|||
e não tem nem "Operador" nem "Operador Sessao Plenaria" |
|||
|
|||
* Operador Ordem Dia |
|||
Contei apenas **16 usuários**, em todas as bases, que tem esse perfil |
|||
e não tem nem "Operador" nem "Operador Sessao Plenaria" |
|||
|
|||
* Operador Tabela Auxiliar |
|||
A edição das tabelas auxiliares deve ser feita por um administrador |
|||
|
|||
* Operador Lexml |
|||
Também podemos assumir que essa é uma tarefa de um administrador |
|||
""" |
|||
dados = le_yaml_dados_zope(caminho_yaml) |
|||
db = settings.DATABASES['legacy']['NAME'] |
|||
nome, url, usuarios_perfis = dados[db] |
|||
for nome, perfis in usuarios_perfis: |
|||
usuario, _ = User.objects.get_or_create(username=nome) |
|||
for legado, novo in PERFIL_LEGADO_PARA_NOVO: |
|||
if legado in perfis: |
|||
grupo = Group.objects.get(name=novo) |
|||
usuario.groups.add(grupo) |
|||
# Manager |
|||
if any(a in perfis for a in ADMINISTRADORES): |
|||
usuario.is_staff = True |
|||
usuario.save() |
|||
# Votante |
|||
if 'Parlamentar' in perfis: |
|||
usuario.groups.add(VOTANTE) |
|||
@ -0,0 +1,38 @@ |
|||
# -*- coding: utf-8 -*- |
|||
from __future__ import unicode_literals |
|||
from django.db import migrations |
|||
import json |
|||
import os |
|||
from datetime import timedelta |
|||
|
|||
from django.core.management import call_command |
|||
|
|||
|
|||
|
|||
def altera_data_inicio_mandato(apps, schema_editor): |
|||
Mandato = apps.get_model("parlamentares", "Mandato") |
|||
mandatos = Mandato.objects.all() |
|||
|
|||
for mandato in mandatos: |
|||
data_inicio = mandato.data_inicio_mandato |
|||
data_inicio_legislatura = mandato.legislatura.data_inicio |
|||
days = abs((data_inicio - data_inicio_legislatura).days) |
|||
|
|||
if days >= 60: |
|||
mandato.data_inicio_mandato = data_inicio_legislatura |
|||
mandato.save() |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
# A dependencia real desse script é o arquivo 0001_initial.py, mas |
|||
# isso gera um erro (Conflicting migrations detected; multiple leaf |
|||
# nodes in the migration graph). para não ocasionar problemas de migração, |
|||
# vamos manter a ordem padrão do django. |
|||
('parlamentares', '0009_auto_20170905_1617'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.RunPython(altera_data_inicio_mandato), |
|||
] |
|||
@ -0,0 +1,12 @@ |
|||
{% extends "crud/form.html" %} |
|||
{% load i18n %} |
|||
{% block extra_js %} |
|||
<script language="Javascript"> |
|||
// Caso o campo esteja desabilitado (quando não é a primeira tramitação), |
|||
// habilita ele no momento do submit para que o valor de unidade local |
|||
// não seja enviado como vazio |
|||
$('form').submit(function(){ |
|||
$('#id_unidade_tramitacao_local').prop('disabled', false); |
|||
}); |
|||
</script> |
|||
{% endblock extra_js %} |
|||
Loading…
Reference in new issue