Browse Source

remove OperadorAutorCrud

pull/3371/head
Leandro Roberto 5 years ago
parent
commit
19ea87cfcc
  1. 5
      sapl/base/urls.py
  2. 156
      sapl/base/views.py
  3. 5
      sapl/templates/base/subnav_autor.yaml

5
sapl/base/urls.py

@ -9,7 +9,7 @@ from django.views.generic.base import RedirectView, TemplateView
from sapl.base.views import (AutorCrud, ConfirmarEmailView, TipoAutorCrud, get_estatistica,
PesquisarAutorView, RecuperarSenhaEmailView, RecuperarSenhaFinalizadoView,
RecuperarSenhaConfirmaView, RecuperarSenhaCompletoView, RelatorioMateriaAnoAssuntoView,
IndexView, UserCrud, OperadorAutorCrud)
IndexView, UserCrud)
from sapl.settings import MEDIA_URL, LOGOUT_REDIRECT_URL
from .apps import AppConfig
@ -58,8 +58,7 @@ urlpatterns = [
url(r'^$', IndexView.as_view(template_name='index.html'), name='sapl_index'),
url(r'^sistema/autor/tipo/', include(TipoAutorCrud.get_urls())),
url(r'^sistema/autor/', include(AutorCrud.get_urls() +
OperadorAutorCrud.get_urls())),
url(r'^sistema/autor/', include(AutorCrud.get_urls())),
url(r'^sistema/autor/pesquisar-autor/',
PesquisarAutorView.as_view(), name='pesquisar_autor'),

156
sapl/base/views.py

@ -196,74 +196,7 @@ class AutorCrud(CrudAux):
class BaseMixin(CrudAux.BaseMixin):
list_field_names = ['tipo', 'nome', 'operadores']
class DetailView(CrudAux.DetailView):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['subnav_template_name'] = 'base/subnav_autor.yaml'
return context
class DeleteView(CrudAux.DeleteView):
def delete(self, *args, **kwargs):
self.object = self.get_object()
grupo = Group.objects.filter(name='Autor')[0]
lista_operadores = list(self.object.operadores.all())
response = CrudAux.DeleteView.delete(self, *args, **kwargs)
if not Autor.objects.filter(pk=kwargs['pk']).exists():
for u in lista_operadores:
u.groups.remove(grupo)
return response
class UpdateView(CrudAux.UpdateView):
logger = logging.getLogger(__name__)
layout_key = None
form_class = AutorForm
def form_valid(self, form):
# devido a implement do form o form_valid do Crud deve ser pulado
return super(CrudAux.UpdateView, self).form_valid(form)
"""def get_success_url(self):
username = self.request.user.username
pk_autor = self.object.id
url_reverse = reverse('sapl.base:autor_detail',
kwargs={'pk': pk_autor})
return url_reverse"""
class CreateView(CrudAux.CreateView):
logger = logging.getLogger(__name__)
form_class = AutorForm
layout_key = None
"""def get_success_url(self):
username = self.request.user.username
pk_autor = self.object.id
url_reverse = reverse('sapl.base:autor_detail',
kwargs={'pk': pk_autor})
return url_reverse"""
class OperadorAutorCrud(MasterDetailCrud):
parent_field = 'autor'
model = OperadorAutor
help_path = 'operadorautor'
class BaseMixin(MasterDetailCrud.BaseMixin):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context[
'subnav_template_name'] = 'base/subnav_autor.yaml'
return context
def send_mail_operador(self):
def send_mail_operadores(self):
username = self.request.user.username
if not mail_service_configured():
@ -276,16 +209,18 @@ class OperadorAutorCrud(MasterDetailCrud):
'. Enviando email na criação de Autores.')
kwargs = {}
user = self.object.user
for user in self.object.operadores.all():
if not user.email:
self.logger.warning(
_('Registro de Autor sem envio de email. '
'Usuário sem um email cadastrado.'))
return
continue
kwargs['token'] = default_token_generator.make_token(user)
kwargs['uidb64'] = urlsafe_base64_encode(force_bytes(user.pk))
kwargs['uidb64'] = urlsafe_base64_encode(
force_bytes(user.pk))
assunto = "SAPL - Confirmação de Conta"
full_url = self.request.get_raw_uri()
url_base = full_url[:full_url.find('sistema') - 1]
@ -310,68 +245,55 @@ class OperadorAutorCrud(MasterDetailCrud):
self.logger.error(
'user=' + username + '. Erro no envio de email na criação de Autores. ' + str(e))
class UpdateView(MasterDetailCrud.UpdateView):
form_class = OperadorAutorForm
# TODO tornar operador readonly na edição
def form_valid(self, form):
old = OperadorAutor.objects.get(pk=self.object.pk)
class DeleteView(CrudAux.DeleteView):
groups_remove_user(old.user, 'Autor')
def delete(self, *args, **kwargs):
self.object = self.get_object()
response = super().form_valid(form)
grupo = Group.objects.filter(name='Autor')[0]
lista_operadores = list(self.object.operadores.all())
groups_add_user(self.object.user, 'Autor')
response = CrudAux.DeleteView.delete(self, *args, **kwargs)
self.send_mail_operador()
if not Autor.objects.filter(pk=kwargs['pk']).exists():
for u in lista_operadores:
u.groups.remove(grupo)
return response
class CreateView(MasterDetailCrud.CreateView):
form_class = OperadorAutorForm
class UpdateView(CrudAux.UpdateView):
logger = logging.getLogger(__name__)
layout_key = None
form_class = AutorForm
def form_valid(self, form):
self.object = form.save(commit=False)
oper = OperadorAutor.objects.filter(
user_id=self.object.user_id,
autor_id=self.object.autor_id
).exists()
if oper:
form._errors['user'] = ErrorList([_(
'Este Operador já está registrado '
'para este Autor.')])
return self.form_invalid(form)
oper = OperadorAutor.objects.filter(
user_id=self.object.user_id).exclude(
autor_id=self.object.autor_id
).exists()
if oper:
form._errors['user'] = ErrorList([_(
'Este Operador já está registrado '
'para outro Autor.')])
return self.form_invalid(form)
response = super().form_valid(form)
groups_add_user(self.object.user, 'Autor')
# devido a implement do form o form_valid do Crud deve ser pulado
return super(CrudAux.UpdateView, self).form_valid(form)
self.send_mail_operador()
def get_success_url(self):
username = self.request.user.username
pk_autor = self.object.id
url_reverse = reverse('sapl.base:autor_detail',
kwargs={'pk': pk_autor})
return response
self.send_mail_operadores()
class DeleteView(MasterDetailCrud.DeleteView):
return url_reverse
def post(self, request, *args, **kwargs):
class CreateView(CrudAux.CreateView):
logger = logging.getLogger(__name__)
form_class = AutorForm
layout_key = None
self.object = self.get_object()
def get_success_url(self):
username = self.request.user.username
pk_autor = self.object.id
url_reverse = reverse('sapl.base:autor_detail',
kwargs={'pk': pk_autor})
groups_remove_user(self.object.user, 'Autor')
self.send_mail_operadores()
return MasterDetailCrud.DeleteView.post(
self, request, *args, **kwargs)
return url_reverse
class PesquisarAutorView(FilterView):

5
sapl/templates/base/subnav_autor.yaml

@ -1,5 +0,0 @@
{% load i18n %}
- title: {% trans 'Início' %}
url: autor_detail
- title: {% trans 'Operadores' %}
url: operadorautor_list
Loading…
Cancel
Save