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