[10f099e] | 1 | # -*- coding: utf-8 -*- |
---|
| 2 | """! |
---|
| 3 | Vista que controla los procesos de las organizaciones sociales |
---|
[fcaaf27] | 4 | |
---|
[10f099e] | 5 | @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve) |
---|
| 6 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
| 7 | @date 27-07-2017 |
---|
| 8 | @version 1.0.0 |
---|
| 9 | """ |
---|
| 10 | |
---|
[cd20b73] | 11 | from users.models import * |
---|
| 12 | |
---|
[10f099e] | 13 | from django.conf import settings |
---|
| 14 | from django.contrib import messages |
---|
| 15 | from django.contrib.auth.mixins import ( |
---|
| 16 | LoginRequiredMixin |
---|
| 17 | ) |
---|
| 18 | from django.contrib.admin.models import LogEntry, ADDITION, CHANGE, DELETION |
---|
| 19 | from django.contrib.auth.models import ( |
---|
| 20 | Group, User |
---|
| 21 | ) |
---|
| 22 | from django.core.urlresolvers import ( |
---|
| 23 | reverse_lazy, reverse |
---|
| 24 | ) |
---|
| 25 | from django.shortcuts import ( |
---|
| 26 | render, redirect, get_object_or_404 |
---|
| 27 | ) |
---|
| 28 | from django.views.generic.base import RedirectView |
---|
[7ce4011] | 29 | from django.views.generic import ( |
---|
| 30 | TemplateView |
---|
| 31 | ) |
---|
[10f099e] | 32 | from django.views.generic.edit import ( |
---|
| 33 | FormView, UpdateView |
---|
| 34 | ) |
---|
| 35 | |
---|
[cd20b73] | 36 | from .forms import * |
---|
| 37 | |
---|
| 38 | #from .forms import ( |
---|
| 39 | # FormularioRegisterOrgSocial, FormsetVocero |
---|
| 40 | #) |
---|
[10f099e] | 41 | from multi_form_view import MultiModelFormView |
---|
| 42 | |
---|
[49db2df] | 43 | from .models import ( |
---|
| 44 | OrganizacionSocial, Vocero |
---|
| 45 | ) |
---|
[10f099e] | 46 | |
---|
| 47 | from utils.views import LoginRequeridoPerAuth |
---|
| 48 | |
---|
| 49 | class RegisterOrgView(LoginRequeridoPerAuth, MultiModelFormView): |
---|
| 50 | """! |
---|
| 51 | Muestra el formulario de registro de la organizacion social |
---|
| 52 | |
---|
| 53 | @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve) |
---|
| 54 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
| 55 | @date 27-07-2017 |
---|
| 56 | @version 1.0.0 |
---|
| 57 | """ |
---|
| 58 | template_name = "organizacion.register.html" |
---|
| 59 | form_classes = { |
---|
| 60 | 'organizacion_social': FormularioRegisterOrgSocial, |
---|
[1a6ed0e] | 61 | 'voceros': FormsetVocero, |
---|
[10f099e] | 62 | } |
---|
[502a0f2] | 63 | |
---|
[cd20b73] | 64 | success_url = reverse_lazy('organizaciones:registrar_organizacion') |
---|
[10f099e] | 65 | record_id = None |
---|
| 66 | group_required = [u"Administradores"] |
---|
| 67 | |
---|
| 68 | def get_objects(self): |
---|
| 69 | self.record_id = self.kwargs.get('record_id', None) |
---|
| 70 | try: |
---|
[3b6f078] | 71 | record = Vocero.objects.select_related().get(fk_org_social=self.record_id) |
---|
[49db2df] | 72 | except Vocero.DoesNotExist: |
---|
| 73 | record = None |
---|
[10f099e] | 74 | return { |
---|
[49db2df] | 75 | 'voceros': record, |
---|
[3b6f078] | 76 | 'organizacion_social': record.fk_org_social if record else None, |
---|
[10f099e] | 77 | } |
---|
| 78 | |
---|
| 79 | def forms_valid(self, forms, **kwargs): |
---|
| 80 | """ |
---|
| 81 | Valida el formulario de registro del perfil de usuario |
---|
| 82 | @return: Dirige con un mensaje de exito a el home |
---|
| 83 | """ |
---|
| 84 | nueva_organizacion = forms['organizacion_social'].save() |
---|
[3b6f078] | 85 | nuevos_voceros = self.form_classes['voceros'](self.request.POST, instance=nueva_organizacion) |
---|
| 86 | if nuevos_voceros.is_valid(): |
---|
| 87 | nuevos_voceros.save() |
---|
[0948a4e] | 88 | messages.success(self.request, "El Usuario %s registró con éxito la \ |
---|
| 89 | Organización Comunal %s" |
---|
[10f099e] | 90 | % (str(self.request.user), str(nueva_organizacion.nombre))) |
---|
[3b6f078] | 91 | return redirect(self.success_url) |
---|
[10f099e] | 92 | |
---|
| 93 | def forms_invalid(self, forms, **kwargs): |
---|
| 94 | messages.error(self.request, "%s" % (str(forms['organizacion_social'].errors.as_data()))) |
---|
| 95 | |
---|
| 96 | return super(RegisterOrgView, self).forms_invalid(forms) |
---|
[8741e74] | 97 | |
---|
| 98 | |
---|
[7ce4011] | 99 | class ListOrgView(LoginRequeridoPerAuth, TemplateView): |
---|
| 100 | """! |
---|
[cd20b73] | 101 | Listar organizaciones de la plataforma por los Administradores |
---|
| 102 | |
---|
| 103 | @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve) |
---|
| 104 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
| 105 | @date 30-05-2017 |
---|
| 106 | @version 1.0.0 |
---|
| 107 | """ |
---|
[502a0f2] | 108 | template_name = "organizaciones.list.html" |
---|
[cd20b73] | 109 | model = OrganizacionSocial |
---|
[502a0f2] | 110 | success_url = reverse_lazy('organizaciones:listar_organizacion') |
---|
[cd20b73] | 111 | group_required = [u"Administradores"] |
---|
| 112 | |
---|
| 113 | def __init__(self): |
---|
| 114 | super(ListOrgView, self).__init__() |
---|
| 115 | |
---|
| 116 | def post(self, *args, **kwargs): |
---|
| 117 | ''' |
---|
| 118 | Cambia el estado activo a el usuario |
---|
| 119 | @return: Dirige a la tabla que muestra los usuarios de la apliacion |
---|
| 120 | ''' |
---|
| 121 | accion = self.request.POST |
---|
| 122 | activar = accion.get('activar', None) |
---|
| 123 | inactivar = accion.get('inactivar', None) |
---|
| 124 | estado = False |
---|
| 125 | |
---|
| 126 | if activar is not None: |
---|
| 127 | org = activar |
---|
| 128 | estado = True |
---|
| 129 | elif inactivar is not None: |
---|
| 130 | org = inactivar |
---|
| 131 | estado = False |
---|
| 132 | else: |
---|
[0948a4e] | 133 | messages.error(self.request, "Está intentando hacer \ |
---|
[cd20b73] | 134 | una acción incorrecta") |
---|
| 135 | try: |
---|
| 136 | org_act = self.model.objects.get(pk=org) |
---|
| 137 | org_act.activa = estado |
---|
| 138 | org_act.save() |
---|
| 139 | if estado: |
---|
| 140 | messages.success(self.request, "Se ha activado \ |
---|
[0948a4e] | 141 | la organización: %s\ |
---|
[cd20b73] | 142 | " % (str(org_act))) |
---|
| 143 | else: |
---|
| 144 | messages.warning(self.request, "Se ha inactivado \ |
---|
[0948a4e] | 145 | la organización: %s\ |
---|
[cd20b73] | 146 | " % (str(org_act))) |
---|
| 147 | except: |
---|
[0948a4e] | 148 | messages.info(self.request, "La organización comunal no existe") |
---|
[cd20b73] | 149 | return redirect(self.success_url) |
---|
| 150 | |
---|
| 151 | class ListOrgVocView(LoginRequeridoPerAuth, TemplateView): |
---|
| 152 | """! |
---|
| 153 | Listar organizaciones de la plataforma |
---|
[7ce4011] | 154 | |
---|
| 155 | @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve) |
---|
| 156 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
| 157 | @date 30-05-2017 |
---|
| 158 | @version 1.0.0 |
---|
| 159 | """ |
---|
| 160 | template_name = "organizaciones.list.html" |
---|
| 161 | model = OrganizacionSocial |
---|
| 162 | success_url = reverse_lazy('organizaciones:listar_organizacion') |
---|
[d002267] | 163 | group_required = [u"Administradores", u"Voceros"] |
---|
[7ce4011] | 164 | |
---|
| 165 | def __init__(self): |
---|
[cd20b73] | 166 | super(ListOrgVocView, self).__init__() |
---|
[7ce4011] | 167 | |
---|
| 168 | def post(self, *args, **kwargs): |
---|
| 169 | ''' |
---|
| 170 | Cambia el estado activo a el usuario |
---|
| 171 | @return: Dirige a la tabla que muestra los usuarios de la apliacion |
---|
| 172 | ''' |
---|
| 173 | accion = self.request.POST |
---|
| 174 | activar = accion.get('activar', None) |
---|
| 175 | inactivar = accion.get('inactivar', None) |
---|
| 176 | estado = False |
---|
| 177 | |
---|
| 178 | if activar is not None: |
---|
| 179 | org = activar |
---|
| 180 | estado = True |
---|
| 181 | elif inactivar is not None: |
---|
| 182 | org = inactivar |
---|
| 183 | estado = False |
---|
| 184 | else: |
---|
[0948a4e] | 185 | messages.error(self.request, "Está intentando hacer \ |
---|
[cd20b73] | 186 | una acción incorrecta") |
---|
[7ce4011] | 187 | try: |
---|
| 188 | org_act = self.model.objects.get(pk=org) |
---|
| 189 | org_act.activa = estado |
---|
| 190 | org_act.save() |
---|
| 191 | if estado: |
---|
| 192 | messages.success(self.request, "Se ha activado \ |
---|
[0948a4e] | 193 | la organización: %s\ |
---|
[7ce4011] | 194 | " % (str(org_act))) |
---|
| 195 | else: |
---|
| 196 | messages.warning(self.request, "Se ha inactivado \ |
---|
[0948a4e] | 197 | la organización: %s\ |
---|
[7ce4011] | 198 | " % (str(org_act))) |
---|
| 199 | except: |
---|
[0948a4e] | 200 | messages.info(self.request, "La organización comunal no existe") |
---|
[7ce4011] | 201 | return redirect(self.success_url) |
---|
[cd20b73] | 202 | |
---|
| 203 | class ModificarOrg(LoginRequeridoPerAuth, MultiModelFormView): |
---|
| 204 | """! |
---|
| 205 | Construye el modals para la actualizacion de la Organización |
---|
| 206 | |
---|
| 207 | @author Ing. Lully Troconis (ltroconis at cenditel.gob.ve) |
---|
| 208 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
| 209 | @date 31-01-2018 |
---|
| 210 | @version 1.0.0 |
---|
| 211 | """ |
---|
| 212 | |
---|
| 213 | model = OrganizacionSocial |
---|
| 214 | form_classes = { |
---|
| 215 | 'organizaciones' : FormularioRegisterOrgSocial, |
---|
| 216 | } |
---|
| 217 | template_name = 'organizaciones.modificar.org.html' |
---|
[6d6c368] | 218 | success_url = reverse_lazy('organizaciones:registrar_organizacion') |
---|
[cd20b73] | 219 | group_required = [u"Administradores", u"Voceros"] |
---|
| 220 | record_id = None |
---|
| 221 | |
---|
| 222 | def get_context_data(self, **kwargs): |
---|
| 223 | """ |
---|
[0948a4e] | 224 | Carga el formulario en la vista, para modificar la organización comunal |
---|
[cd20b73] | 225 | @return: El contexto con los objectos para la vista |
---|
| 226 | """ |
---|
| 227 | context = super(ModificarOrg, self).get_context_data(**kwargs) |
---|
| 228 | self.record_id = self.kwargs.get('pk', None) |
---|
| 229 | if self.record_id is not None: |
---|
| 230 | try: |
---|
| 231 | organizacion = OrganizacionSocial.objects.get(pk=self.record_id) |
---|
| 232 | self.form_classes['organizaciones'](instance=organizacion) |
---|
| 233 | except: |
---|
| 234 | organizacion = organizacion |
---|
| 235 | |
---|
| 236 | context['upOrg'] = organizacion |
---|
| 237 | return context |
---|
[0948a4e] | 238 | print (organizacion) |
---|
[cd20b73] | 239 | def get_objects(self, **kwargs): |
---|
| 240 | """ |
---|
[0948a4e] | 241 | Carga el formulario en la vista,para actualizar la organización comunal |
---|
[cd20b73] | 242 | @return: El contexto con los objectos para la vista |
---|
| 243 | """ |
---|
| 244 | self.record_id = self.kwargs.get('pk', None) |
---|
| 245 | try: |
---|
| 246 | record = self.model.objects.select_related().get(pk=self.record_id) |
---|
| 247 | except OrganizacionSocial.DoesNotExist: |
---|
| 248 | record = record |
---|
| 249 | print (record) |
---|
| 250 | return { |
---|
| 251 | 'organizaciones': record} |
---|
| 252 | |
---|
| 253 | def get_success_url(self): |
---|
| 254 | return reverse('organizaciones:listar_org') |
---|
| 255 | |
---|
| 256 | def forms_valid(self, forms, **kwargs): |
---|
| 257 | """ |
---|
[0948a4e] | 258 | Valida el formulario de actualización de la organización comunal |
---|
[cd20b73] | 259 | @return: Dirige con un mensaje de éxito a el home |
---|
| 260 | """ |
---|
| 261 | self.record_id = self.kwargs.get('pk', None) |
---|
| 262 | if self.record_id is not None: |
---|
[0948a4e] | 263 | objeto = get_object_or_404(OrganizacionSocial, pk=self.record_id) |
---|
| 264 | print(objeto) |
---|
| 265 | messages.success(self.request, "Organización Comunal %s actualizada con éxito\ |
---|
[cd20b73] | 266 | " % (str(objeto.nombre))) |
---|
| 267 | return super(ModificarOrg, self).forms_valid(forms) |
---|
[aab1468] | 268 | |
---|
[6d6c368] | 269 | class SocialOrganizationUpdateView(LoginRequeridoPerAuth, UpdateView): |
---|
[aab1468] | 270 | model = OrganizacionSocial |
---|
| 271 | form_class = FormularioRegisterOrgSocial |
---|
[6d6c368] | 272 | template_name = 'social.organization.update.html' |
---|
| 273 | success_url = reverse_lazy('organizaciones:registrar_organizacion') |
---|
[aab1468] | 274 | group_required = [u'Administradores', u'Voceros'] |
---|
| 275 | |
---|
[6d6c368] | 276 | def forms_valid(self, form): |
---|
| 277 | return super(OrganizationUpdateView, self).forms_valid(form) |
---|