#encoding:utf-8 # Create your views here. from django.http import HttpResponse, HttpResponseRedirect from django.db import transaction from django.utils import simplejson from django.template import RequestContext, loader, Context from django.http import * from django.shortcuts import get_object_or_404,render,render_to_response, redirect from django.template.response import * from django.contrib.auth.decorators import * from django.contrib.auth import * from principal.models import * from catalogos.models import * from django.shortcuts import * from django.contrib.auth.models import User from principal.forms import * from principal.forms import * from django.db.models import * from datetime import * from django.contrib import messages from django.utils import formats from django.views.generic import ListView from django.core.context_processors import csrf from django.views.decorators.csrf import csrf_exempt from django.db.models import Q from django.db.models import Count import json from django.core import serializers from django.contrib.auth.forms import UserCreationForm from django.template.response import TemplateResponse from django.utils.html import format_html, format_html_join from datetime import datetime from django.utils.datastructures import * import datetime from datetime import datetime, timedelta from django.forms.models import inlineformset_factory import os import locale from django.contrib import auth from django.core.mail import send_mail, BadHeaderError, EmailMultiAlternatives def login_(request): return TemplateResponse(request, 'login.html') def perfil(request, user_id): return TemplateResponse(request, 'perfil.html',{'user':request.user,'principal':'active'} ) def validarView(request): username = request.POST['username'] password = request.POST['password'] user = authenticate(username = username, password = password) if user is not None: if user.is_active: login(request, user) return HttpResponseRedirect('/index') else: messages.error(request, 'cuenta desactivada') else: messages.error(request, 'Usuario no valido, verifique sus credenciales') return TemplateResponse(request, 'login.html') def logout_user(request): response = logout(request) return HttpResponseRedirect('/login') @login_required(login_url='/login') def index(request): estats=estatus.objects.get(pk=5) time = datetime.now().strftime("%Y-%m-%d") proyectoAreas = [] try: tos = cat_personas.objects.get(idUser__in =[request.user.id] ) proyectoAreas = proyecto_datos.objects.filter(dependencias=tos.area).exclude(estatus=estats).exclude(activo=0) except: pass try: bes = Usuario.objects.filter(idUser__in =[request.user.id] ) proyectoCancelado = proyecto_datos.objects.filter(responsableAdmin=bes).exclude(estatus=estats).exclude(activo=0) except: pass proyectovies = proyecto_datos.objects.all().exclude(activo=0) return render_to_response('index.html',{'proyectoCancelado':proyectoCancelado,'proyectoAreas':proyectoAreas,'time':time,'proyectovies':proyectovies,'index':'active'},context_instance = RequestContext(request)) def proyectoArchvivarView(request): estats=estatus.objects.get(pk=5) proyectoCancelado = proyecto_datos.objects.all().exclude(estatus=estats).exclude(activo=1) return render_to_response('proyectoArchvivarView.html',{'proyectoCancelado':proyectoCancelado,'index':'active'},context_instance = RequestContext(request)) @login_required(login_url='/login') def principal(request): var1 = Usuario.objects.filter(id=request.user.id) ai = Usuario.objects.get(id = request.user.id ) a = ai.area return render_to_response('principal.html',{'index':'active'},context_instance = RequestContext(request)) def registra_empleado(request): siguiente_lote = cat_personas.objects.count() if request.method=='POST': form = usuarioForm(request.POST) if form.is_valid(): form.save() messages.success(request, 'Usuario Ingresado') return HttpResponseRedirect('/empleado') else: form = usuarioForm(initial={'noPersona':siguiente_lote}) return render_to_response('empleado.html',{'noPersona':siguiente_lote,'form':usuarioForm,},context_instance=RequestContext(request)) #--------------------------------------------------------------- Menu de Proyectos -------------------------------------------------------------------- def proyectoCancelado(request): var1 = Usuario.objects.filter(id=request.user.id) ai = Usuario.objects.get(id = request.user.id ) a = ai.area estats=estatus.objects.get(pk=5) proyectoCancelado = proyecto_datos.objects.filter(dependencias=a).filter(estatus=estats) return render_to_response('proyectoCanceladoView.html',{'proyectoCancelado':proyectoCancelado,'index':'active'},context_instance = RequestContext(request)) def proyectoAlta(request): idUser = User.objects.get(id = request.user.id) today = datetime.now() dateFormat = today.strftime("%Y-%m-%d") persona = cat_personas.objects.all() subject = request.POST.get('subject', 'Proyecto Nuevo') message = request.POST.get('message', 'Te han asignado un nuevo proyecto para seguimiento. Para verificarlo ingresa al sistema en el siguiente enlace: http://10.39.1.61/') from_email = request.POST.get('from_email', 'seguimiento.st.dif@gmail.com') if request.method=='POST': form = proyectoForm(request.POST) if form.is_valid(): form.save() # dar = proyecto_datos.objects.latest('id').responsableAdmin.idUser.email # if subject and message and from_email: # try: # send_mail(subject, message, from_email, [dar]) # except BadHeaderError: # return HttpResponse('Invalid header found.') messages.success(request, 'Proyecto Ingresado') return HttpResponseRedirect('/index') else: form = proyectoForm(initial={'usuario':idUser,'fechaFinalizacion':dateFormat,'fecha_solicitud':dateFormat,'fechaInicio':dateFormat,'fechaFinal':dateFormat}) return render_to_response('proyectos.html',{'form':form,'fechaFinalizacion':dateFormat,'principal':'active'},context_instance=RequestContext(request)) # def proyectoAlta(request): # idUser = User.objects.get(id = request.user.id) # ids = User.objects.get(email= request.user.email) # esd = ids.email # today = datetime.now() # dateFormat = today.strftime("%m/%d/%Y") # persona = cat_personas.objects.all() # subject = request.POST.get('subject', 'Proyecto Nuevo') # message = request.POST.get('message', 'Te han asignado un nuevo proyecto para seguimiento. Has clic en la siguiente liga para accesar al sistema http://10.39.1.61/') # from_email = request.POST.get('from_email', 'seguimiento.st.dif@gmail.com') # if request.method=='POST': # form = proyectoForm(request.POST) # if form.is_valid(): # form.save() # dar = proyecto_datos.objects.latest('id').responsableAdmin.idUser.email # if subject and message and from_email: # try: # send_mail(subject, message, from_email, [dar]) # except BadHeaderError: # return HttpResponse('Invalid header found.') # messages.success(request, 'Proyecto Ingresado') # return HttpResponseRedirect('/index') # else: # form = proyectoForm(initial={'usuario':idUser,'fechaInicio':dateFormat,'fechaFinal':dateFormat,'fechaFinalizacion':dateFormat,'fecha_solicitud':dateFormat}) # return render_to_response('proyectos.html',{'form':form,'usuario':idUser,'fechaFinalizacion':dateFormat,'fechaInicio':dateFormat,'fechaFinal':dateFormat,'fecha_solicitud':dateFormat, 'persona':persona, 'proyectos':'active' },context_instance=RequestContext(request)) def proyectoview(request): var1 = Usuario.objects.filter(id=request.user.id) ai = Usuario.objects.get(id = request.user.id ) a = ai.area estats=estatus.objects.get(pk=5) proyecto1 = proyecto_datos.objects.filter(dependencias=a).exclude(estatus=estats) return TemplateResponse(request, 'proyectosview.html',{'proyecto1':proyecto1,'listas':'active'}) def proyectoUpdate(request, id): inventarios = proyecto_datos.objects.get(pk = id) a = inventarios.nombreProyecto b = inventarios.responsable c = inventarios.responsableAdmin d = inventarios.telefono e = inventarios.correo_electronico f = inventarios.descripcion g = inventarios.fechaInicio h = inventarios.fechaFinal i = inventarios.dependencias j = inventarios.dependencias.noDireccion if request.method=='POST': form = proyectoUpdateForm(request.POST, instance=inventarios) if form.is_valid(): form.save() messages.success(request, 'Proyecto Actualizado') return HttpResponseRedirect('/index') else: form = proyectoUpdateForm(initial={'nombreProyecto':a,'responsable':b,'responsableAdmin':c,'telefono':d,'correo_electronico':e, 'descripcion':f,'fechaInicio':g,'fechaFinal':h,'dependencias':i, 'direccion':j}) return render_to_response('proyectoUpdate.html',{'nombreProyecto':a,'direccion':j,'responsable':b,'responsableAdmin':c,'telefono':d,'correo_electronico':e, 'descripcion':f,'fechaInicio':g,'fechaFinal':h,'form':form, 'proyectos':'active'},context_instance=RequestContext(request)) def proyectoClose(request, id): inventarios = proyecto_datos.objects.get(pk = id) estats=estatus.objects.get(pk=5) if request.method=='POST': form = proyectoCloseForm(request.POST, instance=inventarios) if form.is_valid(): form.save() messages.success(request, 'Se cambio el estado del proyecto') return HttpResponseRedirect('/index') else: form = proyectoCloseForm(initial={'estatus':estats,}) return render_to_response('proyectoClose.html',{'form':form,'estatus':estats, 'proyectos':'active'},context_instance=RequestContext(request)) def archivarProyecto(request, id): inventarios = proyecto_datos.objects.get(pk = id) a = inventarios.activo b = False c = inventarios.fechaInicio.strftime("%Y-%m-%d") d = inventarios.fechaFinal.strftime("%Y-%m-%d") e = inventarios.fechaFinalizacion.strftime("%Y-%m-%d") f = datetime.now().strftime("%Y-%m-%d") h = inventarios.estatus if datetime.now().strftime("%Y-%m-%d") > inventarios.fechaFinal.strftime("%Y-%m-%d"): g = estatus.objects.get(pk=3) elif datetime.now().strftime("%Y-%m-%d") == inventarios.fechaFinal.strftime("%Y-%m-%d"): g = estatus.objects.get(pk=4) else: g = h if request.method=='POST': form = proyectoArchivarForm(request.POST, instance=inventarios) if form.is_valid(): form.save() messages.success(request, 'Se Archivo el proyecto') return HttpResponseRedirect('/index') else: form = proyectoArchivarForm(initial={'activo':b,'fechaFinalizacion':f,'estatus':g}) return render_to_response('proyectoArchvivar.html',{'form':form,'proyectos':'active','activo':b,'fechaFinalizacion':f,'estatus':g},context_instance=RequestContext(request)) # def proyectoClose(request, id): # inventarios = proyecto_datos.objects.get(pk = id) # aa = inventarios.estatus.id # bb = inventarios.usuario # cc = inventarios.dependencias # dd = inventarios.responsable # ee = inventarios.responsableAdmin # ff = inventarios.fechaInicio # gg = inventarios.fechaFinal # hh = inventarios.fechaFinalizacion # print bb # estats=estatus.objects.get(pk=5) # print estats # expediente=proyectoCloseForm(estatus=estats,usuario=bb, dependencias=cc,responsable=dd,responsableAdmin=ee,fechaInicio=ff,fechaFinal=gg,fechaFinalizacion=hh) # print expediente # expediente.save() # return HttpResponseRedirect( '/proyecto/view/activos/') #--------------------------------------------------------- MENU DE TAREAS ------------------------------------------------------------- def tareaAlta(request,id): inventarios = proyecto_datos.objects.get(pk = id) proyecto1 = inventarios.id responsable1 = inventarios.responsable idUser = User.objects.get(id = request.user.id) estats=estatus.objects.get(pk=2) #dar = proyecto_tarea.objects.latest('id').porcentaje total=proyecto_tarea.objects.filter(proyecto = id).aggregate(total=Sum('porcentaje')) a = str(total['total']) if a == 'None': a = 0 b = a c = 100 - int(b) siguiente_lote = proyecto_tarea.objects.values().filter(proyecto = id).order_by('-no_tarea') consecutivo = 0 if siguiente_lote.count() != 0: ultimo= int(siguiente_lote[0]['no_tarea']); cadena = str(ultimo) #return HttpResponse(ultimo) if ultimo >= 10: consecutivo = ultimo + 1 #return HttpResponse(ultimo) if ultimo < 9: cadena=str(ultimo+1) consecutivo = '0' +cadena if ultimo == 9: consecutivo=ultimo+1 else: consecutivo = '01' if request.method=='POST': form = tareasForm(request.POST) form1 = proyectoCloseForm(request.POST, instance=inventarios) if form.is_valid() and form1.is_valid(): form.save() form1.save() messages.success(request, 'Tarea Ingresada') return HttpResponseRedirect('/proyecto/detalle/%s'%(id)) else: form = tareasForm(initial={'usuario':idUser,'proyecto':proyecto1,'Resposable':responsable1,'no_tarea':consecutivo}) form1 = proyectoCloseForm(initial={'estatus':estats,}) return render_to_response('tareas.html',{'total':c,'form':form,'form1':form1,'estatus':estats,'proyecto':proyecto1,'Resposable':responsable1,'usuario':idUser,'tareas':'active','siguiente_lote':consecutivo },context_instance=RequestContext(request)) def verDetalle(request, id): inventarios = proyecto_datos.objects.get(pk = id) prueba = inventarios.fecha_solicitud prueba2 = inventarios.dependencias prueba3 = inventarios.nombreProyecto prueba4 = inventarios.responsable prueba5 = inventarios.responsableAdmin prueba6 = inventarios.telefono prueba7 = inventarios.correo_electronico prueba8 = inventarios.fechaInicio prueba9 = inventarios.fechaFinal prueba10 = inventarios.estatus tarea1 = proyecto_tarea.objects.filter(proyecto=id) tarea1234 = proyecto_tarea.objects.filter(proyecto=id).aggregate(porcentaje=Sum('porcentaje')) a = str(tarea1234['porcentaje']) if a == 'None': a = 0 b = a c = 100 - int(b) return render_to_response('ver_detalle.html',{'tarea1234':c,'prueba':prueba,'tarea1':tarea1,'prueba2':prueba2,'prueba3':prueba3,'prueba4':prueba4,'prueba5':prueba5, 'prueba6':prueba6,'prueba7':prueba7,'prueba8':prueba8,'prueba9':prueba9,'prueba10':prueba10,'inventarios':inventarios, 'proyectos':'active'},context_instance=RequestContext(request)) def verDetalle2(request, id): inventarios = proyecto_datos.objects.get(pk = id) prueba = inventarios.fecha_solicitud prueba2 = inventarios.dependencias prueba3 = inventarios.nombreProyecto prueba4 = inventarios.responsable prueba5 = inventarios.responsableAdmin prueba6 = inventarios.telefono prueba7 = inventarios.correo_electronico prueba8 = inventarios.fechaInicio prueba9 = inventarios.fechaFinal prueba10 = inventarios.estatus tarea1 = proyecto_tarea.objects.filter(proyecto=id) tarea1234 = proyecto_tarea.objects.filter(proyecto=id).aggregate(porcentaje=Sum('porcentaje')) #actividad = tarea1.activo return render_to_response('ver_detalle2.html',{'tarea1234':tarea1234,'prueba':prueba,'tarea1':tarea1,'prueba2':prueba2,'prueba3':prueba3,'prueba4':prueba4,'prueba5':prueba5, 'prueba6':prueba6,'prueba7':prueba7,'prueba8':prueba8,'prueba9':prueba9,'prueba10':prueba10,'inventarios':inventarios, 'proyectos':'active'},context_instance=RequestContext(request)) def verDetalle3(request, id): inventarios = proyecto_datos.objects.get(pk = id) prueba = inventarios.fecha_solicitud prueba2 = inventarios.dependencias prueba3 = inventarios.nombreProyecto prueba4 = inventarios.responsable prueba5 = inventarios.responsableAdmin prueba6 = inventarios.telefono prueba7 = inventarios.correo_electronico prueba8 = inventarios.fechaInicio prueba9 = inventarios.fechaFinal prueba10 = inventarios.estatus tarea1 = proyecto_tarea.objects.filter(proyecto=id) tarea1234 = proyecto_tarea.objects.filter(proyecto=id).aggregate(porcentaje=Sum('porcentaje')) #actividad = tarea1.activo return render_to_response('ver_detalle_administrador.html',{'tarea1234':tarea1234,'prueba':prueba,'tarea1':tarea1,'prueba2':prueba2,'prueba3':prueba3,'prueba4':prueba4,'prueba5':prueba5, 'prueba6':prueba6,'prueba7':prueba7,'prueba8':prueba8,'prueba9':prueba9,'prueba10':prueba10,'inventarios':inventarios, 'proyectos':'active'},context_instance=RequestContext(request)) def tareaUpdate(request, id): inventarios = proyecto_tarea.objects.get(pk = id) jose= inventarios.proyecto.id a = inventarios.Resposable b = inventarios.descripcion c = inventarios.porcentaje d = inventarios.no_tarea e = inventarios.activo print e if request.method=='POST': form = tareaUpdateForm(request.POST, instance=inventarios) if form.is_valid(): form.save() messages.success(request, 'Tarea Actualizado') return HttpResponseRedirect('/proyecto/detalle/%s'%(jose)) else: form = tareaUpdateForm(initial={'Resposable':a,'descripcion':b,'porcentaje':c,'no_tarea':d,'activo':e}) return render_to_response('tareaUpdate.html',{'form':form,'Resposable':a,'descripcion':b,'porcentaje':c,'no_tarea':d,'activo':e,'proyectos':'active'},context_instance=RequestContext(request)) def eliminarTarea(request, id = 0): proyecto_tarea.objects.get(pk = id).delete() messages.success(request,'Se Elimino Correctamente la Tarea') return HttpResponseRedirect('/index') #-------------------------- MENU OBSERVACIONES ------------------------------------------------------- def observacionAlta(request,id): inventarios = proyecto_tarea.objects.get(pk = id) jose= inventarios.proyecto.id tarea1 = inventarios.id idUser = User.objects.get(id = request.user.id) siguiente_lote = proyecto_observacion.objects.values().filter(tarea = id).order_by('-no_observacion') consecutivo = 0 if siguiente_lote.count() != 0: ultimo= int(siguiente_lote[0]['no_observacion']); cadena = str(ultimo) #return HttpResponse(ultimo) if ultimo >= 10: consecutivo = ultimo + 1 #return HttpResponse(ultimo) if ultimo < 9: cadena=str(ultimo+1) consecutivo = '0' +cadena if ultimo == 9: consecutivo=ultimo+1 else: consecutivo = '01' if request.method=='POST': form = observacionForm(request.POST,request.FILES) if form.is_valid(): #documento = proyecto_observacion(no_observacion=request.POST['no_observacion'],observaciones=request.POST['observaciones'], evidencia=request.FILES['cargas'],tarea=request.POST['proyecto'],) form.save() messages.success(request, 'Observacion Ingresada') return HttpResponseRedirect('/proyecto/detalle/%s'%(jose)) else: form = observacionForm(initial={'usuario':idUser,'tarea':tarea1,'no_observacion':consecutivo}) return render_to_response('observacion.html',{'form':form,'tarea':tarea1,'usuario':idUser,'no_observacion':consecutivo,'tareas':'active',},context_instance=RequestContext(request)) def observacionView(request,id): inventarios = proyecto_tarea.objects.get(pk = id) observa = inventarios.id observacion1 = proyecto_observacion.objects.filter(tarea=id) activos = inventarios.activo return render_to_response('observacionesView.html',{'activos':activos,'observa':observa,'inventarios':inventarios,'observacion1':observacion1,'proyecto':'active'},context_instance = RequestContext(request)) def eliminarObservacion(request, id = 0): proyecto_observacion.objects.get(pk = id).delete() messages.success(request,'Se Elimino Correctamente la Observación') return HttpResponseRedirect( '/index') #----------------------- MENU SUPER USUARIO ------------------------------------------------------------------ def viewSuperUsuario(request): proyectos = proyecto_datos.objects.all().order_by("dependencias") tarea = proyecto_tarea.objects.all().order_by("proyecto__dependencias") observaciones = proyecto_observacion.objects.all() return render_to_response('viewSuperUsuario.html',{'proyectos':proyectos,'tarea':tarea,'observaciones':observaciones},context_instance = RequestContext(request)) #--------------------------- json ------------------------------------------------------------------------- from django.views.decorators.csrf import csrf_exempt @csrf_exempt def consultarSubdireccion(request): if request.is_ajax(): if request.method=='GET': respuest="este se envio via get" elif request.method=='POST': id_noDireccion=request.POST['id_direccion'] partidas=serializers.serialize("json",cat_area.objects.all().filter(noDireccion=id_noDireccion),fields=('nombre')) print partidas return HttpResponse(partidas,mimetype="application/javascript") @csrf_exempt def consultarUsuario(request): if request.is_ajax(): if request.method=='GET': respuest="este se envio via get" elif request.method=='POST': id_area=request.POST['id_dependencias'] partidas=serializers.serialize("json",cat_personas.objects.all().filter(area_id=id_area),fields=('nombre','apellidoPaterno','apellidoMaterno')) return HttpResponse(partidas,mimetype="application/javascript") @csrf_exempt def consultarAreas(request): if request.is_ajax(): if request.method=='GET': respuest="este se envio via get" elif request.method=='POST': id_noDireccion=request.POST['id_adscripcion'] partidas=serializers.serialize("json",cat_area.objects.all().filter(noDireccion=id_noDireccion),fields=('nombre')) return HttpResponse(partidas,mimetype="application/javascript")