Browse Source

Fix #1187

pull/1194/head
LeandroRoberto 8 years ago
parent
commit
8e3db9630b
  1. 12
      sapl/base/templatetags/common_tags.py
  2. 25
      sapl/crispy_layout_mixin.py
  3. 24
      sapl/materia/views.py
  4. 37
      sapl/templates/materia/proposicao_detail.html

12
sapl/base/templatetags/common_tags.py

@ -168,3 +168,15 @@ def search_get_model(object):
return 'n' return 'n'
return None return None
@register.filter
def urldetail_content_type(obj, value):
return '%s:%s_detail' % (
value._meta.app_config.name, obj.content_type.model)
@register.filter
def urldetail(obj):
return '%s:%s_detail' % (
obj._meta.app_config.name, obj._meta.model_name)

25
sapl/crispy_layout_mixin.py

@ -1,12 +1,13 @@
from math import ceil from math import ceil
import rtyaml
from crispy_forms.bootstrap import FormActions from crispy_forms.bootstrap import FormActions
from crispy_forms.helper import FormHelper from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML, Div, Fieldset, Layout, Submit from crispy_forms.layout import HTML, Div, Fieldset, Layout, Submit
from django import template from django import template
from django.core.urlresolvers import reverse
from django.utils import formats from django.utils import formats
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
import rtyaml
def heads_and_tails(list_of_lists): def heads_and_tails(list_of_lists):
@ -77,29 +78,30 @@ def get_field_display(obj, fieldname):
else: else:
value = getattr(obj, fieldname) value = getattr(obj, fieldname)
str_type = str(type(value)) str_type_from_value = str(type(value))
str_type_from_field = str(type(field))
if value is None: if value is None:
display = '' display = ''
elif 'date' in str_type: elif 'date' in str_type_from_value:
display = formats.date_format(value, "SHORT_DATE_FORMAT") display = formats.date_format(value, "SHORT_DATE_FORMAT")
elif 'bool' in str(type(value)): elif 'bool' in str_type_from_value:
display = _('Sim') if value else _('Não') display = _('Sim') if value else _('Não')
elif 'ImageFieldFile' in str(type(value)): elif 'ImageFieldFile' in str(type(value)):
if value: if value:
display = '<img src="{}" />'.format(value.url) display = '<img src="{}" />'.format(value.url)
else: else:
display = '' display = ''
elif 'FieldFile' in str(type(value)): elif 'FieldFile' in str_type_from_value:
if value: if value:
display = '<a href="{}">{}</a>'.format( display = '<a href="{}">{}</a>'.format(
value.url, value.url,
value.name.split('/')[-1:][0]) value.name.split('/')[-1:][0])
else: else:
display = '' display = ''
elif 'ManyRelatedManager' in str(type(value))\ elif 'ManyRelatedManager' in str_type_from_value\
or 'RelatedManager' in str(type(value))\ or 'RelatedManager' in str_type_from_value\
or 'GenericRelatedObjectManager' in str(type(value)): or 'GenericRelatedObjectManager' in str_type_from_value:
display = '<ul>' display = '<ul>'
for v in value.all(): for v in value.all():
display += '<li>%s</li>' % str(v) display += '<li>%s</li>' % str(v)
@ -110,6 +112,13 @@ def get_field_display(obj, fieldname):
field.related_model._meta.verbose_name_plural) field.related_model._meta.verbose_name_plural)
elif hasattr(field, 'model'): elif hasattr(field, 'model'):
verbose_name = str(field.model._meta.verbose_name_plural) verbose_name = str(field.model._meta.verbose_name_plural)
elif 'GenericForeignKey' in str_type_from_field:
display = '<a href="{}">{}</a>'.format(
reverse(
'%s:%s_detail' % (
value._meta.app_config.name, obj.content_type.model),
args=(value.id,)),
value)
else: else:
display = str(value) display = str(value)
return verbose_name, display return verbose_name, display

24
sapl/materia/views.py

@ -21,7 +21,6 @@ from django.views.generic.base import RedirectView
from django.views.generic.edit import FormView from django.views.generic.edit import FormView
from django_filters.views import FilterView from django_filters.views import FilterView
import sapl
from sapl.base.models import Autor, CasaLegislativa from sapl.base.models import Autor, CasaLegislativa
from sapl.comissoes.models import Comissao, Participacao from sapl.comissoes.models import Comissao, Participacao
from sapl.compilacao.models import (STATUS_TA_IMMUTABLE_RESTRICT, from sapl.compilacao.models import (STATUS_TA_IMMUTABLE_RESTRICT,
@ -42,6 +41,7 @@ from sapl.settings import EMAIL_SEND_USER
from sapl.utils import (TURNO_TRAMITACAO_CHOICES, YES_NO_CHOICES, autor_label, from sapl.utils import (TURNO_TRAMITACAO_CHOICES, YES_NO_CHOICES, autor_label,
autor_modal, gerar_hash_arquivo, get_base_url, autor_modal, gerar_hash_arquivo, get_base_url,
montar_row_autor) montar_row_autor)
import sapl
from .forms import (AcessorioEmLoteFilterSet, AcompanhamentoMateriaForm, from .forms import (AcessorioEmLoteFilterSet, AcompanhamentoMateriaForm,
AdicionarVariasAutoriasFilterSet, DespachoInicialForm, AdicionarVariasAutoriasFilterSet, DespachoInicialForm,
@ -446,7 +446,7 @@ class ReceberProposicao(PermissionRequiredForAppCrudMixin, FormView):
hasher = gerar_hash_arquivo( hasher = gerar_hash_arquivo(
proposicao.texto_original.path, proposicao.texto_original.path,
str(proposicao.pk)) \ str(proposicao.pk)) \
if proposicao.texto_original else None if proposicao.texto_original else None
if hasher == form.cleaned_data['cod_hash']: if hasher == form.cleaned_data['cod_hash']:
return HttpResponseRedirect( return HttpResponseRedirect(
reverse('sapl.materia:proposicao-confirmar', reverse('sapl.materia:proposicao-confirmar',
@ -551,7 +551,7 @@ class ProposicaoCrud(Crud):
class BaseMixin(Crud.BaseMixin): class BaseMixin(Crud.BaseMixin):
list_field_names = ['data_envio', 'data_recebimento', 'descricao', list_field_names = ['data_envio', 'data_recebimento', 'descricao',
'tipo'] 'tipo', 'conteudo_gerado_related']
class BaseLocalMixin: class BaseLocalMixin:
form_class = ProposicaoForm form_class = ProposicaoForm
@ -914,7 +914,7 @@ class TramitacaoCrud(MasterDetailCrud):
id=request.POST['status']).first() id=request.POST['status']).first()
unidade_destino = UnidadeTramitacao.objects.get( unidade_destino = UnidadeTramitacao.objects.get(
id=request.POST['unidade_tramitacao_destino'] id=request.POST['unidade_tramitacao_destino']
) )
texto = request.POST['texto'] texto = request.POST['texto']
data_tramitacao = request.POST['data_tramitacao'] data_tramitacao = request.POST['data_tramitacao']
do_envia_email_tramitacao( do_envia_email_tramitacao(
@ -934,7 +934,7 @@ class TramitacaoCrud(MasterDetailCrud):
id=request.POST['status']).first() id=request.POST['status']).first()
unidade_destino = UnidadeTramitacao.objects.get( unidade_destino = UnidadeTramitacao.objects.get(
id=request.POST['unidade_tramitacao_destino'] id=request.POST['unidade_tramitacao_destino']
) )
texto = request.POST['texto'] texto = request.POST['texto']
data_tramitacao = request.POST['data_tramitacao'] data_tramitacao = request.POST['data_tramitacao']
do_envia_email_tramitacao( do_envia_email_tramitacao(
@ -1494,8 +1494,8 @@ def criar_email_confirmacao(request, casa_legislativa, materia, hash_txt=''):
def criar_email_tramitacao( def criar_email_tramitacao(
request, casa_legislativa, materia, status, request, casa_legislativa, materia, status,
unidade_destino, texto, data_tramitacao, hash_txt=''): unidade_destino, texto, data_tramitacao, hash_txt=''):
if not casa_legislativa: if not casa_legislativa:
raise ValueError("Casa Legislativa é obrigatória") raise ValueError("Casa Legislativa é obrigatória")
@ -1612,7 +1612,7 @@ def do_envia_email_confirmacao(request, materia, email):
def do_envia_email_tramitacao( def do_envia_email_tramitacao(
request, materia, status, unidade_destino, texto, data_tramitacao): request, materia, status, unidade_destino, texto, data_tramitacao):
# #
# Envia email de tramitacao para usuarios cadastrados # Envia email de tramitacao para usuarios cadastrados
# #
@ -1787,10 +1787,10 @@ class TramitacaoEmLoteView(PrimeiraTramitacaoEmLoteView):
qr = self.request.GET.copy() qr = self.request.GET.copy()
if ('tramitacao__status' in qr and if ('tramitacao__status' in qr and
'tramitacao__unidade_tramitacao_destino' in qr and 'tramitacao__unidade_tramitacao_destino' in qr and
qr['tramitacao__status'] and qr['tramitacao__status'] and
qr['tramitacao__unidade_tramitacao_destino'] qr['tramitacao__unidade_tramitacao_destino']
): ):
lista = filtra_tramitacao_destino_and_status( lista = filtra_tramitacao_destino_and_status(
qr['tramitacao__status'], qr['tramitacao__status'],
qr['tramitacao__unidade_tramitacao_destino']) qr['tramitacao__unidade_tramitacao_destino'])

37
sapl/templates/materia/proposicao_detail.html

@ -110,19 +110,30 @@
</div> </div>
</div> </div>
{% if object.materia_de_vinculo %} <div class="row-fluid">
<h2 class="legend">{% trans "Vínculo com a Matéria Legislativa" %}</h2> {% if object.conteudo_gerado_related %}
<div class="row-fluid"> <div class="col-sm-6">
<div class="col-sm-12"> <h2 class="legend">{% trans "Conteúdo Gerado" %}</h2>
<div id="div_id_materia_de_vinculo" class="form-group"> <div id="div_id_conteudo_gerado_related" class="form-group">
<div class="controls"> <div class="controls">
<div class="form-control-static">{{object.materia_de_vinculo}}</div> <a href="{% url object|urldetail_content_type:object.conteudo_gerado_related object.id%}">
<div class="alert alert-info alert-dismissible fade in" role="alert"> {{object.conteudo_gerado_related}}
<div >{{object.materia_de_vinculo.ementa}}</div> </a>
</div> </div>
</div> </div>
</div> </div>
</div> {% endif %}
</div> {% if object.materia_de_vinculo %}
{% endif %} <div class="col-sm-6">
<h2 class="legend">{% trans "Vínculo com a Matéria Legislativa" %}</h2>
<div id="div_id_materia_de_vinculo" class="form-group">
<div class="controls">
<a href="{% url object.materia_de_vinculo|urldetail object.materia_de_vinculo.id%}">
{{object.materia_de_vinculo}}
</a>
</div>
</div>
</div>
{% endif %}
</div>
{% endblock detail_content %} {% endblock detail_content %}

Loading…
Cancel
Save