Browse Source

Fix #1725 Adiciona-permissao-e-altera-layout

pull/1740/head
VictorFabreF 8 years ago
parent
commit
51e8d28404
  1. 43
      sapl/base/forms.py
  2. 30
      sapl/base/views.py
  3. 8
      sapl/templates/auth/user_form.html
  4. 48
      sapl/templates/auth/user_list.html

43
sapl/base/forms.py

@ -67,6 +67,30 @@ class UsuarioCreateForm(ModelForm):
if data['password1'] != data['password2']: if data['password1'] != data['password2']:
raise ValidationError('Senhas informadas são diferentes') raise ValidationError('Senhas informadas são diferentes')
def __init__(self, *args, **kwargs):
super(UsuarioCreateForm, self).__init__(*args, **kwargs)
row0 = to_row([('username', 12)])
row1 = to_row([('firstname', 6),
('lastname', 6)])
row2 = to_row([('email', 6),
('user_active', 6)])
row3 = to_row(
[('password1', 6),
('password2', 6)])
self.helper = FormHelper()
self.helper.layout = Layout(
row0,
row1,
row3,
row2,
'roles',
form_actions(label='Confirmar'))
class UsuarioEditForm(ModelForm): class UsuarioEditForm(ModelForm):
ROLES = [(g.id, g.name) for g in Group.objects.all().order_by('name')] ROLES = [(g.id, g.name) for g in Group.objects.all().order_by('name')]
@ -80,6 +104,25 @@ class UsuarioEditForm(ModelForm):
model = get_user_model() model = get_user_model()
fields = ['email', 'password1', 'password2', 'user_active', 'roles'] fields = ['email', 'password1', 'password2', 'user_active', 'roles']
def __init__(self, *args, **kwargs):
super(UsuarioEditForm, self).__init__(*args, **kwargs)
row1 = to_row([('email', 6),
('user_active', 6)])
row2 = to_row(
[('password1', 6),
('password2', 6)])
row3 = to_row([(form_actions(label='Salvar Alterações'), 6)])
self.helper = FormHelper()
self.helper.layout = Layout(
row1,
row2,
'roles',
row3)
def clean(self): def clean(self):
super(UsuarioEditForm, self).clean() super(UsuarioEditForm, self).clean()

30
sapl/base/views.py

@ -1,5 +1,6 @@
from django.conf import settings from django.conf import settings
from django.contrib.auth import get_user_model, update_session_auth_hash from django.contrib.auth import get_user_model, update_session_auth_hash
from django.contrib.auth.mixins import PermissionRequiredMixin
from django.contrib.auth.models import Group from django.contrib.auth.models import Group
from django.contrib.auth.tokens import default_token_generator from django.contrib.auth.tokens import default_token_generator
from django.core.exceptions import ObjectDoesNotExist, PermissionDenied from django.core.exceptions import ObjectDoesNotExist, PermissionDenied
@ -19,7 +20,7 @@ from django_filters.views import FilterView
from haystack.views import SearchView from haystack.views import SearchView
from sapl.base.forms import AutorForm, AutorFormForAdmin, TipoAutorForm from sapl.base.forms import AutorForm, AutorFormForAdmin, TipoAutorForm
from sapl.base.models import Autor, TipoAutor from sapl.base.models import Autor, TipoAutor
from sapl.crud.base import CrudAux from sapl.crud.base import (CrudAux, make_pagination)
from sapl.materia.models import (Autoria, MateriaLegislativa, from sapl.materia.models import (Autoria, MateriaLegislativa,
TipoMateriaLegislativa) TipoMateriaLegislativa)
from sapl.sessao.models import (PresencaOrdemDia, SessaoPlenaria, from sapl.sessao.models import (PresencaOrdemDia, SessaoPlenaria,
@ -520,19 +521,32 @@ class RelatorioMateriasPorAutorView(FilterView):
return context return context
class ListarUsuarioView(ListView): class ListarUsuarioView(PermissionRequiredMixin, ListView):
model = get_user_model() model = get_user_model()
template_name = 'auth/user_list.html'
context_object_name = 'user_list' context_object_name = 'user_list'
permission_required = ('base.list_appconfig',)
paginate_by = 10
def get_queryset(self): def get_queryset(self):
qs = super(ListarUsuarioView, self).get_queryset() qs = super(ListarUsuarioView, self).get_queryset()
return qs.order_by('username') return qs.order_by('username')
def get_context_data(self, **kwargs):
context = super(ListarUsuarioView, self).get_context_data(**kwargs)
paginator = context['paginator']
page_obj = context['page_obj']
context['page_range'] = make_pagination(
page_obj.number, paginator.num_pages)
context['NO_ENTRIES_MSG'] = 'Nenhum usuário cadastrado.'
return context
class CreateUsuarioView(CreateView):
class CreateUsuarioView(PermissionRequiredMixin, CreateView):
model = get_user_model() model = get_user_model()
form_class = UsuarioCreateForm form_class = UsuarioCreateForm
success_message = 'Usuário criado com sucesso' success_message = 'Usuário criado com sucesso'
permission_required = ('base.add_appconfig',)
def get_success_url(self): def get_success_url(self):
return reverse('sapl.base:user_list') return reverse('sapl.base:user_list')
@ -545,13 +559,16 @@ class CreateUsuarioView(CreateView):
new_user.first_name = data['firstname'] new_user.first_name = data['firstname']
new_user.last_name = data['lastname'] new_user.last_name = data['lastname']
new_user.set_password(data['password1']) new_user.set_password(data['password1'])
new_user.is_superuser = False
new_user.is_staff = False
new_user.save() new_user.save()
return HttpResponseRedirect(self.get_success_url()) return HttpResponseRedirect(self.get_success_url())
class DeleteUsuarioView(DeleteView): class DeleteUsuarioView(PermissionRequiredMixin, DeleteView):
model = get_user_model() model = get_user_model()
permission_required = ('base.delete_appconfig',)
def get_success_url(self): def get_success_url(self):
return reverse('sapl.base:user_list') return reverse('sapl.base:user_list')
@ -565,10 +582,11 @@ class DeleteUsuarioView(DeleteView):
class EditUsuarioView(UpdateView): class EditUsuarioView(PermissionRequiredMixin, UpdateView):
model = get_user_model() model = get_user_model()
form_class = UsuarioEditForm form_class = UsuarioEditForm
success_message = 'Usuário criado com sucesso' success_message = 'Usuário editado com sucesso'
permission_required = ('base.change_appconfig',)
def get_success_url(self): def get_success_url(self):
return reverse('sapl.base:user_list') return reverse('sapl.base:user_list')

8
sapl/templates/auth/user_form.html

@ -5,14 +5,10 @@
<form action="" method="post"> <form action="" method="post">
{% csrf_token %} {% csrf_token %}
<table> {% crispy form %}
{{ form }}
</table>
<input type="submit" name="salvar" value="Salvar alterações" />
{% if object.pk %} {% if object.pk %}
<a href="{% url 'sapl.base:user_delete' object.pk %}">Remover usuário</a> <a class="btn btn-warning" href="{% url 'sapl.base:user_delete' object.pk %}">Remover usuário</a>
{% endif %} {% endif %}
</form> </form>
{% endblock base_content %} {% endblock base_content %}

48
sapl/templates/auth/user_list.html

@ -1,21 +1,33 @@
{% extends "base.html" %} {% extends "base.html" %}
{% load i18n crispy_forms_tags %} {% load i18n %}
{% load tz %}
{% load common_tags %}
{% block base_content %} {% block base_content %}
<h1>Usuários</h1> <fieldset>
<h1>Lista de usuários</h1>
{% if user_list %} {% if not user_list %}
<ul> <p>{{ NO_ENTRIES_MSG }}</p>
{% else %}
{% for user in user_list %} <table class="table table-striped table-hover">
<li> <thead>
<a href="{% url 'sapl.base:user_edit' user.pk %}">{{ user.username }}</a> ({{user.email}}) <tr>
</li> <th>Nome de Usuário</th>
{% endfor %} <th>E-mail do Usuário</th>
</tr>
</ul> </thead>
{% else %} <tbody>
<p>Não existem usuários cadastrados</p> {% for user in user_list %}
{% endif %} <tr>
<a href="{% url 'sapl.base:user_create' %}">Criar Usuário</a> <td>
<a href="{% url 'sapl.base:user_edit' user.pk %}">{{ user.username }}</a>
</td>
<td>{{ user.email }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
<a class="btn btn-default" href="{% url 'sapl.base:user_create' %}">Criar Usuário</a>
</fieldset>
{% include 'paginacao.html'%}
{% endblock base_content %} {% endblock base_content %}
Loading…
Cancel
Save