Skip to content

Commit

Permalink
Merge branch 'release/0.7.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
alcfernandes committed Aug 24, 2020
2 parents de4d2fb + 96d810a commit 4d4ad5c
Show file tree
Hide file tree
Showing 158 changed files with 4,191 additions and 255 deletions.
18 changes: 17 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,27 @@ API da aplicação *SIG.Escola* da Secretaria de Educação da cidade de São Pa

License: MIT

Versão: 0.6.0
Versão: 0.7.0


## Release Notes

### 0.7.0 - 20/08/2020 - Entregas da Sprint 8
* Exportação de dados da Associação;
* Gestão de valor realizado nas despesas da Associação;
* Notificação de transações não demonstradas a mais de certo tempo;
* Prestação de contas: Permitir selecionar apenas períodos até o próximo período pendente;
* Atualiza carga de usuários para incluir a visão (UE, DRE ou SME);
* Menus sensíveis às visões UE e DRE;
* Permite ao usuário alternar entre visões e unidades (UEs ou DREs);
* Lista de associações da DRE;
* Consulta dados de uma associação da DRE;
* Consulta dados de uma UE da DRE;
* Cadastro de processos SEI de regularidade e prestação de contas de uma Associação;
* Checklists de regularidade de uma associação da DRE;
* Consulta de dados da DRE;
* Cadastro de técnicos da DRE.

### 0.6.0 - 28/07/2020 - Entregas da Sprint 7
* Carga de valores reprogramados (implantação de saldos);
* Novos campos (e-mail e CCM) no cadastro da Associação;
Expand Down
9 changes: 8 additions & 1 deletion config/api_router.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from django.conf import settings
from django.urls import include, path
from django.urls import path
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework.routers import DefaultRouter, SimpleRouter
Expand All @@ -13,11 +13,15 @@
PeriodosViewSet,
PrestacoesContasViewSet,
RelacaoBensViewSet,
ProcessosAssociacaoViewSet,
UnidadesViewSet

)
from sme_ptrf_apps.despesas.api.views.despesas_viewset import DespesasViewSet
from sme_ptrf_apps.despesas.api.views.especificacoes_viewset import EspecificacaoMaterialServicoViewSet
from sme_ptrf_apps.despesas.api.views.fornecedores_viewset import FornecedoresViewSet
from sme_ptrf_apps.despesas.api.views.rateios_despesas_viewset import RateiosDespesasViewSet
from sme_ptrf_apps.dre.api.views import TecnicosDreViewSet
from sme_ptrf_apps.receitas.api.views import ReceitaViewSet, RepasseViewSet
from sme_ptrf_apps.users.api.views import EsqueciMinhaSenhaViewSet, LoginView, RedefinirSenhaViewSet, UserViewSet

Expand Down Expand Up @@ -48,6 +52,9 @@ def versao(request):
router.register("membros-associacao", MembroAssociacaoViewSet)
router.register("esqueci-minha-senha", EsqueciMinhaSenhaViewSet)
router.register("redefinir-senha", RedefinirSenhaViewSet)
router.register("processos-associacao", ProcessosAssociacaoViewSet)
router.register("unidades", UnidadesViewSet)
router.register("tecnicos-dre", TecnicosDreViewSet)

app_name = "api"
urlpatterns = router.urls
Expand Down
1 change: 1 addition & 0 deletions config/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@
"sme_ptrf_apps.users.apps.UsersConfig",
"sme_ptrf_apps.despesas.apps.DespesasConfig",
"sme_ptrf_apps.receitas.apps.ReceitasConfig",
"sme_ptrf_apps.dre.apps.DreConfig",
# Your stuff: custom apps go here
]
# https://docs.djangoproject.com/en/dev/ref/settings/#installed-apps
Expand Down
4 changes: 2 additions & 2 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ services:
env_file: .env
volumes:
- ../ptrf-postgres-data:/var/lib/postgresql/data
# ports:
# - 5434:5432
ports:
- 5434:5432

api_ptrf:
container_name: api-ptrf
Expand Down
2 changes: 1 addition & 1 deletion sme_ptrf_apps/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
__version__ = "0.6.0"
__version__ = "0.7.0"
__version_info__ = tuple(
[
int(num) if num.isdigit() else num
Expand Down
119 changes: 96 additions & 23 deletions sme_ptrf_apps/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,31 +15,37 @@


@pytest.fixture
def fake_user(client, django_user_model, associacao):
def fake_user(client, django_user_model, unidade):
password = 'teste'
username = 'fake'
user = django_user_model.objects.create_user(username=username, password=password, associacao=associacao)
user = django_user_model.objects.create_user(username=username, password=password)
client.login(username=username, password=password)
user.unidades.add(unidade)
user.save()
return user


@pytest.fixture
def authenticated_client(client, django_user_model, associacao):
def authenticated_client(client, django_user_model, unidade):
password = 'teste'
username = 'fake'
django_user_model.objects.create_user(username=username, password=password, associacao=associacao)
user = django_user_model.objects.create_user(username=username, password=password)
client.login(username=username, password=password)
user.unidades.add(unidade)
user.save()
return client


@pytest.fixture
def usuario(associacao):
def usuario(unidade):
from django.contrib.auth import get_user_model
senha = 'Sgp0418'
login = '7210418'
email = '[email protected]'
User = get_user_model()
user = User.objects.create_user(username=login, password=senha, associacao=associacao, email=email)
user = User.objects.create_user(username=login, password=senha, email=email)
user.unidades.add(unidade)
user.save()
return user


Expand Down Expand Up @@ -120,7 +126,29 @@ def dre():

@pytest.fixture
def unidade(dre):
return baker.make('Unidade', codigo_eol='123456', dre=dre, tipo_unidade='CEU', nome='Escola Teste')
return baker.make(
'Unidade',
nome='Escola Teste',
tipo_unidade='CEU',
codigo_eol='123456',
dre=dre,
sigla='ET',
cep='5868120',
tipo_logradouro='Travessa',
logradouro='dos Testes',
bairro='COHAB INSTITUTO ADVENTISTA',
numero='200',
complemento='fundos',
telefone='58212627',
email='[email protected]',
qtd_alunos=1000,
diretor_nome='Pedro Amaro',
dre_cnpj='63.058.286/0001-86',
dre_diretor_regional_rf='1234567',
dre_diretor_regional_nome='Anthony Edward Stark',
dre_designacao_portaria='Portaria nº 0.000',
dre_designacao_ano='2017',
)


@pytest.fixture
Expand All @@ -130,13 +158,10 @@ def associacao(unidade, periodo_anterior):
nome='Escola Teste',
cnpj='52.302.275/0001-83',
unidade=unidade,
presidente_associacao_nome='Fulano',
presidente_associacao_rf='1234567',
presidente_conselho_fiscal_nome='Ciclano',
presidente_conselho_fiscal_rf='7654321',
periodo_inicial=periodo_anterior,
ccm='0.000.00-0',
email="[email protected]"
email="[email protected]",
processo_regularidade='123456'
)


Expand All @@ -147,10 +172,6 @@ def outra_associacao(unidade, periodo_anterior):
nome='Outra',
cnpj='52.302.275/0001-99',
unidade=unidade,
presidente_associacao_nome='Fulano',
presidente_associacao_rf='1234567',
presidente_conselho_fiscal_nome='Ciclano',
presidente_conselho_fiscal_rf='7654321',
periodo_inicial=periodo_anterior,
)

Expand All @@ -160,12 +181,8 @@ def associacao_sem_periodo_inicial(unidade):
return baker.make(
'Associacao',
nome='Escola Teste',
cnpj='52.302.275/0001-83',
cnpj='44.219.758/0001-90',
unidade=unidade,
presidente_associacao_nome='Fulano',
presidente_associacao_rf='1234567',
presidente_conselho_fiscal_nome='Ciclano',
presidente_conselho_fiscal_rf='7654321',
periodo_inicial=None,
)

Expand Down Expand Up @@ -501,7 +518,8 @@ def fechamento_2020_1(periodo_2020_1, associacao, conta_associacao, acao_associa


@pytest.fixture
def fechamento_2020_1_com_livre(periodo_2020_1, associacao, conta_associacao, acao_associacao, prestacao_conta_2020_1_conciliada):
def fechamento_2020_1_com_livre(periodo_2020_1, associacao, conta_associacao, acao_associacao,
prestacao_conta_2020_1_conciliada):
return baker.make(
'FechamentoPeriodo',
periodo=periodo_2020_1,
Expand Down Expand Up @@ -1115,7 +1133,8 @@ def rateio_fora_periodo_50_custeio(associacao, despesa_fora_periodo, conta_assoc
def parametros():
return baker.make(
'Parametros',
permite_saldo_conta_negativo=True
permite_saldo_conta_negativo=True,
fique_de_olho='',
)


Expand All @@ -1135,6 +1154,21 @@ def parametros_nao_aceita_saldo_negativo_em_conta():
)


@pytest.fixture
def parametros_tempo_nao_conferido_10_dias():
return baker.make(
'Parametros',
tempo_notificar_nao_demonstrados=10
)

@pytest.fixture
def parametros_tempo_nao_conferido_60_dias():
return baker.make(
'Parametros',
tempo_notificar_nao_demonstrados=60
)


@pytest.fixture
def ata_2020_1_cheque_aprovada(prestacao_conta_2020_1_conciliada):
return baker.make(
Expand Down Expand Up @@ -1193,6 +1227,34 @@ def membro_associacao(associacao):
)


@pytest.fixture
def membro_associacao_presidente_conselho(associacao):
return baker.make(
'MembroAssociacao',
nome='Arthur Nobrega',
associacao=associacao,
cargo_associacao=MembroEnum.PRESIDENTE_CONSELHO_FISCAL.value,
cargo_educacao='Coordenador',
representacao=RepresentacaoCargo.SERVIDOR.value,
codigo_identificacao='567432',
email='[email protected]'
)


@pytest.fixture
def membro_associacao_presidente_associacao(associacao):
return baker.make(
'MembroAssociacao',
nome='Arthur Nobrega',
associacao=associacao,
cargo_associacao=MembroEnum.PRESIDENTE_DIRETORIA_EXECUTIVA.value,
cargo_educacao='Coordenador',
representacao=RepresentacaoCargo.SERVIDOR.value,
codigo_identificacao='567432',
email='[email protected]'
)


@pytest.fixture
def payload_membro_servidor(associacao):
payload = {
Expand Down Expand Up @@ -1258,3 +1320,14 @@ def tag_ativa():
nome="COVID-19",
status=StatusTag.ATIVO.name
)

@pytest.fixture
def processo_associacao_123456_2019(associacao):
return baker.make(
'ProcessoAssociacao',
associacao=associacao,
numero_processo='123456',
ano='2019'
)


58 changes: 50 additions & 8 deletions sme_ptrf_apps/core/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
TipoConta,
Unidade,
Tag,
ProcessoAssociacao,
)

admin.site.register(TipoConta)
Expand All @@ -37,15 +38,11 @@ def get_nome_escola(self, obj):

get_nome_escola.short_description = 'Escola'

list_display = ('nome', 'cnpj', 'get_nome_escola', 'get_usuarios')
list_display = ('nome', 'cnpj', 'get_nome_escola')
search_fields = ('uuid', 'nome', 'cnpj', 'unidade__nome')
list_filter = ('unidade__dre', 'periodo_inicial')
readonly_fields = ('uuid', 'id')

def get_usuarios(self, obj):
return ','.join([u.name for u in obj.usuarios.all()]) if obj.usuarios else ''

get_usuarios.short_description = 'Usuários'

@admin.register(ContaAssociacao)
class ContaAssociacaoAdmin(admin.ModelAdmin):
Expand Down Expand Up @@ -79,6 +76,41 @@ class UnidadeAdmin(admin.ModelAdmin):
search_fields = ('nome', 'codigo_eol', 'sigla')
list_filter = ('tipo_unidade', 'dre')
list_display_links = ('nome',)
readonly_fields = ('uuid',)

fieldsets = (
('Dados da Unidade', {
'fields': (
'nome',
'tipo_unidade',
'codigo_eol',
'dre',
'sigla',
'cep',
'tipo_logradouro',
'logradouro',
'bairro',
'numero',
'complemento',
'telefone',
'email',
'qtd_alunos',
'diretor_nome',
'uuid'
)
}),

('Dados da Diretoria da Unidade', {
'fields': (
'dre_cnpj',
'dre_diretor_regional_rf',
'dre_diretor_regional_nome',
'dre_designacao_portaria',
'dre_designacao_ano'
)
}),
)



@admin.register(FechamentoPeriodo)
Expand Down Expand Up @@ -145,9 +177,11 @@ def get_referencia_periodo(self, obj):
get_referencia_periodo.short_description = 'Período'

list_display = (
'get_eol_unidade', 'get_referencia_periodo', 'get_nome_conta', 'data_reuniao', 'tipo_ata', 'tipo_reuniao', 'convocacao',
'get_eol_unidade', 'get_referencia_periodo', 'get_nome_conta', 'data_reuniao', 'tipo_ata', 'tipo_reuniao',
'convocacao',
'parecer_conselho')
list_filter = ('parecer_conselho', 'tipo_ata', 'tipo_reuniao', 'convocacao', 'associacao', 'conta_associacao__tipo_conta')
list_filter = (
'parecer_conselho', 'tipo_ata', 'tipo_reuniao', 'convocacao', 'associacao', 'conta_associacao__tipo_conta')
list_display_links = ('get_eol_unidade',)
readonly_fields = ('uuid', id)
search_fields = ('associacao__unidade__codigo_eol',)
Expand All @@ -156,7 +190,7 @@ def get_referencia_periodo(self, obj):
@admin.register(Arquivo)
class ArquivoAdmin(admin.ModelAdmin):
list_display = ['identificador', 'conteudo', 'tipo_carga']
actions = ['processa_carga',]
actions = ['processa_carga', ]

def processa_carga(self, request, queryset):
processa_cargas(queryset)
Expand All @@ -170,3 +204,11 @@ class TagAdmin(admin.ModelAdmin):
list_display = ['uuid', 'nome', 'status']
search_fields = ['status']
list_filter = ['nome', 'status']


@admin.register(ProcessoAssociacao)
class ProcessoAssociacaoAdmin(admin.ModelAdmin):
list_display = ('associacao', 'numero_processo', 'ano')
search_fields = ('uuid', 'numero_processo')
list_filter = ('ano', 'associacao',)
readonly_fields = ('uuid', 'id')
Loading

0 comments on commit 4d4ad5c

Please sign in to comment.