Browse Source

Fix #2910 - Usuário sem permissão acessa Proposição pela url (#2963)

pull/2965/head
Cesar Augusto de Carvalho 5 years ago
committed by Edward
parent
commit
c7d5259d4d
  1. 7
      sapl/materia/views.py
  2. 309
      sapl/templates/materia/proposicao_detail.html

7
sapl/materia/views.py

@ -772,7 +772,7 @@ class ProposicaoCrud(Crud):
context['title'] = '%s <small>(%s)</small>' % ( context['title'] = '%s <small>(%s)</small>' % (
self.object, self.object.autor) self.object, self.object.autor)
context['user'] = self.request.user context['user'] = self.request.user
context['proposicao'] = Proposicao.objects.get( context['proposicao'] = Proposicao.objects.get(
pk=self.kwargs['pk'] pk=self.kwargs['pk']
@ -782,7 +782,8 @@ class ProposicaoCrud(Crud):
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
action = request.GET.get('action', '') action = request.GET.get('action', '')
username = request.user.username user = request.user
username = user.username
if not action: if not action:
return Crud.DetailView.get(self, request, *args, **kwargs) return Crud.DetailView.get(self, request, *args, **kwargs)
@ -790,7 +791,7 @@ class ProposicaoCrud(Crud):
p = Proposicao.objects.get(id=kwargs['pk']) p = Proposicao.objects.get(id=kwargs['pk'])
msg_error = '' msg_error = ''
if p: if p and p.autor.user == user:
if action == 'send': if action == 'send':
if p.data_envio and p.data_recebimento: if p.data_envio and p.data_recebimento:
msg_error = _('Proposição já foi enviada e recebida.') msg_error = _('Proposição já foi enviada e recebida.')

309
sapl/templates/materia/proposicao_detail.html

@ -3,204 +3,213 @@
{% load tz %} {% load tz %}
{% block sub_actions %} {% block sub_actions %}
{{block.super}} {{block.super}}
<div class="actions btn-group btn-group-sm {%block sub_actions_pull%}{% endblock%}" role="group"> {% if user == object.autor.user %}
{% if object.texto_articulado.exists %} <div class="actions btn-group btn-group-sm {%block sub_actions_pull%}{% endblock%}" role="group">
<a class="btn btn-success" href="{% url 'sapl.materia:proposicao_ta' object.pk%}">{% trans "Texto Eletrônico" %}</a> {% if object.texto_articulado.exists %}
{% endif %} <a class="btn btn-success" href="{% url 'sapl.materia:proposicao_ta' object.pk%}">{% trans "Texto Eletrônico" %}</a>
{% if object.texto_original %} {% endif %}
<a class="btn btn-success" href="{% url 'sapl.materia:proposicao_texto' object.pk %}">{% trans "Texto Original" %}</a> {% if object.texto_original %}
{% endif %} <a class="btn btn-success" href="{% url 'sapl.materia:proposicao_texto' object.pk %}">{% trans "Texto Original" %}</a>
</div> {% endif %}
</div>
{% endif %}
{% endblock sub_actions%} {% endblock sub_actions%}
{% block editions %} {% block editions %}
{% if object.data_envio %} {% if user == object.autor.user %}
{% if user == object.autor.user %} {% if object.data_envio %}
{% block editions_actions_return %} {% block editions_actions_return %}
<div class="actions btn-group" role="group">
<a class="btn btn-outline-primary" onclick="window.open('{% url 'sapl.materia:recibo-proposicao' object.pk %}','Recibo','width=1100, height=600, scrollbars=yes')">{% trans "Recibo de Envio" %}</a>
{% if not object.data_recebimento %}
<a href="{% url 'sapl.materia:retornar-proposicao' object.pk %}" class="btn btn-outline-primary btn-outline-danger">{% trans 'Retornar Proposição Enviada' %}</a>
{% endif %}
</div>
{% endblock %}
{% else %}
{% block editions_actions_send %}
<div class="actions btn-group" role="group"> <div class="actions btn-group" role="group">
<a class="btn btn-outline-primary" onclick="window.open('{% url 'sapl.materia:recibo-proposicao' object.pk %}','Recibo','width=1100, height=600, scrollbars=yes')">{% trans "Recibo de Envio" %}</a> <a href="{{ view.detail_url }}?action=send" class="btn btn-primary">{% trans 'Enviar' %}</a>
{% if not object.data_recebimento %} </div>
<a href="{% url 'sapl.materia:retornar-proposicao' object.pk %}" class="btn btn-outline-primary btn-outline-danger">{% trans 'Retornar Proposição Enviada' %}</a> <div class="actions btn-group" role="group">
{% endif %} <a href="{{ view.update_url }}" class="btn btn-outline-primary">{% trans 'Editar' %}</a>
<a href="{{ view.delete_url }}" class="btn btn-outline-primary btn-outline-danger">{% trans 'Excluir' %}</a>
</div> </div>
{% endblock %} {% endblock %}
{% endif %} {% endif %}
{% else %}
{% block editions_actions_send %}
<div class="actions btn-group" role="group">
<a href="{{ view.detail_url }}?action=send" class="btn btn-primary">{% trans 'Enviar' %}</a>
</div>
<div class="actions btn-group" role="group">
<a href="{{ view.update_url }}" class="btn btn-outline-primary">{% trans 'Editar' %}</a>
<a href="{{ view.delete_url }}" class="btn btn-outline-primary btn-outline-danger">{% trans 'Excluir' %}</a>
</div>
{% endblock %}
{% endif %} {% endif %}
{% endblock editions %} {% endblock editions %}
{% block detail_content %} {% block detail_content %}
<h2 class="legend">{% model_verbose_name 'sapl.materia.models.Proposicao' %}</h2> {% if user == object.autor.user %}
<div class="row"> <h2 class="legend">{% model_verbose_name 'sapl.materia.models.Proposicao' %}</h2>
<div class="col-sm-3"> <div class="row">
<div id="div_id_tipo" class="form-group"> <div class="col-sm-3">
<p class="control-label">{%field_verbose_name object 'tipo'%}</p> <div id="div_id_tipo" class="form-group">
<div class="controls"> <p class="control-label">{%field_verbose_name object 'tipo'%}</p>
<div class="form-control-static">{{object.tipo}}</div> <div class="controls">
<div class="form-control-static">{{object.tipo}}</div>
</div>
</div> </div>
</div> </div>
</div> {% if object.data_devolucao %}
{% if object.data_devolucao %} <div class="col-sm-9">
<div class="col-sm-9"> <div class="alert alert-danger alert-dismissible " role="alert">
<div class="alert alert-danger alert-dismissible " role="alert"> <strong>{% trans "Proposição devolvida em:" %} {{ object.data_devolucao}}</strong>
<strong>{% trans "Proposição devolvida em:" %} {{ object.data_devolucao}}</strong> <div >{% trans "Justificativa:" %} {{object.justificativa_devolucao}}</div>
<div >{% trans "Justificativa:" %} {{object.justificativa_devolucao}}</div> </div>
</div> </div>
</div> {% else %}
{% else %} {% if object.data_envio %}
{% if object.data_envio %} <div class="col-sm-3">
<div class="col-sm-3"> <div id="div_id_data_envio" class="form-group">
<div id="div_id_data_envio" class="form-group"> <p class="control-label">{%field_verbose_name object 'data_envio' %}</p>
<p class="control-label">{%field_verbose_name object 'data_envio' %}</p> <div class="controls">
<div class="controls"> <div class="form-control-static">{{object.data_envio}}</div>
<div class="form-control-static">{{object.data_envio}}</div> </div>
</div> </div>
</div> </div>
</div> {% endif %}
{% endif %} {% if object.data_recebimento %}
{% if object.data_recebimento %} <div class="col-sm-3">
<div class="col-sm-3"> <div id="div_id_data_envio" class="form-group">
<div id="div_id_data_envio" class="form-group"> <p class="control-label">{%field_verbose_name object 'data_recebimento'%}</p>
<p class="control-label">{%field_verbose_name object 'data_recebimento'%}</p> <div class="controls">
<div class="controls"> <div class="form-control-static">{{object.data_recebimento}}</div>
<div class="form-control-static">{{object.data_recebimento}}</div> </div>
</div> </div>
</div> </div>
</div> {% elif object.data_envio %}
{% elif object.data_envio %} <div class="col-sm-6">
<div class="col-sm-6"> <div class="alert alert-info alert-dismissible " role="alert">
<div class="alert alert-info alert-dismissible " role="alert"> <div >{% trans "Proposição aguardando recebimento" %}</div>
<div >{% trans "Proposição aguardando recebimento" %}</div> </div>
</div> </div>
</div> {% endif %}
{% endif %} {% endif %}
{% endif %}
</div>
<div class="row">
<div class="col-sm-12">
<div id="div_id_descricao" class="form-group">
<p class="control-label">{%field_verbose_name object 'descricao'%}</p>
<div class="controls">
<div class="form-control-static">{{object.descricao}}</div>
</div>
</div>
</div> </div>
</div>
{% if object.observacao %}
<div class="row"> <div class="row">
<div class="col-sm-12"> <div class="col-sm-12">
<div id="div_id_obseracao" class="form-group"> <div id="div_id_descricao" class="form-group">
<p class="control-label">{%field_verbose_name object 'observacao'%}</p> <p class="control-label">{%field_verbose_name object 'descricao'%}</p>
<div class="controls"> <div class="controls">
<div class="form-control-static">{{object.observacao}}</div> <div class="form-control-static">{{object.descricao}}</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{% endif %} {% if object.observacao %}
<div class="row"> <div class="row">
{% if object.conteudo_gerado_related %} <div class="col-sm-12">
<div class="col-sm-6"> <div id="div_id_obseracao" class="form-group">
<h2 class="legend">{% trans "Conteúdo Gerado" %}</h2> <p class="control-label">{%field_verbose_name object 'observacao'%}</p>
<div id="div_id_conteudo_gerado_related" class="form-group"> <div class="controls">
<div class="controls"> <div class="form-control-static">{{object.observacao}}</div>
<a href="{% url object|urldetail_content_type:object.conteudo_gerado_related object.conteudo_gerado_related.id%}"> </div>
{{object.conteudo_gerado_related}}
</a>
</div> </div>
</div> </div>
</div> </div>
{% endif %} {% endif %}
{% if object.materia_de_vinculo %} <div class="row">
<div class="col-sm-6"> {% if object.conteudo_gerado_related %}
<h2 class="legend">{% trans "Vínculo com a Matéria Legislativa" %}</h2> <div class="col-sm-6">
<div id="div_id_materia_de_vinculo" class="form-group"> <h2 class="legend">{% trans "Conteúdo Gerado" %}</h2>
<div class="controls"> <div id="div_id_conteudo_gerado_related" class="form-group">
Matéria</br> <div class="controls">
&nbsp;&nbsp;&nbsp;&nbsp; <a href="{% url object|urldetail_content_type:object.conteudo_gerado_related object.conteudo_gerado_related.id%}">
<a href="{% url object.materia_de_vinculo|urldetail object.materia_de_vinculo.id%}"> {{object.conteudo_gerado_related}}
{{object.materia_de_vinculo}}
</a>
</br>
{% if object.materia_de_vinculo.autoria_set.all %}
Autores
{% for a in object.materia_de_vinculo.autoria_set.all %}
</br>&nbsp;&nbsp;&nbsp;&nbsp;{{a.autor}}
{% endfor %}
{% endif %}
</br>
Texto Original
</br>
{% if object.materia_de_vinculo.texto_original %}
<a href="{{object.materia_de_vinculo.texto_original.url}}">
{{object.materia_de_vinculo.texto_original| to_str | split:"/" | get_last_item_from_list:-1}}
</a> </a>
{% endif %} </div>
</br>
</div> </div>
</div> </div>
</div> {% endif %}
{% endif %} {% if object.materia_de_vinculo %}
{% if not AppConfig.receber_recibo_proposicao %} <div class="col-sm-6">
{% if object.hash_code %} <h2 class="legend">{% trans "Vínculo com a Matéria Legislativa" %}</h2>
<div class="col-sm-12"> <div id="div_id_materia_de_vinculo" class="form-group">
<div id="div_id_hash_code" class="form-group">
<p class="control-label">{%field_verbose_name object 'hash_code'%}</p>
<div class="controls"> <div class="controls">
<div class="form-control-static">{{object.hash_code}}</div> Matéria</br>
&nbsp;&nbsp;&nbsp;&nbsp;
<a href="{% url object.materia_de_vinculo|urldetail object.materia_de_vinculo.id%}">
{{object.materia_de_vinculo}}
</a>
</br>
{% if object.materia_de_vinculo.autoria_set.all %}
Autores
{% for a in object.materia_de_vinculo.autoria_set.all %}
</br>&nbsp;&nbsp;&nbsp;&nbsp;{{a.autor}}
{% endfor %}
{% endif %}
</br>
Texto Original
</br>
{% if object.materia_de_vinculo.texto_original %}
<a href="{{object.materia_de_vinculo.texto_original.url}}">
{{object.materia_de_vinculo.texto_original| to_str | split:"/" | get_last_item_from_list:-1}}
</a>
{% endif %}
</br>
</div> </div>
</div> </div>
</div> </div>
{% endif %} {% endif %}
{% endif %} {% if not AppConfig.receber_recibo_proposicao %}
</div> {% if object.hash_code %}
{% if user.is_superuser %} <div class="col-sm-12">
<div class="row"> <div id="div_id_hash_code" class="form-group">
{% if proposicao.user %} <p class="control-label">{%field_verbose_name object 'hash_code'%}</p>
<div class="col-sm-4"> <div class="controls">
<div id="div_id_user" class="form-group"> <div class="form-control-static">{{object.hash_code}}</div>
<p class="control-label">Usuário</p>
<div class="controls">
<div class="form-control-static">
<div class="dont-break-out">
<a href="{% url 'sapl.base:user_edit' proposicao.user.pk %}">{{ proposicao.user }}</a>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> {% endif %}
{% endif %} {% endif %}
{% if proposicao.ip %} </div>
<div class="col-sm-4"> {% if user.is_superuser %}
<div id="div_ip_user" class="form-group"> <div class="row">
<p class="control-label">IP</p> {% if proposicao.user %}
<div class="controls"> <div class="col-sm-4">
<div class="form-control-static"> <div id="div_id_user" class="form-group">
<div class="dont-break-out">{{ proposicao.ip }}</div> <p class="control-label">Usuário</p>
<div class="controls">
<div class="form-control-static">
<div class="dont-break-out">
<a href="{% url 'sapl.base:user_edit' proposicao.user.pk %}">{{ proposicao.user }}</a>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> {% endif %}
{% endif %} {% if proposicao.ip %}
{% if proposicao.ultima_edicao %} <div class="col-sm-4">
<div class="col-sm-4"> <div id="div_ip_user" class="form-group">
<div id="div_ud_user" class="form-group"> <p class="control-label">IP</p>
<p class="control-label">Data e Hora da Edição</p> <div class="controls">
<div class="controls"> <div class="form-control-static">
<div class="form-control-static"> <div class="dont-break-out">{{ proposicao.ip }}</div>
<div class="dont-break-out">{{ proposicao.ultima_edicao }}</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> {% endif %}
{% endif %} {% if proposicao.ultima_edicao %}
<div class="col-sm-4">
<div id="div_ud_user" class="form-group">
<p class="control-label">Data e Hora da Edição</p>
<div class="controls">
<div class="form-control-static">
<div class="dont-break-out">{{ proposicao.ultima_edicao }}</div>
</div>
</div>
</div>
</div>
{% endif %}
</div>
{% endif %}
{% else %}
<br><br>
<div class="alert alert-danger alert-dismissible" role="alert">
<h3>Você não tem acesso a essa Proposição porque não é de sua autoria.</h3>
</div> </div>
{% endif %} {% endif %}
{% endblock detail_content %} {% endblock detail_content %}

Loading…
Cancel
Save