#encoding:utf-8 from django.http import HttpResponse, HttpResponseRedirect from django.db import transaction from django.utils import simplejson from django.template.response import TemplateResponse from django.shortcuts import render_to_response from django.template import RequestContext from django.contrib.auth import authenticate, login, logout from django.contrib.auth.decorators import login_required from django.contrib import messages from django.forms.models import inlineformset_factory from dependencias.models import Perfil from anuencias_tecnicas.models import anuencia_datos, anuencia_detalle, estatus, revision, autorizacion,addProyectos,addPartidas from anuencias_tecnicas.forms import anuenciasForm, anuencias_detalleForm, calificar_anuenciaForm, anuencias_detalle_autorizacionForm,agregarproyectoForm,agregarpartidasForm,addDetalleproyectoForm,addDetallepartidaForm from django.db.models import Q from datetime import datetime import json from django.core import serializers from django import forms from django.utils.html import format_html, format_html_join from django.utils.datastructures import SortedDict # Create your views here. def login_ (request): return TemplateResponse(request,'index.html') def validarView(request): username = request.POST['username'] password = request.POST['password'] user = authenticate(username=username, password=password) mensaje = '' if user is not None: if user.is_active: login(request, user ) # return HttpResponse ( dependencia.objects.filter(usuarios__in=[user.id]).count() ) menuactivo1 = 'active' return HttpResponseRedirect( '/tablero/0', {'menuactivo1':menuactivo1} ) else: mensaje = mensaje + 'cuenta desactivada' else: mensaje = mensaje + 'Usuario no valido, verifique sus credenciales' msj = mensaje #return HttpResponseRedirect( '/login_',msj ) return TemplateResponse(request, 'index.html', {'msj': mensaje}) @login_required def anuenciasView(request): p = Perfil.objects.get(usuario_id = request.user.id) # if p.tipo.clave =='S' return TemplateResponse(request, 'anuencias.html', {'p': p}) def logout_user(request): response = logout(request) return HttpResponseRedirect('/') @login_required def principalView(request): try: p = Perfil.objects.get(usuario_id = request.user.id) except Exception, e: msj = e.message messages.error(request, msj) return TemplateResponse(request,'index.html') menuactivo1 = 'active' # usuarios compañeros del logueado inner_qs = Perfil.objects.values_list('usuario_id').filter( direccion_id = p.direccion_id ) anuencias = anuencia_datos.objects.filter (usuario_id__in= (inner_qs), activo = True).order_by('-fecha_registro') # perfil Revisa if p.tipo.clave == 'R': anuencias = anuencia_datos.objects.all() # Perfil Autoriza if p.tipo.clave == 'A': anuencias = anuencia_datos.objects.all() anuenciasS = anuencias.filter(estatus__clave__in = ('S') ) anuenciasN = anuencias.filter(estatus__clave__in = ('N') ) anuenciasR = anuencias.filter(estatus__clave__in = ('R') ) anuenciasU = anuencias.filter(estatus__clave__in = ('U') ) anuenciasV = anuencias.filter(estatus__clave__in = ('V') ) anuenciasA = anuencias.filter(estatus__clave__in = ('A') ) anuenciasC = anuencias.filter(estatus__clave__in = ('C') ) anuenciasE = anuencias.filter(estatus__clave__in = ('E') ) anuenciasS.percent = 0 anuenciasN.percent = 0 anuenciasR.percent = 0 anuenciasU.percent = 0 anuenciasV.percent = 0 anuenciasA.percent = 0 anuenciasC.percent = 0 anuenciasE.percent = 0 if anuencias.count() != 0: anuenciasS.percent = str(anuenciasS.count() * 100.00 / anuencias.count() ) anuenciasN.percent = str(anuenciasN.count() * 100.00 / anuencias.count() ) anuenciasR.percent = str(anuenciasR.count() * 100.00 / anuencias.count() ) anuenciasU.percent = str(anuenciasU.count() * 100.00 / anuencias.count() ) anuenciasV.percent = str(anuenciasV.count() * 100.00 / anuencias.count() ) anuenciasA.percent = str(anuenciasA.count() * 100.00 / anuencias.count() ) anuenciasC.percent = str(anuenciasC.count() * 100.00 / anuencias.count() ) anuenciasE.percent = str(anuenciasE.count() * 100.00 / anuencias.count() ) e = estatus.objects.all() return TemplateResponse(request, 'principal.html', { 'p': p, 'menuactivo1':menuactivo1, 'estatus':e, 'anuencias':anuencias, 'anuenciasS':anuenciasS, 'anuenciasN':anuenciasN, 'anuenciasR':anuenciasR, 'anuenciasU':anuenciasU, 'anuenciasV':anuenciasV, 'anuenciasA':anuenciasA, 'anuenciasC':anuenciasC, 'anuenciasE':anuenciasE }) def obtiene_estatus_id(cadena_busqueda): try: e_ = estatus.objects.get(clave = cadena_busqueda) except estatus.DoesNotExist: e_ = None return e_ ### inicia agregar anuencia ############ @login_required def anuenciasAddView(request, anuencia_id = 0): try: p = Perfil.objects.get(usuario_id = request.user.id) except Exception, e: msj = e.message messages.error(request, msj) return TemplateResponse(request,'index.html') menuactivo2 = 'active' uno=0 if request.method == 'POST': estatus_segun_captura = obtiene_estatus_id('S') if p.tipo.clave == 'R' : estatus_segun_captura = obtiene_estatus_id('CR') if p.tipo.clave == 'A': estatus_segun_captura = obtiene_estatus_id('CA') #if p.tipo.clave=='A': if anuencia_id == '0': i = anuencia_datos (activo= True, usuario = request.user, fecha_registro = datetime.now(), estatus = estatus_segun_captura ) else: i = anuencia_datos.objects.get(pk=anuencia_id) i.activo= True i.usuario = request.user i.fecha_registro = datetime.now() i.estatus = estatus_segun_captura formulario = anuenciasForm( request.POST, request.FILES, instance = i ) if anuencia_id != '0': if formulario.is_valid(): try: a = formulario.save() msj='El registro %s se ha Actualizado .' % ( a.id ) messages.success(request, msj) return HttpResponseRedirect('/tablero/0') except Exception, e: msj = e.message messages.error(request, msj) if 'guardar' in request.POST: messages.error(request, 'guardar') return HttpResponseRedirect('/tablero/0') elif 'guardar_y_agregar_otro' in request.POST: messages.error(request, 'guardar y agregar otro') return HttpResponseRedirect('/agregar/0') else: msj='Por favor, corrija el siguiente error.' messages.error(request, msj) else: if formulario.is_valid(): try: a = formulario.save() msj='El registro %s se ha guardado, por favor ingrese el Detalle.' % ( a.id ) messages.success(request, msj) return HttpResponseRedirect('/detalle/add/%s?' % (a.id)) except Exception, e: msj = e.message messages.error(request, msj) if 'guardar' in request.POST: messages.error(request, 'guardar') return HttpResponseRedirect('/tablero/0') elif 'guardar_y_agregar_otro' in request.POST: messages.error(request, 'guardar y agregar otro') return HttpResponseRedirect('/agregar/0') else: msj='Por favor, corrija el siguiente error.' messages.error(request, msj) else: formulario = anuenciasForm() if anuencia_id != '0': formulario = anuenciasForm(instance = anuencia_datos.objects.get(id = anuencia_id) ) uno=1 return TemplateResponse(request, 'agregar.html', { 'p': p, 'menuactivo2':menuactivo2, 'formulario':formulario, 'var':uno, 'anuencia_id':anuencia_id }) ###inicia agregar detalle a la anuencia ##### @login_required def anuenciasDetalleView(request, anuencia_id): try: p = Perfil.objects.get(usuario_id = request.user.id) except Exception, e: msj = e.message messages.error(request, msj) return TemplateResponse(request,'index.html') anuencia = anuencia_datos.objects.get(pk=anuencia_id) detalle = anuencia_detalle.objects.filter(anuencia_id = anuencia_id) e = estatus.objects.all() menuactivo2 = 'active' return TemplateResponse(request, 'detalle.html', { 'p' : p, 'menuactivo2' : menuactivo2, 'anuencia_id' : anuencia_id, 'anuencia' : anuencia, 'detalle': detalle, 'estatus' : e }) def manage_books(request, author_id): author = Author.objects.get(pk=author_id) BookInlineFormSet = inlineformset_factory(Author, Book) if request.method == "POST": formset = BookInlineFormSet(request.POST, request.FILES, instance=author) if formset.is_valid(): formset.save() # Do something. Should generally end with a redirect. For example: return HttpResponseRedirect(author.get_absolute_url()) else: formset = BookInlineFormSet(instance=author) return render_to_response("manage_books.html", { "formset": formset, }) from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger @login_required def tableroView(request, estatus_id = 0): try: p = Perfil.objects.get(usuario_id = request.user.id) except Exception, e: msj = e.message if msj.find('Perfil matching query does not exist. Lookup parameters were') != -1: msj = 'No existe el perfil para este usuario' messages.error(request, msj) return TemplateResponse(request,'index.html') # usuarios compañeros del logueado inner_qs = Perfil.objects.values_list('usuario_id').filter( direccion_id = p.direccion_id ) #anuencias = anuencia_datos.objects.filter (usuario_id__in= (inner_qs), activo = True).order_by('-fecha_registro') anuencias = anuencia_datos.objects.filter (usuario_id = p.usuario_id, activo = True).order_by('-fecha_registro') #anuencias_estadisticas = anuencia_datos.objects.filter (usuario_id__in = (inner_qs), activo = True).order_by('-fecha_registro') #anuencias_estadisticas = anuencia_datos.objects.filter (usuario_id = p.usuario_id) ################################################################################################################## #anuencias_estadisticas = anuencia_datos.objects.all() # perfil Revisa anuencias_estadisticas = anuencia_datos.objects.filter (usuario_id = -1) if p.tipo.clave == 'R': anuencias_estadisticas = anuencia_datos.objects.filter (usuario_id = p.usuario_id) # anuencias_estadisticas = anuencia_datos.objects.all() # Perfil Autoriza if p.tipo.clave == 'A': anuencias_estadisticas = anuencia_datos.objects.all() if p.tipo.clave == 'S': anuencias_estadisticas = anuencia_datos.objects.filter (usuario_id = p.usuario_id) anuenciasS = anuencias_estadisticas.filter(estatus__clave = 'S' ) anuenciasN = anuencias_estadisticas.filter(estatus__clave__in = ('N') ) anuenciasR = anuencias_estadisticas.filter(estatus__clave__in = ('R') ) anuenciasU = anuencias_estadisticas.filter(estatus__clave__in = ('U') ) anuenciasV = anuencias_estadisticas.filter(estatus__clave__in = ('V') ) anuenciasA = anuencias_estadisticas.filter(estatus__clave__in = ('A') ) anuenciasC = anuencias_estadisticas.filter(estatus__clave__in = ('C') ) anuenciasE = anuencias_estadisticas.filter(estatus__clave__in = ('E') ) anuenciasP = anuencias_estadisticas.filter(estatus__clave = 'CR' ) anuenciasCA = anuencias_estadisticas.filter(estatus__clave = 'CA') anuenciasS.percent = 0 anuenciasN.percent = 0 anuenciasR.percent = 0 anuenciasU.percent = 0 anuenciasV.percent = 0 anuenciasA.percent = 0 anuenciasC.percent = 0 anuenciasE.percent = 0 anuenciasP.percent = 0 anuenciasCA.percent = 0 if anuencias_estadisticas.count() != 0: anuenciasS.percent = str(anuenciasS.count() * 100.00 / anuencias_estadisticas.count() ) anuenciasN.percent = str(anuenciasN.count() * 100.00 / anuencias_estadisticas.count() ) anuenciasR.percent = str(anuenciasR.count() * 100.00 / anuencias_estadisticas.count() ) anuenciasU.percent = str(anuenciasU.count() * 100.00 / anuencias_estadisticas.count() ) anuenciasV.percent = str(anuenciasV.count() * 100.00 / anuencias_estadisticas.count() ) anuenciasA.percent = str(anuenciasA.count() * 100.00 / anuencias_estadisticas.count() ) anuenciasC.percent = str(anuenciasC.count() * 100.00 / anuencias_estadisticas.count() ) anuenciasE.percent = str(anuenciasE.count() * 100.00 / anuencias_estadisticas.count() ) anuenciasP.percent = str(anuenciasP.count() * 100.00 / anuencias_estadisticas.count() ) anuenciasCA.percent = str(anuenciasCA.count() * 100.00 / anuencias_estadisticas.count() ) e = estatus.objects.all() autorizados = anuencia_datos.objects.filter(Q(estatus__clave__in=('A'), usuario = p.usuario_id)) ################################################################################################################### # perfil Revisa if p.tipo.clave == 'R': anuencias = anuencia_datos.objects.filter(Q(estatus__clave__in=('A', 'C','U','N','V','CR','R','S')) | Q(estatus__clave__in = ('E'), usuario = p.usuario_id )) # anuencias = anuencias.exclude(estatus__clave__in = ('A', 'C','U','E') ) # Perfil Autoriza if p.tipo.clave == 'A': #falta filtrar para que agregue detalle el que autoriza #User.objects.filter(Q(income__gte=5000) | Q(income=0)) # return HttpResponse(p.usuario_id) anuencias = anuencia_datos.objects.filter( Q(estatus__clave__in = ('U','A','CA','S')) | Q(estatus__clave__in = ('E'), usuario = p.usuario_id ) ) #anuencias = anuencias.exclude(estatus__clave__in = ('A', 'C','N','V','E') ) if estatus_id == '0': anuencias = anuencias.exclude(estatus__clave__in = ('A', 'C') ) else: inner_qs = estatus.objects.values_list('id').filter( Q(clave__in = ('C')) | Q(id = estatus_id) ) anuencias = anuencias.filter(estatus__id__in = ( inner_qs) ) anuenciasa=None if(estatus_id == '0'): if p.tipo.clave == 'R': anuenciasa = anuencia_datos.objects.filter(Q(estatus_id = 4)) elif p.tipo.clave == 'A': anuenciasa = anuencia_datos.objects.filter(Q(estatus_id = 4)) elif p.tipo.clave == 'S': anuenciasa = anuencia_datos.objects.filter(Q(estatus_id = 4), usuario = p.usuario_id) cantidad_revisa= anuenciasP.count() bscr = '' if 'bscr' in request.GET: bscr = request.GET.get('bscr') anuencias = anuencias.filter( Q(id__icontains = bscr) | Q(no_oficio__icontains = bscr) | Q(contacto_tecnico__icontains = bscr) | Q(telefono_fax__icontains = bscr) | Q(extension__icontains = bscr) | Q(correo_electronico__icontains = bscr) | Q(no_requisicion__icontains = bscr) | Q(justificacion__icontains = bscr) | Q(estatus__nombre__icontains = bscr) ) if p.tipo.clave == 'R': anuencias = anuencias.filter(Q(usuario_id = p.usuario_id) | Q(estatus_id = 7) ) if p.tipo.clave == 'S': anuencias = anuencias.filter(usuario_id = p.usuario_id) rpp = 10 # Show 10 contacts per page if 'rpp' in request.GET: rpp = request.GET.get('rpp') paginator = Paginator(anuencias, rpp) page = request.GET.get('page') try: datos = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. datos = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. datos = paginator.page(paginator.num_pages) e = estatus.objects.all() menuactivo2 = 'active' return TemplateResponse(request, 'tablero.html', { 'p':p, 'menuactivo2':menuactivo2, 'datos':datos, 'estatus':e, 'rpp':rpp, 'bscr':bscr, 'id_status':estatus_id, ######modificado 'anuencias':anuencias, 'anuenciasS':anuenciasS, 'anuenciasN':anuenciasN, 'anuenciasR':anuenciasR, 'anuenciasU':anuenciasU, 'anuenciasV':anuenciasV, 'anuenciasA':anuenciasA, 'anuenciasC':anuenciasC, 'anuenciasE':anuenciasE, 'anuenciasP':anuenciasP, 'anuenciasCA':anuenciasCA, 'autorizados':anuenciasa, 'revisa':cantidad_revisa ################ } ) @login_required def anuenciasAgregarDetalleViews(request, anuencia_id, detalle_id = 0, id_p = 0): try: p = Perfil.objects.get(usuario_id = request.user.id) except Exception, e: msj = e.message messages.error(request, msj) return TemplateResponse(request,'index.html') anuencia = anuencia_datos.objects.get(pk = anuencia_id) detalle = anuencia_detalle.objects.filter(anuencia_id = anuencia_id) if request.method == 'POST': i = anuencia_detalle( anuencia_id = anuencia_id, fecha_registro = datetime.now(), fecha_ultimo_cambio = datetime.now(), activo= True, usuario = request.user ) if detalle_id != 0: i = anuencia_detalle( anuencia_id = anuencia_id , id = detalle_id, fecha_registro = anuencia.fecha_registro, fecha_ultimo_cambio = datetime.now(), usuario = request.user) formulario = anuencias_detalleForm( request.POST, request.FILES, instance = i ) if formulario.is_valid(): try: a = formulario.save() msj='El registro %s se ha guardado correctamente.' % ( a.id ) messages.success(request, msj) except Exception, e: msj = e.message messages.error(request, msj) if 'guardar' in request.POST: return HttpResponseRedirect('/detalle/add/%s?id_proyecto=%s&id_partida=%s' % (anuencia_id, request.POST['proyecto'], request.POST['partida']) ) # elif 'guardar_y_agregar_otro' in request.POST: # return HttpResponseRedirect('/detalle/add/%s' % (anuencia_id)) else: msj='Por favor, corrija el siguiente error.' messages.error(request, msj) else: pro = None par = None if 'id_proyecto' in request.GET: pro = request.GET['id_proyecto'] if 'id_partida' in request.GET: par = request.GET['id_partida'] i = anuencia_detalle(proyecto_id = pro, partida_id = par) if detalle_id != 0: i = anuencia_detalle.objects.get(pk = detalle_id) formulario = anuencias_detalleForm( instance = i ) articulos_ac = anuencia_detalle.objects.all().filter(anuencia_id = anuencia_id).order_by('articulo') menuactivo2 = 'active' return TemplateResponse(request, 'agregar_detalle.html', { 'p': p, 'menuactivo2':menuactivo2, 'anuencia':anuencia, 'detalle':detalle, 'formulario':formulario, 'articulos_ac':articulos_ac, 'user':request.user }) ####################################################################################################################### @login_required def anuenciasAgregarDetalleView(request, anuencia_id, detalle_id = 0, id_p = 0): try: p = Perfil.objects.get(usuario_id = request.user.id) except Exception, e: msj = e.message messages.error(request, msj) return TemplateResponse(request,'index.html') anuencia = anuencia_datos.objects.get(pk = anuencia_id) detalle = anuencia_detalle.objects.filter(anuencia_id = anuencia_id).order_by('-no_lote') variable = 0 if request.method == 'POST': i = anuencia_detalle( anuencia_id = anuencia_id, fecha_registro = datetime.now(), fecha_ultimo_cambio = datetime.now(), activo= True, usuario = request.user ) if detalle_id != 0: i = anuencia_detalle( anuencia_id = anuencia_id , id = detalle_id, fecha_registro = anuencia.fecha_registro, fecha_ultimo_cambio = datetime.now(), usuario = request.user) formulario = anuencias_detalleForm( request.POST, request.FILES, instance = i ) # return HttpResponse(str(formulario)) existe_articulo = False articulo=request.POST['articulo'].upper() proyecto=request.POST['proyecto'].upper() partida=request.POST['partida'].upper() lote=request.POST['no_lote'] contador = anuencia_detalle.objects.filter( articulo = articulo, proyecto = proyecto, partida = partida, anuencia_id = anuencia_id) consulta = anuencia_detalle.objects.filter( articulo = articulo, proyecto = proyecto, partida = partida, anuencia_id = anuencia_id, no_lote = lote) #msj='• El detalle con se ha actualizado correctamente.' #messages.success(request, msj) if contador.count() == 0: #return HttpResponse (contador.count()) #return HttpResponse(existe_articulo) if formulario.is_valid(): try: a = formulario.save() if detalle_id != 0: b=detalle_id else: b=a.id msj='El detalle con id %s se ha guardado correctamente.' %(b) messages.success(request, msj) return HttpResponseRedirect('/detalle/add/%s' % (anuencia_id) ) except Exception, e: msj = e.message #if msj.find('llave duplicada viola restricción de unicidad') != -1: # msj = 'Error' messages.error(request, msj) # return HttpResponseRedirect('/detalle/add/%s' % (anuencia_id) ) if 'guardar' in request.POST: #return HttpResponseRedirect('/tablero/0') return HttpResponseRedirect('/detalle/add/%s' % (anuencia_id) ) #return HttpResponseRedirect('/detalle/add/%s' % (anuencia_id) ) # elif 'guardar_y_agregar_otro' in request.POST: # return HttpResponseRedirect('/detalle/add/%s' % (anuencia_id)) else: msj='Por favor, corrija el siguiente error.' messages.error(request, msj) elif consulta.count > 0: try: dat = formulario.save() msj = 'Actualizacion terminada' messages.success(request, msj) return HttpResponseRedirect('/detalle/add/%s' % (anuencia_id) ) except Exception, e: msj = e.message if msj.find('llave duplicada viola') != -1: msj = 'Ya existe el articulo con la partida y proyecto ingresado' messages.error(request, msj) return HttpResponseRedirect('/detalle/add/%s' % (anuencia_id) ) #else: # msj='Ya Existe el Articulo %s,con el proyecto %s, y la partida %s' % (contador[0].articulo, contador[0].proyecto.nombre, contador[0].partida.nombre) # messages.error(request, msj) else: pro = None par = None if 'id_proyecto' in request.GET: pro = request.GET['id_proyecto'] if 'id_partida' in request.GET: par=request.GET['id_partida'] i = anuencia_detalle(proyecto_id = pro, partida_id = par) if detalle_id != 0: i = anuencia_detalle.objects.get(pk = detalle_id) variable = 1 formulario = anuencias_detalleForm( instance = i ) articulos_ac = anuencia_detalle.objects.all().filter(anuencia_id = anuencia_id).order_by('articulo') menuactivo2 = 'active' siguiente_lote = anuencia_detalle.objects.values().filter(anuencia_id = anuencia_id).order_by('-no_lote') consecutivo = 0 if siguiente_lote.count() != 0: ultimo= int(siguiente_lote[0]['no_lote']); 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' return TemplateResponse(request, 'agregar_detalle.html', { 'p': p, 'menuactivo2':menuactivo2, 'anuencia':anuencia, 'detalle':detalle, 'formulario':formulario, 'articulos_ac':articulos_ac, 'user':request.user, 'siguiente_lote':consecutivo, 'var':variable, 'anuencia_id':anuencia_id }) ####################################################################################################################### def anuenciasCalificarView(request, anuencia_id): try: p = Perfil.objects.get(usuario_id = request.user.id) except Exception, e: msj = e.message messages.error(request, msj) return TemplateResponse(request,'index.html') anuencia = anuencia_datos.objects.get(pk = anuencia_id) detalle = anuencia_detalle.objects.filter(anuencia_id = anuencia_id) if request.method == 'POST': # formulario = calificar_anuenciaForm(request.POST) formulario2 = anuencias_detalle_autorizacionForm(request.POST) # messages.info(request, str(request.POST) ) # if formulario.is_valid(): # messages.info(request, 'Formulario valido') # else: # messages.info(request, str(formulario) ) # messages.info(request, str(request.POST) ) if formulario2.is_valid(): en_revision = False total_articulos_autorizados = 0 for item in detalle: # messages.info( request, item.id ) if 'observaciones' + str(item.id) in request.POST: item.observaciones = request.POST.get('observaciones' + str(item.id)) if 'autorizado' + str(item.id) in request.POST: item.autorizado = request.POST.get('autorizado' + str(item.id)) en_revision = True total_articulos_autorizados += 1 else: item.autorizado = False item.fecha_ultimo_cambio = datetime.now() item.save() # for item in request.POST.lists(): # if item[0][:13] == 'observaciones': # id_detalle = item[0][13:20] # ad = anuencia_detalle.objects.get(pk = id_detalle) # ad.observaciones = item[1][0] # ad.save() # if item[0][:10] == 'autorizado': # id_detalle = item[0][10:20] # ad = anuencia_detalle.objects.get(pk = id_detalle) # # ad.autorizado = False # en caso de no autorizar quitamos la autorizacion # ad.autorizado = item[1][0] # ad.save() # #identificamos si hay alguna calificacion # en_revision = True # total_articulos_autorizados += 1 #cambiamos el estatus de la anuencia si hay calificaciones if detalle.count() == total_articulos_autorizados: e = obtiene_estatus_id('U') anuencia.estatus = e anuencia.fecha_ultimo_cambio = datetime.now() anuencia.save() messages.info(request, 'La Anuencia se Reviso satisfactoriamente, quedando %s' % e.nombre) return HttpResponseRedirect('/tablero/0') #elif en_revision: # e = obtiene_estatus_id('S') # anuencia.estatus = e # anuencia.fecha_ultimo_cambio = datetime.now() # anuencia.save() # messages.info(request, 'La Anuencia se Reviso; Parcialmente, quedando %s' % e.nombre) # return HttpResponseRedirect('/tablero/0') else: e = obtiene_estatus_id('E') anuencia.estatus = e anuencia.fecha_ultimo_cambio = datetime.now() anuencia.save() msj='La anuencia se Reviso, quedando %s' messages.info(request, msj % e.nombre) return HttpResponseRedirect('/tablero/0') messages.success(request, 'La calificacion se ha guardado') else: msj='Por favor, corrija el siguiente error.' messages.error(request, msj) else: # formulario = calificar_anuenciaForm() formulario2 = anuencias_detalle_autorizacionForm() menuactivo2 = 'active' return TemplateResponse(request, 'calificar.html', { 'p': p, 'menuactivo2':menuactivo2, 'anuencia':anuencia, 'detalle':detalle, # 'formulario':formulario }) @login_required def perfil(request, user_id): return TemplateResponse(request, 'perfil.html', {'user':request.user} ) def cambiar_estatus(anuencia_id, estatus_nuevo): try: a = anuencia_datos.objects.get(pk=anuencia_id) a.estatus = obtiene_estatus_id (estatus_nuevo) a.fecha_ultimo_cambio = datetime.now() a.save() r = '' except Exception, e: r = e return r def envio_a_revision(request, anuencia_id): c = cambiar_estatus(anuencia_id, 'N') if c == '': r = revision(anuencia_id = anuencia_id, usuario = request.user, fecha_registro = datetime.now(), fecha_ultimo_cambio = datetime.now()) r.fecha_ultimo_cambio = datetime.now() r.save() messages.success(request, 'la anuencia se ha enviado para su revision') else: messages.error(request, c) return HttpResponseRedirect('/tablero/0') def envio_a_autorizacion(request, anuencia_id): c = cambiar_estatus(anuencia_id, 'U') if c == '': r = autorizacion(anuencia_id = anuencia_id, usuario = request.user, fecha_registro = datetime.now(), fecha_ultimo_cambio = datetime.now()) r.fecha_ultimo_cambio = datetime.now() r.save() messages.success(request, 'la anuencia se ha enviado para su autorizacion') else: messages.error(request, c) return HttpResponseRedirect('/tablero/0') def autorizar_view(request, anuencia_id): c= cambiar_estatus(anuencia_id, 'A') if c == '': # se modifica messages.success(request, 'la anuencia se ha autorizado') else: messages.error(request, c) return HttpResponseRedirect('/tablero/0') def anuenciasBorrarDetalleView(request, anuencia_id, detalle_id = 0, id_p = 0): anuencia_detalle.objects.get(pk = detalle_id).delete() return HttpResponseRedirect( '/detalle/add/%s' % anuencia_id) def anuenciaRechazarView(request, anuencia_id): c = cambiar_estatus(anuencia_id, 'E') if c == '': messages.success(request, 'la anuencia se ha rechazado') else: messages.error(request, c) return HttpResponseRedirect( '/tablero/0' ) def anuenciaCancelarView(request, anuencia_id): c = cambiar_estatus(anuencia_id, 'C') if c == '': messages.success(request, 'la anuencia se ha cancelado') else: messages.error(request, c) return HttpResponseRedirect( '/tablero/0' ) @login_required def agregarproyecto(request): if request.method=='POST': clave=request.POST['clave'] contar_p= addProyectos.objects.filter(clave = clave).count() if contar_p == 0: formulario = agregarproyectoForm(request.POST,request.FILES) if formulario.is_valid(): formulario.save() messages.success(request, 'Proyecto Guardado') return HttpResponseRedirect('/altaproyecto') else: messages.error(request, 'El Proyecto con la clave %s ya fue Registrado' % (clave)) return HttpResponseRedirect('/altaproyecto') else: formulario=agregarproyectoForm() return render_to_response('proyectosadd.html',{'formulario':formulario}, context_instance=RequestContext(request)) @login_required def agregarpartida(request): if request.method=='POST': clave=request.POST['clave'] proyecto = request.POST.getlist('proyectos') contador=0 for p in proyecto: contador=contador+1 contar_p= addPartidas.objects.filter(Q(clave = clave),Q(proyectos = p)).count() #return HttpResponse(contar_p) if contar_p == 0: formulario=agregarpartidasForm(request.POST,request.FILES) if formulario.is_valid(): formulario.save() messages.success(request, 'Partida Guardada Correctamente') return HttpResponseRedirect('altapartidas') else: messages.error(request, 'La partida con la clave %s ya fue Registrada' % (clave)) return HttpResponseRedirect('/altapartidas') else: formulario=agregarpartidasForm() return render_to_response('altaspartidas.html',{'formulario':formulario}, context_instance=RequestContext(request)) def addDetalle(request): if request.method=='POST': formulario1=addDetalleproyectoForm(request.POST,request.FILES) #formulario2=aaddDetallepartidaForm(request.POST,request.FILES) if formulario1.is_valid() and formulario2.is_valid(): formulario1.save() # formulario2.save() return response_to_response('/altadetalle') else: formulario1=addDetalleproyectoForm() #formulario2=addDetallepartidaForm() return render_to_response('addDetalle.html',{'formulario':formulario1}, context_instance=RequestContext(request)) # return render_to_response('addDetalle.html',{'formulario':formulario1,'formulario2':formulario2}, context_instance=RequestContext(request)) from django.views.decorators.csrf import csrf_exempt @csrf_exempt def muestrapartida(request): if request.is_ajax(): if request.method=='GET': respuest="este se envio via get" elif request.method=='POST': id_proyecto=request.POST['id_proyecto'] partidas=serializers.serialize("json",addPartidas.objects.all().filter(proyectos=id_proyecto),fields=('id','clave','nombre')) #con_partidas = addPartidas.objects.all().filter(proyecto_id=id_proyecto) #a = agregarpartidasForm.objects.get(proyecto_id=id_proyecto) #formulario2=addDetalleproyectoForm.filter(id_proyecto=id_proyecto) #return HttpResponse(simplejson.dumps(partidas),mimetype="application/json") return HttpResponse(partidas,mimetype="application/javascript") def prueba(request): if request.is_ajax(): if request.method=='GET': respuest="este se envio via get" elif request.method=='POST': clave=request.POST['clave'] partidas=serializers.serialize("json",addPartidas.objects.all().filter(clave = clave),fields=('nombre')) #con_partidas = addPartidas.objects.all().filter(proyecto_id=id_proyecto) #a = agregarpartidasForm.objects.get(proyecto_id=id_proyecto) #formulario2=addDetalleproyectoForm.filter(id_proyecto=id_proyecto) #return HttpResponse(simplejson.dumps(partidas),mimetype="application/json") return HttpResponse(partidas,mimetype="application/javascript")