# -*- coding: utf-8 -*-
"""!
Vista que controla los procesos de las organizaciones sociales
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 27-07-2017
@version 1.0.0
"""
from users.models import *
from django.conf import settings
from django.contrib import messages
from django.contrib.auth.mixins import (
LoginRequiredMixin
)
from django.contrib.admin.models import LogEntry, ADDITION, CHANGE, DELETION
from django.contrib.auth.models import (
Group, User
)
from django.core.urlresolvers import (
reverse_lazy, reverse
)
from django.shortcuts import (
render, redirect, get_object_or_404
)
from django.views.generic.base import RedirectView
from django.views.generic import (
TemplateView
)
from django.views.generic.edit import (
FormView, UpdateView
)
from .forms import *
#from .forms import (
# FormularioRegisterOrgSocial, FormsetVocero
#)
from multi_form_view import MultiModelFormView
from .models import (
OrganizacionSocial, Vocero
)
from utils.views import LoginRequeridoPerAuth
class RegisterOrgView(LoginRequeridoPerAuth, MultiModelFormView):
"""!
Muestra el formulario de registro de la organizacion social
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 27-07-2017
@version 1.0.0
"""
template_name = "organizacion.register.html"
form_classes = {
'organizacion_social': FormularioRegisterOrgSocial,
'voceros': FormsetVocero,
}
success_url = reverse_lazy('organizaciones:registrar_organizacion')
record_id = None
group_required = [u"Administradores"]
def get_objects(self):
self.record_id = self.kwargs.get('record_id', None)
try:
record = Vocero.objects.select_related().get(fk_org_social=self.record_id)
except Vocero.DoesNotExist:
record = None
return {
'voceros': record,
'organizacion_social': record.fk_org_social if record else None,
}
def forms_valid(self, forms, **kwargs):
"""
Valida el formulario de registro del perfil de usuario
@return: Dirige con un mensaje de exito a el home
"""
nueva_organizacion = forms['organizacion_social'].save()
nuevos_voceros = self.form_classes['voceros'](self.request.POST, instance=nueva_organizacion)
if nuevos_voceros.is_valid():
nuevos_voceros.save()
messages.success(self.request, "El Usuario %s registró con éxito la \
Organización Comunal %s"
% (str(self.request.user), str(nueva_organizacion.nombre)))
return redirect(self.success_url)
def forms_invalid(self, forms, **kwargs):
messages.error(self.request, "%s" % (str(forms['organizacion_social'].errors.as_data())))
return super(RegisterOrgView, self).forms_invalid(forms)
class ListOrgView(LoginRequeridoPerAuth, TemplateView):
"""!
Listar organizaciones de la plataforma por los Administradores
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 30-05-2017
@version 1.0.0
"""
template_name = "organizaciones.list.html"
model = OrganizacionSocial
success_url = reverse_lazy('organizaciones:listar_organizacion')
group_required = [u"Administradores"]
def __init__(self):
super(ListOrgView, self).__init__()
def post(self, *args, **kwargs):
'''
Cambia el estado activo a el usuario
@return: Dirige a la tabla que muestra los usuarios de la apliacion
'''
accion = self.request.POST
activar = accion.get('activar', None)
inactivar = accion.get('inactivar', None)
estado = False
if activar is not None:
org = activar
estado = True
elif inactivar is not None:
org = inactivar
estado = False
else:
messages.error(self.request, "Está intentando hacer \
una acción incorrecta")
try:
org_act = self.model.objects.get(pk=org)
org_act.activa = estado
org_act.save()
if estado:
messages.success(self.request, "Se ha activado \
la organización: %s\
" % (str(org_act)))
else:
messages.warning(self.request, "Se ha inactivado \
la organización: %s\
" % (str(org_act)))
except:
messages.info(self.request, "La organización comunal no existe")
return redirect(self.success_url)
class ListOrgVocView(LoginRequeridoPerAuth, TemplateView):
"""!
Listar organizaciones de la plataforma
@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 30-05-2017
@version 1.0.0
"""
template_name = "organizaciones.list.html"
model = OrganizacionSocial
success_url = reverse_lazy('organizaciones:listar_organizacion')
group_required = [u"Administradores", u"Voceros"]
def __init__(self):
super(ListOrgVocView, self).__init__()
def post(self, *args, **kwargs):
'''
Cambia el estado activo a el usuario
@return: Dirige a la tabla que muestra los usuarios de la apliacion
'''
accion = self.request.POST
activar = accion.get('activar', None)
inactivar = accion.get('inactivar', None)
estado = False
if activar is not None:
org = activar
estado = True
elif inactivar is not None:
org = inactivar
estado = False
else:
messages.error(self.request, "Está intentando hacer \
una acción incorrecta")
try:
org_act = self.model.objects.get(pk=org)
org_act.activa = estado
org_act.save()
if estado:
messages.success(self.request, "Se ha activado \
la organización: %s\
" % (str(org_act)))
else:
messages.warning(self.request, "Se ha inactivado \
la organización: %s\
" % (str(org_act)))
except:
messages.info(self.request, "La organización comunal no existe")
return redirect(self.success_url)
class ModificarOrg(LoginRequeridoPerAuth, MultiModelFormView):
"""!
Construye el modals para la actualizacion de la Organización
@author Ing. Lully Troconis (ltroconis at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 31-01-2018
@version 1.0.0
"""
model = OrganizacionSocial
form_classes = {
'organizaciones' : FormularioRegisterOrgSocial,
}
template_name = 'organizaciones.modificar.org.html'
success_url = reverse_lazy('organizaciones:registrar_organizacion')
group_required = [u"Administradores", u"Voceros"]
record_id = None
def get_context_data(self, **kwargs):
"""
Carga el formulario en la vista, para modificar la organización comunal
@return: El contexto con los objectos para la vista
"""
context = super(ModificarOrg, self).get_context_data(**kwargs)
self.record_id = self.kwargs.get('pk', None)
if self.record_id is not None:
try:
organizacion = OrganizacionSocial.objects.get(pk=self.record_id)
self.form_classes['organizaciones'](instance=organizacion)
except:
organizacion = organizacion
context['upOrg'] = organizacion
return context
print (organizacion)
def get_objects(self, **kwargs):
"""
Carga el formulario en la vista,para actualizar la organización comunal
@return: El contexto con los objectos para la vista
"""
self.record_id = self.kwargs.get('pk', None)
try:
record = self.model.objects.select_related().get(pk=self.record_id)
except OrganizacionSocial.DoesNotExist:
record = record
print (record)
return {
'organizaciones': record}
def get_success_url(self):
return reverse('organizaciones:listar_org')
def forms_valid(self, forms, **kwargs):
"""
Valida el formulario de actualización de la organización comunal
@return: Dirige con un mensaje de éxito a el home
"""
self.record_id = self.kwargs.get('pk', None)
if self.record_id is not None:
objeto = get_object_or_404(OrganizacionSocial, pk=self.record_id)
print(objeto)
messages.success(self.request, "Organización Comunal %s actualizada con éxito\
" % (str(objeto.nombre)))
return super(ModificarOrg, self).forms_valid(forms)
class SocialOrganizationUpdateView(LoginRequeridoPerAuth, UpdateView):
model = OrganizacionSocial
form_class = FormularioRegisterOrgSocial
template_name = 'social.organization.update.html'
success_url = reverse_lazy('organizaciones:registrar_organizacion')
group_required = [u'Administradores', u'Voceros']
def forms_valid(self, form):
return super(OrganizationUpdateView, self).forms_valid(form)