mirror of https://github.com/interlegis/sigi.git
Marcio Mazza
10 years ago
123 changed files with 4022 additions and 123613 deletions
@ -0,0 +1,7 @@ |
|||||
|
[run] |
||||
|
omit = |
||||
|
sigi/wsgi.py |
||||
|
manage.py |
||||
|
setup.py |
||||
|
test_*.py |
||||
|
ipython_log.py |
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
@ -0,0 +1,10 @@ |
|||||
|
from django.contrib.sessions.models import Session |
||||
|
from django.contrib.auth.models import User |
||||
|
|
||||
|
|
||||
|
def user_from_session(session_key): |
||||
|
session = Session.objects.get(session_key=session_key) |
||||
|
uid = session.get_decoded().get('_auth_user_id') |
||||
|
user = User.objects.get(pk=uid) |
||||
|
print user.username, user.get_full_name(), user.email |
||||
|
return user |
@ -1,9 +1,10 @@ |
|||||
{% extends "change_list_with_cart.html" %} |
{% extends "change_list_with_cart.html" %} |
||||
|
{% load i18n %} |
||||
|
|
||||
{% block object-tools-items %} |
{% block object-tools-items %} |
||||
<li><a href="casas_sem_convenio_report/{{query_str}}"> |
<li><a href="casas_sem_convenio_report/{{query_str}}"> |
||||
<span class="glyphicon glyphicon-list"></span> |
<span class="glyphicon glyphicon-list"></span> |
||||
Casas sem Processo de Convênio |
{% trans 'Casas sem Processo de Convênio' %} |
||||
</a></li> |
</a></li> |
||||
{{ block.super }} |
{{ block.super }} |
||||
{% endblock %} |
{% endblock %} |
||||
|
@ -0,0 +1,17 @@ |
|||||
|
import pytest |
||||
|
from django_dynamic_fixture import G |
||||
|
|
||||
|
from sigi.apps.casas.models import CasaLegislativa |
||||
|
|
||||
|
|
||||
|
@pytest.fixture |
||||
|
def some_parliaments(): |
||||
|
return parliaments_from_names([ |
||||
|
"Assembleia Legislativa do Amapa", |
||||
|
"Camara Municipal de Fortaleza", |
||||
|
"Camara Legislativa do Distrito Federal", |
||||
|
]) |
||||
|
|
||||
|
|
||||
|
def parliaments_from_names(names): |
||||
|
return [G(CasaLegislativa, nome=name, foto=None, gerente_contas=None,) for name in names] |
File diff suppressed because it is too large
File diff suppressed because it is too large
@ -1,16 +1,17 @@ |
|||||
{% extends "base_change_form.html" %} |
{% extends "base_change_form.html" %} |
||||
|
{% load static from staticfiles %} |
||||
{% load i18n reporting_tags %} |
{% load i18n reporting_tags %} |
||||
|
|
||||
{% block extrastyle %} |
{% block extrastyle %} |
||||
{{ block.super }} |
{{ block.super }} |
||||
<link rel="stylesheet" type="text/css" href="{{MEDIA_URL}}css/admin/diagnosticos/diagnostico/change_form.css"> |
<link rel="stylesheet" type="text/css" href="{% static 'css/admin/diagnosticos/diagnostico/change_form.css' %}"> |
||||
{% endblock %} |
{% endblock %} |
||||
|
|
||||
{% block object-tools %} |
{% block object-tools %} |
||||
{% if change %}{% if not is_popup %} |
{% if change %}{% if not is_popup %} |
||||
<ul class="object-tools"> |
<ul class="object-tools"> |
||||
<li><a href="history/" class="historylink">{% trans "History" %}</a></li> |
<li><a href="history/" class="historylink">{% trans "History" %}</a></li> |
||||
<li><a href="{{adminform.form.instance.get_absolute_url }}" class="viewsitelink">Ver em PDF</a></li> |
<li><a href="{{adminform.form.instance.get_absolute_url }}" class="viewsitelink">{% trans 'Ver em PDF' %}</a></li> |
||||
</ul> |
</ul> |
||||
{% endif %}{% endif %} |
{% endif %}{% endif %} |
||||
{% endblock %} |
{% endblock %} |
||||
|
@ -1,18 +1,20 @@ |
|||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||
from django.db import models |
from django.db import models |
||||
|
from django.utils.translation import ugettext as _ |
||||
|
|
||||
from sigi.apps.convenios.models import Projeto |
from sigi.apps.convenios.models import Projeto |
||||
|
|
||||
|
|
||||
class Desembolso(models.Model): |
class Desembolso(models.Model): |
||||
projeto = models.ForeignKey(Projeto, verbose_name=u'Projeto') |
projeto = models.ForeignKey(Projeto, verbose_name=_(u'Projeto')) |
||||
descricao = models.CharField(u'Descrição da despesa', max_length=100) |
descricao = models.CharField(_(u'Descrição da despesa'), max_length=100) |
||||
data = models.DateField(u'Data do desembolso') |
data = models.DateField(_(u'Data do desembolso')) |
||||
valor_reais = models.DecimalField(u'Valor em R$', max_digits=18, decimal_places=2) |
valor_reais = models.DecimalField(_(u'Valor em R$'), max_digits=18, decimal_places=2) |
||||
valor_dolar = models.DecimalField(u'Valor em US$', max_digits=18, decimal_places=2) |
valor_dolar = models.DecimalField(_(u'Valor em US$'), max_digits=18, decimal_places=2) |
||||
|
|
||||
class Meta: |
class Meta: |
||||
verbose_name = 'Desembolso' |
verbose_name = _(u'Desembolso') |
||||
verbose_name_plural = 'Desembolsos' |
verbose_name_plural = _(u'Desembolsos') |
||||
|
|
||||
def __unicode__(self): |
def __unicode__(self): |
||||
return u"%s (US$ %s)" % (self.descricao, self.valor_dolar) |
return u"%s (US$ %s)" % (self.descricao, self.valor_dolar) |
||||
|
@ -0,0 +1,6 @@ |
|||||
|
{% load menus %} |
||||
|
<ul class="nav navbar-nav"> |
||||
|
{% for menu_item in menu_items %} |
||||
|
{% show_menu_item menu_item base_url %} |
||||
|
{% endfor %} |
||||
|
</ul> |
@ -0,0 +1,17 @@ |
|||||
|
{% load menus %} |
||||
|
{% if menu_item.children %} |
||||
|
<li class="dropdown"> |
||||
|
{% if menu_item.url %} |
||||
|
<a href="{{base_url}}{{ menu_item.url }}" class="dropdown-toggle" data-toggle="dropdown">{{ menu_item.title }}</a> |
||||
|
{% else %} |
||||
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown">{{ menu_item.title }} <span class="caret"></span></a> |
||||
|
{% endif %} |
||||
|
<ul class="dropdown-menu" role="menu"> |
||||
|
{% for child in menu_item.children %} |
||||
|
{% show_menu_item child base_url %} |
||||
|
{% endfor %} |
||||
|
</ul> |
||||
|
</li> |
||||
|
{% else %} |
||||
|
<li><a href="{{base_url}}{{ menu_item.url }}">{{ menu_item.title }}</a></li> |
||||
|
{% endif %} |
@ -0,0 +1,97 @@ |
|||||
|
main_menu: |
||||
|
- title: Gráficos |
||||
|
url: '' |
||||
|
- title: Municípios |
||||
|
url: admin:contatos/municipio/ |
||||
|
children: |
||||
|
- title: Municípios |
||||
|
url: contatos/municipio/ |
||||
|
- title: Unidades Federativas |
||||
|
url: contatos/unidadefederativa/ |
||||
|
- title: Casas Legislativas |
||||
|
url: casas/casalegislativa/ |
||||
|
children: |
||||
|
- title: Todas |
||||
|
url: casas/casalegislativa/ |
||||
|
- title: Câmaras Municipais |
||||
|
url: casas/casalegislativa/?tipo__id__exact=1 |
||||
|
- title: Assembléias Legislativas |
||||
|
url: casas/casalegislativa/?tipo__id__exact=2 |
||||
|
- title: Legislaturas |
||||
|
url: mesas/legislatura/ |
||||
|
children: |
||||
|
- title: Todas |
||||
|
url: mesas/legislatura/ |
||||
|
- title: Parlamentares |
||||
|
url: parlamentares/parlamentar/ |
||||
|
- title: Tabela de cargos |
||||
|
url: mesas/cargo/ |
||||
|
- title: Tabela de partidos |
||||
|
url: parlamentares/partido/ |
||||
|
- title: Diagnósticos |
||||
|
url: diagnosticos/diagnostico/ |
||||
|
children: |
||||
|
- title: Administração |
||||
|
url: diagnosticos/diagnostico/ |
||||
|
- title: Coleta de dados |
||||
|
url: diagnosticos/mobile/ |
||||
|
- title: Gráficos e estatísticas |
||||
|
url: diagnosticos-graficos |
||||
|
- title: Convênios |
||||
|
url: convenios/convenio/ |
||||
|
children: |
||||
|
- title: Convênios |
||||
|
url: convenios/convenio/ |
||||
|
- title: Planos diretores |
||||
|
url: metas/planodiretor/ |
||||
|
- title: Inventário |
||||
|
url: inventario/bem/ |
||||
|
children: |
||||
|
- title: Bens |
||||
|
url: inventario/bem/ |
||||
|
- title: Fornecedores |
||||
|
url: inventario/fornecedor/ |
||||
|
- title: Equipamentos |
||||
|
url: inventario/equipamento/ |
||||
|
- title: Fabricantes |
||||
|
url: inventario/fabricante/ |
||||
|
- title: Tipos de equipamentos |
||||
|
url: inventario/tipoequipamento/ |
||||
|
- title: Modelos de equipamentos |
||||
|
url: inventario/modeloequipamento/ |
||||
|
- title: Servidores |
||||
|
url: servidores/servidor/?user__is_active__exact=1 |
||||
|
children: |
||||
|
- title: Pessoal |
||||
|
url: servidores/servidor/?user__is_active__exact=1 |
||||
|
- title: Funções |
||||
|
url: servidores/funcao |
||||
|
- title: Férias |
||||
|
url: servidores/ferias/ |
||||
|
- title: Licenças |
||||
|
url: servidores/licenca/ |
||||
|
- title: Serviços SEIT |
||||
|
url: servicos/casaatendida/ |
||||
|
children: |
||||
|
- title: Tipos de serviço |
||||
|
url: servicos/tiposervico/ |
||||
|
- title: Casas atendidas |
||||
|
url: servicos/casaatendida/ |
||||
|
- title: Lista de serviços |
||||
|
url: servicos/servico/ |
||||
|
- title: Ocorrências |
||||
|
url: ocorrencias/ocorrencia/?grupo=S&status__in=1,2 |
||||
|
children: |
||||
|
- title: Registro de ocorrências |
||||
|
url: ocorrencias/ocorrencia/?grupo=S&status__in=1,2 |
||||
|
- title: Tabela de categorias |
||||
|
url: ocorrencias/categoria/ |
||||
|
- title: Tipos de contato |
||||
|
url: ocorrencias/tipocontato/ |
||||
|
- title: Financeiro |
||||
|
url: financeiro/desembolso/ |
||||
|
children: |
||||
|
- title: Desembolsos |
||||
|
url: financeiro/desembolso/ |
||||
|
- title: Dashboard |
||||
|
url: metas-dashboardsss |
@ -0,0 +1,21 @@ |
|||||
|
from os.path import dirname |
||||
|
|
||||
|
import yaml |
||||
|
from django import template |
||||
|
|
||||
|
|
||||
|
register = template.Library() |
||||
|
|
||||
|
menus = yaml.load(open(dirname(__file__) + '/menu_conf.yaml', 'r')) |
||||
|
|
||||
|
|
||||
|
@register.inclusion_tag('menus/menu.html', takes_context=True) |
||||
|
def show_menu(context, menu_id): |
||||
|
base_url = context['request'].build_absolute_uri('/') |
||||
|
menus = yaml.load(open(dirname(__file__) + '/menu_conf.yaml', 'r')) |
||||
|
return dict(menu_items=menus[menu_id], base_url=base_url) |
||||
|
|
||||
|
|
||||
|
@register.inclusion_tag('menus/menu_item.html') |
||||
|
def show_menu_item(menu_item, base_url): |
||||
|
return dict(menu_item=menu_item, base_url=base_url) |
@ -1,280 +0,0 @@ |
|||||
[ |
|
||||
{ |
|
||||
"pk": 3, |
|
||||
"model": "inventario.fornecedor", |
|
||||
"fields": { |
|
||||
"pagina_web": "http://www.dell.com.br/", |
|
||||
"email": "", |
|
||||
"nome": "Dell" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 1, |
|
||||
"model": "inventario.fornecedor", |
|
||||
"fields": { |
|
||||
"pagina_web": "", |
|
||||
"email": "", |
|
||||
"nome": "Desconhecido" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 2, |
|
||||
"model": "inventario.fornecedor", |
|
||||
"fields": { |
|
||||
"pagina_web": "http://www.submarino.com.br/", |
|
||||
"email": "", |
|
||||
"nome": "Submarino" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 2, |
|
||||
"model": "inventario.fabricante", |
|
||||
"fields": { |
|
||||
"nome": "Dell" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 1, |
|
||||
"model": "inventario.fabricante", |
|
||||
"fields": { |
|
||||
"nome": "Desconhecido" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 4, |
|
||||
"model": "inventario.fabricante", |
|
||||
"fields": { |
|
||||
"nome": "HP" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 3, |
|
||||
"model": "inventario.fabricante", |
|
||||
"fields": { |
|
||||
"nome": "Microsoft" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 2, |
|
||||
"model": "inventario.tipoequipamento", |
|
||||
"fields": { |
|
||||
"tipo": "Computador Desktop" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 1, |
|
||||
"model": "inventario.tipoequipamento", |
|
||||
"fields": { |
|
||||
"tipo": "Desconhecido" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 8, |
|
||||
"model": "inventario.tipoequipamento", |
|
||||
"fields": { |
|
||||
"tipo": "Estabilizador" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 3, |
|
||||
"model": "inventario.tipoequipamento", |
|
||||
"fields": { |
|
||||
"tipo": "Impressora" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 5, |
|
||||
"model": "inventario.tipoequipamento", |
|
||||
"fields": { |
|
||||
"tipo": "Modem" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 4, |
|
||||
"model": "inventario.tipoequipamento", |
|
||||
"fields": { |
|
||||
"tipo": "Monitor" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 9, |
|
||||
"model": "inventario.tipoequipamento", |
|
||||
"fields": { |
|
||||
"tipo": "Notebook/Laptop" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 6, |
|
||||
"model": "inventario.tipoequipamento", |
|
||||
"fields": { |
|
||||
"tipo": "Roteador" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 7, |
|
||||
"model": "inventario.tipoequipamento", |
|
||||
"fields": { |
|
||||
"tipo": "Webcam" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 1, |
|
||||
"model": "inventario.modeloequipamento", |
|
||||
"fields": { |
|
||||
"modelo": "Desconhecido", |
|
||||
"tipo": 1 |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 2, |
|
||||
"model": "inventario.modeloequipamento", |
|
||||
"fields": { |
|
||||
"modelo": "Desconhecido", |
|
||||
"tipo": 3 |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 3, |
|
||||
"model": "inventario.modeloequipamento", |
|
||||
"fields": { |
|
||||
"modelo": "Desconhecido", |
|
||||
"tipo": 2 |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 4, |
|
||||
"model": "inventario.modeloequipamento", |
|
||||
"fields": { |
|
||||
"modelo": "Desconhecido", |
|
||||
"tipo": 8 |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 5, |
|
||||
"model": "inventario.modeloequipamento", |
|
||||
"fields": { |
|
||||
"modelo": "Desconhecido", |
|
||||
"tipo": 5 |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 6, |
|
||||
"model": "inventario.modeloequipamento", |
|
||||
"fields": { |
|
||||
"modelo": "Desconhecido", |
|
||||
"tipo": 4 |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 7, |
|
||||
"model": "inventario.modeloequipamento", |
|
||||
"fields": { |
|
||||
"modelo": "Desconhecido", |
|
||||
"tipo": 9 |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 8, |
|
||||
"model": "inventario.modeloequipamento", |
|
||||
"fields": { |
|
||||
"modelo": "Desconhecido", |
|
||||
"tipo": 6 |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 9, |
|
||||
"model": "inventario.modeloequipamento", |
|
||||
"fields": { |
|
||||
"modelo": "Desconhecido", |
|
||||
"tipo": 7 |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 10, |
|
||||
"model": "inventario.modeloequipamento", |
|
||||
"fields": { |
|
||||
"modelo": "PSC 500", |
|
||||
"tipo": 3 |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 11, |
|
||||
"model": "inventario.modeloequipamento", |
|
||||
"fields": { |
|
||||
"modelo": "Vostro 1310", |
|
||||
"tipo": 9 |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 1, |
|
||||
"model": "inventario.equipamento", |
|
||||
"fields": { |
|
||||
"modelo": 1, |
|
||||
"fabricante": 1 |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 2, |
|
||||
"model": "inventario.equipamento", |
|
||||
"fields": { |
|
||||
"modelo": 2, |
|
||||
"fabricante": 1 |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 3, |
|
||||
"model": "inventario.equipamento", |
|
||||
"fields": { |
|
||||
"modelo": 3, |
|
||||
"fabricante": 1 |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 4, |
|
||||
"model": "inventario.equipamento", |
|
||||
"fields": { |
|
||||
"modelo": 4, |
|
||||
"fabricante": 1 |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 5, |
|
||||
"model": "inventario.equipamento", |
|
||||
"fields": { |
|
||||
"modelo": 5, |
|
||||
"fabricante": 1 |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 6, |
|
||||
"model": "inventario.equipamento", |
|
||||
"fields": { |
|
||||
"modelo": 6, |
|
||||
"fabricante": 1 |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 7, |
|
||||
"model": "inventario.equipamento", |
|
||||
"fields": { |
|
||||
"modelo": 7, |
|
||||
"fabricante": 1 |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 8, |
|
||||
"model": "inventario.equipamento", |
|
||||
"fields": { |
|
||||
"modelo": 8, |
|
||||
"fabricante": 1 |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 9, |
|
||||
"model": "inventario.equipamento", |
|
||||
"fields": { |
|
||||
"modelo": 9, |
|
||||
"fabricante": 1 |
|
||||
} |
|
||||
} |
|
||||
] |
|
@ -1,3 +0,0 @@ |
|||||
from django.test import TestCase |
|
||||
|
|
||||
# Create your tests here. |
|
@ -1,44 +0,0 @@ |
|||||
[ |
|
||||
{ |
|
||||
"pk": 4, |
|
||||
"model": "mesas.cargo", |
|
||||
"fields": { |
|
||||
"descricao": "1\u00ba Secret\u00e1rio" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 2, |
|
||||
"model": "mesas.cargo", |
|
||||
"fields": { |
|
||||
"descricao": "1\u00ba Vice-Presidente" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 5, |
|
||||
"model": "mesas.cargo", |
|
||||
"fields": { |
|
||||
"descricao": "2\u00ba Secret\u00e1rio" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 3, |
|
||||
"model": "mesas.cargo", |
|
||||
"fields": { |
|
||||
"descricao": "2\u00ba Vice-Presidente" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 6, |
|
||||
"model": "mesas.cargo", |
|
||||
"fields": { |
|
||||
"descricao": "Corregedor" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 1, |
|
||||
"model": "mesas.cargo", |
|
||||
"fields": { |
|
||||
"descricao": "Presidente" |
|
||||
} |
|
||||
} |
|
||||
] |
|
@ -1,35 +1,20 @@ |
|||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||
|
|
||||
from django import template |
from django import template |
||||
from django.utils.safestring import mark_safe |
from django.utils.safestring import mark_safe |
||||
|
|
||||
from sigi.apps.casas.models import CasaLegislativa |
from sigi.apps.casas.models import CasaLegislativa |
||||
|
from sigi.apps.metas.views import parliament_summary |
||||
|
|
||||
|
|
||||
register = template.Library() |
register = template.Library() |
||||
|
|
||||
|
|
||||
@register.filter(name='map_desc_serv') |
@register.filter(name='map_desc_serv') |
||||
def descricao_servicos(value): |
def descricao_servicos(casa): |
||||
if not isinstance(value, CasaLegislativa): |
if not isinstance(casa, CasaLegislativa): |
||||
return "" |
return "" |
||||
|
|
||||
result = "" |
summary = parliament_summary(casa) |
||||
|
result = ''.join('<li>%s</li>' % info for info in summary['info']) |
||||
for sv in value.servico_set.all(): |
|
||||
result += u'<li>%s ativado em %s</li>' % (sv.tipo_servico.nome, sv.data_ativacao.strftime('%d/%m/%Y')) |
|
||||
|
|
||||
for cv in value.convenio_set.all(): |
|
||||
if (cv.data_retorno_assinatura is None) and (cv.equipada and cv.data_termo_aceite is not None): |
|
||||
result += u"<li>Equipada em %s pelo %s</li>" % (cv.data_termo_aceite.strftime('%d/%m/%Y'), cv.projeto.sigla) |
|
||||
if (cv.data_retorno_assinatura is not None) and not (cv.equipada and cv.data_termo_aceite is not None): |
|
||||
result += u"<li>Conveniada ao %s em %s</li>" % (cv.projeto.sigla, cv.data_retorno_assinatura.strftime('%d/%m/%Y')) |
|
||||
if (cv.data_retorno_assinatura is not None) and (cv.equipada and cv.data_termo_aceite is not None): |
|
||||
result += u"<li>Conveniada ao %s em %s e equipada em %s</li>" % (cv.projeto.sigla, cv.data_retorno_assinatura.strftime('%d/%m/%Y'), cv.data_termo_aceite.strftime('%d/%m/%Y')) |
|
||||
|
|
||||
for dg in value.diagnostico_set.all(): |
|
||||
result += u'<li>Diagnosticada no período de %s a %s</li>' % (dg.data_visita_inicio.strftime('%d/%m/%Y') if dg.data_visita_inicio |
|
||||
else u"<< sem data inicial >>", |
|
||||
dg.data_visita_fim.strftime('%d/%m/%Y') if dg.data_visita_fim |
|
||||
else u"<< sem data final >>") |
|
||||
|
|
||||
return mark_safe(result) |
return mark_safe(result) |
||||
descricao_servicos.is_safe = True |
descricao_servicos.is_safe = True |
||||
|
@ -1,218 +0,0 @@ |
|||||
[ |
|
||||
{ |
|
||||
"pk": 5, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "DEM", |
|
||||
"nome": "Democratas" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 19, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PCB", |
|
||||
"nome": "Partido Comunista Brasileiro" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 6, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PCdoB", |
|
||||
"nome": "Partido Comunista do Brasil" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 4, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PDT", |
|
||||
"nome": "Partido Democr\u00e1tico Trabalhista" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 20, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PHS", |
|
||||
"nome": "Partido Humanista da Solidariedade" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 13, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PPS", |
|
||||
"nome": "Partido Popular Socialista" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 17, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PP", |
|
||||
"nome": "Partido Progressista" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 16, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PRTB", |
|
||||
"nome": "Partido Renovador Trabalhista Brasileiro" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 25, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PRB", |
|
||||
"nome": "Partido Republicano Brasileiro" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 12, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PRP", |
|
||||
"nome": "Partido Republicano Progressista" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 10, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PSC", |
|
||||
"nome": "Partido Social Crist\u00e3o" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 21, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PSDC", |
|
||||
"nome": "Partido Social Democrata Crist\u00e3o" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 24, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PSL", |
|
||||
"nome": "Partido Social Liberal" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 26, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PSOL", |
|
||||
"nome": "Partido Socialismo e Liberdade" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 7, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PSB", |
|
||||
"nome": "Partido Socialista Brasileiro" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 18, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PSTU", |
|
||||
"nome": "Partido Socialista dos Trabalhadores Unificado" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 3, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PTB", |
|
||||
"nome": "Partido Trabalhista Brasileiro" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 9, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PTC", |
|
||||
"nome": "Partido Trabalhista Crist\u00e3o" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 23, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PTN", |
|
||||
"nome": "Partido Trabalhista Nacional" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 15, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PTdoB", |
|
||||
"nome": "Partido Trabalhista do Brasil" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 14, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PV", |
|
||||
"nome": "Partido Verde" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 22, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PCO", |
|
||||
"nome": "Partido da Causa Oper\u00e1ria" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 11, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PMN", |
|
||||
"nome": "Partido da Mobiliza\u00e7\u00e3o Nacional" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 27, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PR", |
|
||||
"nome": "Partido da Rep\u00fablica" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 8, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PSDB", |
|
||||
"nome": "Partido da Social Democracia Brasileira" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 2, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PMDB", |
|
||||
"nome": "Partido do Movimento Democr\u00e1tico Brasileiro" |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
"pk": 1, |
|
||||
"model": "parlamentares.partido", |
|
||||
"fields": { |
|
||||
"sigla": "PT", |
|
||||
"nome": "Partido dos Trabalhadores" |
|
||||
} |
|
||||
} |
|
||||
] |
|
@ -1,3 +0,0 @@ |
|||||
from django.test import TestCase |
|
||||
|
|
||||
# Create your tests here. |
|
@ -1 +0,0 @@ |
|||||
[{"pk": 1, "model": "servicos.tiposervico", "fields": {"template_email_altera": "Seu Portal Modelo foi alterado com sucesso. O endere\u00e7o de acesso \u00e9 {url} e a senha \u00e9 {senha}. Altere sua senha no primeiro acesso.", "sigla": "PM", "template_email_ativa": "Seu Portal Modelo foi ativado com sucesso. O endere\u00e7o de acesso \u00e9 {url} e a senha inicial \u00e9 {senha}. Altere sua senha no primeiro acesso.", "template_email_desativa": "Seu Portal Modelo foi desativado com sucesso. O endere\u00e7o de acesso era {url}.\r\nO motivo do cancelamento foi: {motivo}", "nome": "Portal Modelo"}}, {"pk": 2, "model": "servicos.tiposervico", "fields": {"template_email_altera": "Seu SAPL foi alterado com sucesso. O endere\u00e7o de acesso \u00e9 {url} e a senha \u00e9 {senha}. Altere sua senha no primeiro acesso.", "sigla": "SAPL", "template_email_ativa": "Seu SAPL foi ativado com sucesso. O endere\u00e7o de acesso \u00e9 {url} e a senha inicial \u00e9 {senha}. Altere sua senha no primeiro acesso.", "template_email_desativa": "Seu SAPL foi desativado com sucesso. O endere\u00e7o de acesso era {url}.\r\nO motivo do cancelamento foi: {motivo}", "nome": "Hospedagem SAPL"}}, {"pk": 3, "model": "servicos.tiposervico", "fields": {"template_email_altera": "Seu SAAP foi alterado com sucesso. O endere\u00e7o de acesso \u00e9 {url} e a senha \u00e9 {senha}. Altere sua senha no primeiro acesso.", "sigla": "SAAP", "template_email_ativa": "Seu SAAP foi ativado com sucesso. O endere\u00e7o de acesso \u00e9 {url} e a senha inicial \u00e9 {senha}. Altere sua senha no primeiro acesso.", "template_email_desativa": "Seu SAAP foi desativado com sucesso. O endere\u00e7o de acesso era {url}.\r\nO motivo do cancelamento foi: {motivo}", "nome": "Hospedagem SAAP"}}] |
|
@ -0,0 +1,31 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
from django import forms |
||||
|
import pytest |
||||
|
from datetime import date |
||||
|
|
||||
|
from sigi.apps.servidores.forms import valida_data_inicial_menor_que_final, Periodo, periodos_se_sobrepoe |
||||
|
|
||||
|
|
||||
|
@pytest.mark.parametrize('data', [ |
||||
|
dict(ini=1, fim=2), |
||||
|
pytest.mark.xfail(raises=forms.ValidationError)(dict(ini=2, fim=1)), |
||||
|
pytest.mark.xfail(raises=forms.ValidationError)(dict(ini=1, fim=1)), |
||||
|
]) |
||||
|
def test_valida_data_inicial_menor_que_final(data): |
||||
|
valida_data_inicial_menor_que_final(data, 'ini', 'fim') |
||||
|
|
||||
|
|
||||
|
periodos = [ |
||||
|
[Periodo(date(2000, 10, 1), date(2001, 1, 1)), Periodo(date(2001, 1, 1), date(2002, 2, 2)), True], # um dia de interseção |
||||
|
[Periodo(date(2000, 10, 1), date(2001, 1, 1)), Periodo(date(2001, 1, 2), date(2002, 2, 2)), False], # exatamente um dia após |
||||
|
[Periodo(date(2000, 10, 1), date(2001, 1, 1)), Periodo(date(2000, 12, 2), date(2002, 2, 2)), True], |
||||
|
[Periodo(date(2000, 10, 1), date(2001, 1, 1)), Periodo(date(2014, 1, 1), date(2014, 2, 2)), False], |
||||
|
] |
||||
|
|
||||
|
# para testar que a ordem dos parametros nao importa |
||||
|
periodos_trocados = [[b, a, res] for [a, b, res] in periodos] |
||||
|
|
||||
|
|
||||
|
@pytest.mark.parametrize('periodo1, periodo2, resultado', periodos + periodos_trocados) |
||||
|
def test_periodos_se_sobrepoe(periodo1, periodo2, resultado): |
||||
|
assert periodos_se_sobrepoe(periodo1, periodo2) == resultado |
@ -1,15 +1,23 @@ |
|||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||
|
|
||||
|
|
||||
def test_clear_all_filters_is_disabled_if_no_filter_was_used(admin_client): |
def get_li_clear_all_filters(res): |
||||
response = admin_client.get('/parlamentares/parlamentar', follow=True) |
text = res.html.find(text='Clear All Filters') |
||||
assert response.status_code == 200 |
li = text.find_parent('li') |
||||
assert '<li class="clear-all-filter disabled"><a href="?">Clear All Filters</a></li>' in response.content |
assert li |
||||
|
return li |
||||
|
|
||||
|
|
||||
def test_clear_all_filters_is_enabled_if_some_filter_was_used(admin_client): |
def test_clear_all_filters_is_disabled_if_no_filter_was_used(app): |
||||
|
res = app.get('/parlamentares/parlamentar/') |
||||
|
assert res.status_code == 200 |
||||
|
li = get_li_clear_all_filters(res) |
||||
|
assert 'disabled' in li.attrs['class'] |
||||
|
|
||||
|
|
||||
|
def test_clear_all_filters_is_enabled_if_some_filter_was_used(app): |
||||
# now we filter by capital letter |
# now we filter by capital letter |
||||
response = admin_client.get('/parlamentares/parlamentar/?nome_completo=B', follow=True) |
res = app.get('/parlamentares/parlamentar/?nome_completo=B') |
||||
assert response.status_code == 200 |
assert res.status_code == 200 |
||||
# and there is no "disabled" css class |
li = get_li_clear_all_filters(res) |
||||
assert '<li class="clear-all-filter"><a href="?">Clear All Filters</a></li>' in response.content |
assert 'disabled' not in li.attrs['class'] |
||||
|
@ -1,42 +0,0 @@ |
|||||
# -*- coding: utf-8 -*- |
|
||||
|
|
||||
|
|
||||
def valida_data(data_inicio, data_final): |
|
||||
"""Função responsável por validar se o intervalo das |
|
||||
datas estão erradas, ou seja, se a data de início está |
|
||||
maior ou igual a data final. |
|
||||
|
|
||||
Caso seja maior ou igual retornará ``True``, caso contrário |
|
||||
retornará ``False``. |
|
||||
""" |
|
||||
if data_inicio >= data_final: |
|
||||
return True |
|
||||
else: |
|
||||
return False |
|
||||
|
|
||||
|
|
||||
def valida_periodo_data(di01, df01, di02, df02): |
|
||||
"""Função responsável por validar dois períodos de datas. |
|
||||
Isso é usado para verificar se determinado servidor exerceu |
|
||||
mais de uma função dentro de determinados períodos descritos |
|
||||
abaixo: |
|
||||
|
|
||||
1 - A segunda função não pode ter exercido ao mesmo tempo que |
|
||||
a primeira função. Exemplo: |
|
||||
|
|
||||
Primeiro Função: 01/05/2011 -- 01/11/2011 |
|
||||
Segundo Função: 01/05/2011 -- 01/11/2011 |
|
||||
|
|
||||
2 - A segunda função não pode ter exercido, dentro do período |
|
||||
da primeira função. Exemplo: |
|
||||
|
|
||||
Primeira Função: 01/05/2011 -- 01/11/2011 |
|
||||
Segunda Função: 02/05/2011 -- 30/10/2011 |
|
||||
""" |
|
||||
# Verificando a primeira situação |
|
||||
if di01 == di02 and df01 == df02: |
|
||||
return True |
|
||||
elif ((di01 >= di02) or (di02 <= df01)) and df01 <= df02: |
|
||||
return True |
|
||||
else: |
|
||||
return False |
|
File diff suppressed because one or more lines are too long
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue