# -*- encoding: UTF-8 -*- from django.core.exceptions import ImproperlyConfigured from django.core.mail import send_mail from django.core.mail.message import BadHeaderError from django.db.models.query_utils import Q from django.views.generic.base import RedirectView from django.views.generic.edit import UpdateView, DeleteView from django.core.urlresolvers import reverse_lazy from django.views.generic import ListView, DetailView, CreateView from django.contrib import messages from rest_framework.generics import ListAPIView from pure_pagination.mixins import PaginationMixin from .forms import * from .models import * # Create your views here. class DinamicPaginationMixin(PaginationMixin): def get_paginate_by(self, queryset): self.paginate_by = self.request.GET.get('rpp', 10) if self.paginate_by: self.paginate_by = int(self.paginate_by) return self.paginate_by def get_context_data(self, **kwargs): context = super(DinamicPaginationMixin, self).get_context_data(**kwargs) context['rpp'] = self.get_paginate_by(self.queryset) return context class SearchMixin(object): def get_search(self): return self.request.GET.get('search', '') def get_filter(self, queryset): raise ImproperlyConfigured('Debe especificar implementar el filtro de búsqueda') def get_queryset(self): queryset = super(SearchMixin, self).get_queryset() queryset = self.get_filter(queryset) return queryset def get_context_data(self, **kwargs): context = super(SearchMixin, self).get_context_data(**kwargs) context['search'] = self.get_search() return context class DepartamentosApiView(ListAPIView): model = departamentos def get_queryset(self): dependencia = self.request.GET.get('dependencia') if dependencia: return departamentos.objects.filter(dependencia__id=dependencia) return super(DepartamentosApiView, self).get_queryset() class ListaDependenciasView(ListView): model = dependencias def get_filter(self, queryset): search = self.get_search() if search: queryset = queryset.filter( Q(nombre__icontains=search) | Q(clave_dependencia__icontains=search) ) return queryset def get_context_data(self, **kwargs): context = super(ListaDependenciasView, self).get_context_data(**kwargs) context["dependencia_ac"] = "active" context["dependencia"] = "active" return context class CrearDependenciaView(CreateView): model = dependencias form_class = DependenciasForm def get_context_data(self, **kwargs): context = super(CrearDependenciaView, self).get_context_data(**kwargs) context["dependencia_ac"] = "active" context["dependencia"] = "active" return context class UpdateDependenciasView(UpdateView): model = dependencias form_class = DependenciasForm success_url = reverse_lazy("lista-dependencias") def get_context_data(self, **kwargs): context = super(UpdateDependenciasView, self).get_context_data(**kwargs) context["dependencia_ac"] = "active" context["dependencia"] = "active" return context class EliminarDependenciasView(DeleteView): model = dependencias success_url = reverse_lazy("lista-dependencias") def get_context_data(self, **kwargs): context = super(EliminarDependenciasView, self).get_context_data(**kwargs) context["dependencia"] = "active" return context class DetalleDependenciaView(DetailView): model = dependencias def get_context_data(self, **kwargs): context = super(DetalleDependenciaView, self).get_context_data(**kwargs) context["dependencia"] = "active" context["dependencia_ac"] = "active" return context class ListaDepartamentoView(ListView): model = departamentos def get_filter(self, queryset): search = self.get_search() if search: queryset = queryset.filter( Q(nombre__icontains=search) | Q(clave_dependencia__icontains=search) ) return queryset def get_context_data(self, **kwargs): context = super(ListaDepartamentoView, self).get_context_data(**kwargs) context["dependencia_ac"] = "active" context["dependencia"] = "active" return context class CrearDepartamentoView(CreateView): model = departamentos form_class = DeparamentosForm def get_context_data(self, **kwargs): context = super(CrearDepartamentoView, self).get_context_data(**kwargs) context["dependencia_ac"] = "active" context["dependencia"] = "active" return context class UpdateDepartamentoView(UpdateView): model = departamentos form_class = DeparamentosForm success_url = reverse_lazy("lista-departamento") def get_context_data(self, **kwargs): context = super(UpdateDepartamentoView, self).get_context_data(**kwargs) context["dependencia_ac"] = "active" context["dependencia"] = "active" return context class EliminarDepartamentoView(DeleteView): model = departamentos success_url = reverse_lazy("lista-departamento") def get_context_data(self, **kwargs): context = super(EliminarDepartamentoView, self).get_context_data(**kwargs) context["dependencia"] = "active" return context class DetalleDepartamentoView(DetailView): model = departamentos def get_context_data(self, **kwargs): context = super(DetalleDepartamentoView, self).get_context_data(**kwargs) context["dependencia"] = "active" context["dependencia_ac"] = "active" return context