#encoding:utf-8 # Create your views here. from django.http import HttpResponseRedirect,HttpResponse from django.template import RequestContext, loader, Context from django.shortcuts import get_object_or_404,render,render_to_response, redirect from diario.models import * from django.contrib.auth.models import User,Group from django.core.urlresolvers import reverse from django.contrib import auth from django.contrib.auth.decorators import login_required from diario.forms import * from django.contrib import messages from django.forms import ModelForm from django.db import transaction from django.db.models import Q from django.template.response import TemplateResponse from django.utils.dateformat import DateFormat from django.utils.dateparse import * from django.utils.formats import get_format from django.utils import simplejson import json from django.utils.html import * from django.utils.datastructures import * from django.core import * from decimal import * import os import locale import csv import sys import re import datetime from django.views.generic import ListView, DetailView, View from .serializers import * from rest_framework import generics #vista para redirigir al index def acceder(request): return render_to_response('index.html',context_instance=RequestContext(request)) #vista para acceder a la aplicacion def login(request): username = request.POST.get('username', '') password = request.POST.get('password', '') user = auth.authenticate(username=username, password=password) if user is not None and user.is_active: # Correct password, and the user is marked "active" auth.login(request, user) # Redirect to a success page. #messages.success(request, 'entra pero falta checar otras cosas') #return render_to_response ('index.html',context_instance=RequestContext(request)) return TemplateResponse(request, 'dashboardorigen.html' ) else: messages.error(request, 'error de acceso verifique su usuario y contraseƱa') return render_to_response ('index.html',context_instance=RequestContext(request)) #vista para salir de la aplicacion @login_required(login_url='diario:acceder') def logout(request): auth.logout(request) return HttpResponseRedirect(reverse('diario:acceder')) @login_required(login_url='diario:acceder') def perfil(request, user_id): return TemplateResponse(request, 'perfil.html' ) @login_required(login_url='diario:acceder') def creartipocontenido(request): if request.method=='POST': form = TipoContenidoForm(request.POST) if form.is_valid(): form.save() messages.success(request, 'Se guardo exitosamente el registro') return HttpResponseRedirect(reverse('diario:creartipocontenido')) else: messages.error(request, 'corrija los siguientes errores') else: form = TipoContenidoForm() diccionario={'form':form, 'operacion': 'Registrar', 'tipo_menu':'active', } return render_to_response('tipocontenidoform.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='diario:acceder') def crearperiodico(request): if request.method=='POST': form = PeriodicoForm(request.POST,request.FILES) if form.is_valid(): form.save() messages.success(request, 'Se guardo exitosamente el registro') return HttpResponseRedirect(reverse('diario:crearperiodico')) else: messages.error(request, 'corrija los siguientes errores') else: form = PeriodicoForm() diccionario={'form':form, 'operacion': 'Registrar', 'periodico_menu':'active', } return render_to_response('periodicoform.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='diario:acceder') def crearusuario(request): if request.method=='POST': form = PermisosForm(request.POST) if form.is_valid(): grupo= form.cleaned_data["grupo"] username = form.cleaned_data['username'] first_name = form.cleaned_data['first_name'] last_name = form.cleaned_data['last_name'] password_one = form.cleaned_data['password1'] password_two = form.cleaned_data['password2'] usuario = User(username=username, first_name=first_name, last_name=last_name, password=password_one) formulario = PermisosForm(request.POST, instance=usuario) u = formulario.save() grupo.user_set.add(u) messages.success(request, 'Se guardo exitosamente el registro') return HttpResponseRedirect(reverse('diario:crearusuario')) else: messages.error(request, 'corrija los siguientes errores') else: form = PermisosForm() diccionario={'form':form, 'operacion': 'Registrar', 'user_menu':'active', } return render_to_response('usuarioform.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='diario:acceder') def editartipocontenido(request,tipo_id): instanciatipocontenido = TipoContenido.objects.get(pk=tipo_id) if request.method=='POST': form = TipoContenidoForm(request.POST,instance=instanciatipocontenido) if form.is_valid(): form.save() messages.success(request, 'Se actualizo exitosamente el registro') return HttpResponseRedirect(reverse('diario:mostrartipocontenido')) else: form = TipoContenidoForm(instance=instanciatipocontenido) consultatipos = TipoContenido.objects.all() diccionario={'form':form, 'operacion':'Editar', 'datos':consultatipos, 'tipo_menu':'active', } return render_to_response('tipocontenidoform.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='diario:acceder') def editarusuario(request,usuario_id): instanciausuario = User.objects.get(pk=usuario_id) if request.method=='POST': form = Permisos2Form(request.POST,instance=instanciausuario) if form.is_valid(): instanciausuario.username=form.cleaned_data['username'] instanciausuario.first_name = form.cleaned_data['first_name'] instanciausuario.last_name = form.cleaned_data['last_name'] instanciausuario.set_password(request.POST['password1']) instanciausuario.save() for grupo in instanciausuario.groups.all(): grupo.user_set.remove(instanciausuario) grupoform = form.cleaned_data["grupo"] grupoform.user_set.add(instanciausuario) messages.success(request, 'Se actualizo exitosamente el registro') return HttpResponseRedirect(reverse('diario:mostrarusuario')) else: form = Permisos2Form(instance=instanciausuario) consultausuario = User.objects.exclude(is_staff=True) return render_to_response('usuarioform.html',{'form':form,'operacion':'Editar','datos':consultausuario, 'user_menu':'active',},context_instance=RequestContext(request)) @login_required(login_url='diario:acceder') def editarperiodico(request,periodico_id): instanciaperiodico = Periodico.objects.get(pk=periodico_id) if request.method=='POST': form = PeriodicoForm(request.POST,request.FILES,instance=instanciaperiodico) if form.is_valid(): form.save() messages.success(request, 'Se actualizo exitosamente el registro') return HttpResponseRedirect(reverse('diario:crearperiodico')) else: form = PeriodicoForm(instance=instanciaperiodico) diccionario={'form':form, 'operacion':'Editar', 'periodico_menu':'active', } return render_to_response('periodicoform.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='diario:acceder') def borrartipocontenido(request,tipo_id): instanciatipocontenido = TipoContenido.objects.get(pk=tipo_id) instanciatipocontenido.delete() messages.warning(request, 'Se elimino el registro') return HttpResponseRedirect(reverse('diario:mostrartipocontenido')) @login_required(login_url='diario:acceder') def borrarusuario(request,usuario_id): instanciausuario = User.objects.get(pk=usuario_id) instanciausuario.delete() messages.warning(request, 'Se elimino el registro') return HttpResponseRedirect(reverse('diario:mostrarusuario')) @login_required(login_url='diario:acceder') def borrarperiodico(request,periodico_id): instanciaperiodico = Periodico.objects.get(pk=periodico_id) instanciaperiodico.delete() messages.warning(request, 'Se elimino el registro') return HttpResponseRedirect(reverse('diario:crearperiodico')) @login_required(login_url='diario:acceder') def mostrarperiodico(request): consultaperiodicos = Periodico.objects.all() diccionario={ 'operacion':'Mostrar Todos', 'datos':consultaperiodicos, 'periodico_menu':'active', } return render_to_response('periodicomostrar.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='diario:acceder') def mostrartipocontenido(request): consultatipocontenido = TipoContenido.objects.all() diccionario={ 'operacion':'Mostrar Todos', 'datos':consultatipocontenido, 'tipo_menu':'active', } return render_to_response('tipocontenidomostrar.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='diario:acceder') def mostrarusuario(request): consultausuario = User.objects.exclude(is_staff=True) consultagrupos = Group.objects.all() diccionario={ 'operacion':'Mostrar Todos', 'datos':consultausuario, 'user_menu':'active', } return render_to_response('usuariomostrar.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='datos:acceder') def importarperiodico(request): if request.method=='POST': form = ImportarForm(request.POST,request.FILES) if form.is_valid(): archivo = csv.reader(form.cleaned_data["archivo"]) contador = 0 for fila in archivo: if contador == 0: contador=contador+1 else: columna1 = fila[0] columna2 = fila[1] columna3 = fila[2] columna4 = fila[3] columna5 = fila[4] columna6 = fila[5] columna7 = fila[6] columna8 = fila[7] columna9 = fila[8] fecha = datetime.datetime.strptime(str(columna1),"%Y-%m-%d").date() instanciatipocontenido = TipoContenido.objects.get(pk=int(columna8)) instanciaperiodico = Periodico(fecha=fecha,numeroperiodico=int(columna2), tipoperiodico=str(columna3),anexo=bool(columna4),numeroanexo=int(columna5), suplemento=str(columna6),titulo =str(columna7), tipocontenido=instanciatipocontenido,archivo=str(columna9)) instanciaperiodico.save() messages.success(request, 'Se guardo exitosamente el registro') return HttpResponseRedirect(reverse('diario:importarperiodico')) else: messages.error(request, 'corrija los siguientes errores') else: form = ImportarForm() diccionario={'form':form, 'operacion': 'Importar', 'periodico_menu':'active', } return render_to_response('periodicoform.html',diccionario,context_instance=RequestContext(request)) @login_required(login_url='diario:acceder') def filtrarperiodicofecha(request): if request.method=='POST': form = FiltrarForm(request.POST) if form.is_valid(): desde = datetime.datetime.strptime(request.POST['desde'],"%d/%m/%Y").date() hasta = datetime.datetime.strptime(request.POST['hasta'],"%d/%m/%Y").date() consultaperiodicos = Periodico.objects.filter(fecha__range=[desde,hasta]) return render_to_response('periodicomostrar.html',{'datos':consultaperiodicos,'periodico_menu':'active','operacion':'Mostrar'},context_instance=RequestContext(request)) else: messages.error(request, 'corrija los siguientes errores') else: form = FiltrarForm() return render_to_response('filtrarform.html',{'form':form,'operacion':'Filtrar','periodico_menu':'active',},context_instance=RequestContext(request)) @login_required(login_url='diario:acceder') def filtrarperiodicotitulo(request): if request.method=='POST': form = TituloForm(request.POST) if form.is_valid(): consultaperiodicos = Periodico.objects.filter(titulo__icontains=request.POST['titulo']) return render_to_response('periodicomostrar.html',{'datos':consultaperiodicos,'periodico_menu':'active','operacion':'Mostrar'},context_instance=RequestContext(request)) else: messages.error(request, 'corrija los siguientes errores') else: form = TituloForm() return render_to_response('filtrarform.html',{'form':form,'operacion':'Filtrar','periodico_menu':'active',},context_instance=RequestContext(request)) @login_required(login_url='diario:acceder') def filtrarperiodiconumero(request): if request.method=='POST': form = NumeroPeriodicoForm(request.POST) if form.is_valid(): consultaperiodicos = Periodico.objects.filter(numeroperiodico__icontains=request.POST['numeroperiodico']) return render_to_response('periodicomostrar.html',{'datos':consultaperiodicos,'periodico_menu':'active','operacion':'Mostrar'},context_instance=RequestContext(request)) else: messages.error(request, 'corrija los siguientes errores') else: form = NumeroPeriodicoForm() return render_to_response('filtrarform.html',{'form':form,'operacion':'Filtrar','periodico_menu':'active',},context_instance=RequestContext(request)) @login_required(login_url='diario:acceder') def filtrarperiodicotitulonumero(request): if request.method=='POST': form = TituloNumeroForm(request.POST) if form.is_valid(): consultaperiodicos = Periodico.objects.filter(numeroperiodico__icontains=request.POST['numeroperiodico'],titulo__icontains=request.POST['titulo']) return render_to_response('periodicomostrar.html',{'datos':consultaperiodicos,'periodico_menu':'active','operacion':'Mostrar'},context_instance=RequestContext(request)) else: messages.error(request, 'corrija los siguientes errores') else: form = TituloNumeroForm() return render_to_response('filtrarform.html',{'form':form,'operacion':'Filtrar','periodico_menu':'active',},context_instance=RequestContext(request)) #lista de periodicos con busqueda class PeriodicosList(generics.ListAPIView): serializer_class = PeriodicoSerializer paginate_by = 15 def get_queryset(self): busqueda = self.request.GET.get('busqueda') if busqueda: try: busqueda = datetime.datetime.strptime(busqueda, "%d-%m-%Y").date() queryset = Periodico.objects.filter(Q(fecha=busqueda)).filter(fecha__lte='2018-12-31').order_by('-fecha') except Exception as e: queryset = Periodico.objects.filter(Q(numeroperiodico=busqueda)).filter(fecha__lte='2018-12-31').order_by('-fecha') if queryset.count()==0: queryset = Periodico.objects.filter(Q(titulo__icontains=busqueda)).filter(fecha__lte='2018-12-31').order_by('-fecha') else: queryset = Periodico.objects.filter(fecha__lte='2018-12-31').order_by('-fecha') return queryset #lista de periodicos ordenados y paginados class UltimosPeriodicosList(generics.ListAPIView): serializer_class = PeriodicoSerializer paginate_by = 15 def get_queryset(self): queryset = Periodico.objects.filter(fecha__lte='2018-12-31').order_by('-fecha') return queryset