Example #1
0
    def post(self, request):
        candidatos = get_dict_array(request.POST, 'data', ["funcionario", "coordinador", "verificacion", "apoyo", "criterio"])

        for id in candidatos:
            data = Storage()
            pst = Pst.objects.get(pk=int(id))
            candidato = candidatos[id] #Obtenemos los datos del candidato
            fecha = candidato['inicio'].split('-');
            desde = date(int(fecha[1]), MESES[str(fecha[0])], 1)
            fecha = candidato['fin'].split('-');
            days = calendar.monthrange(int(fecha[1]), MESES[str(fecha[0])])
            hasta = date(int(fecha[1]), MESES[str(fecha[0])], days[1])
            # Creamos los elementos para guardar la solicitud
            data.pst = pst
            data.rif = pst.rif
            data.desde = desde
            data.hasta = hasta
            data.estado = APROBACION_SOLICITUD
            data.tipo_solicitud = int(candidato['solicitud'])
            data.criterio = ",".join(candidato['criterio'])
            if int(candidato['solicitud']) == VERIFICACION:
                data.tipo_verificacion = int(candidato['verificacion'][0])

            if int(candidato['solicitud']) == FISCALIZACION:
                data.tipo_verificacion = DOMICILIO_FISCAL

            solicitud = Solicitud(**data)
            solicitud.save()

            for i, id in enumerate(candidato['funcionario']):
                analista = Storage()
                analista.funcionario = User.objects.get(pk=int(id))
                analista.es_coordinador = False
                analista.es_apoyo = False
                if candidato['coordinador'][i] == "true":
                    analista.es_coordinador = True
                if candidato['apoyo'][i] == "true":
                    analista.es_apoyo = True
                analista.solicitud = solicitud
                funcionario = FuncionariosSolicitud(**analista)
                funcionario.save()

        return redirect(reverse_lazy('funcionario_crear_solicitud'))
Example #2
0
    def post(self, request):
        """
        Guarda las solicitudes seleccionadas para crear verificaciones o fiscalizaciones
        """
        post = request.POST.copy()
        tipo = post['tipo']
        del post['csrfmiddlewaretoken']
        del post['tipo']
        if tipo == "rechazar":
            observaciones = post['comentarios']
            del post['comentarios']
            generados = []
            response = dict(success=False, message="error al rechazar las solicitudes")
            for i in range(len(post)):
                msg = "Se han rechazado las solicitudes correctamente"
                posicion = 'solicitud[%d]' % i
                id = post[posicion]
                solicitud = Solicitud.objects.get(pk=id, estado=APROBACION_SOLICITUD)
                solicitud.estado = SOLICITUD_NEGADA
                solicitud.observaciones = observaciones
                solicitud.save()
                generados.append(solicitud)

        if tipo == "aprobar":
            generados = []
            response = dict(success=False, message="error al aprobar las solicitudes")

            for i in range(len(post)):
                data, nueva_solicitud = Storage(), None
                verificacion = None
                fiscalizacion = None
                msg = "Se han aprobado las solicitudes correctamente"

                posicion = 'solicitud[%d]' % i
                id = post[posicion]
                solicitud = Solicitud.objects.get(pk=id, estado=APROBACION_SOLICITUD)
                funcionarios = FuncionariosSolicitud.objects.filter(solicitud=solicitud)
                data.pst = solicitud.pst
                data.rif = solicitud.rif
                data.desde = solicitud.desde
                data.hasta = solicitud.hasta

                if solicitud.tipo_solicitud == FISCALIZACION or \
                    solicitud.tipo_solicitud == VERIFICACION_FISCALIZACION:
                    fiscalizacion = Fiscalizacion(**data)
                    fiscalizacion.save()
                    providencia = Providencia(pst=data.pst, fiscalizacion=fiscalizacion)

                    providencia.crear()

                if solicitud.tipo_solicitud == VERIFICACION or \
                    solicitud.tipo_solicitud == VERIFICACION_FISCALIZACION:
                    
                    if solicitud.tipo_solicitud == VERIFICACION_FISCALIZACION:
                        data.tipo_verificacion = EN_SEDE
                    else: 
                        data.tipo_verificacion = solicitud.tipo_verificacion

                    verificacion = Verificacion(**data)
                    verificacion.save()
                    providencia = Providencia(pst=data.pst, verificacion=verificacion)
                    providencia.crear()

                if verificacion or fiscalizacion:
                    nueva_solicitud = verificacion if verificacion else fiscalizacion
                    generados.append(nueva_solicitud)
                    solicitud.estado = SOLICITUD_APROBADA
                    solicitud.save()

                for funcionario in funcionarios:
                    if isinstance(fiscalizacion, Fiscalizacion):
                        data = Storage(
                            es_coordinador = funcionario.es_coordinador,
                            es_apoyo = funcionario.es_apoyo,
                            funcionario = funcionario.funcionario,
                            asignado_el = funcionario.asignado_el,
                            fiscalizacion = fiscalizacion
                        )
                        f = FuncionariosFiscalizacion(**data)
                        f.save()

                    if isinstance(verificacion, Verificacion):
                        data = Storage(
                            es_coordinador = funcionario.es_coordinador,
                            es_apoyo = funcionario.es_apoyo,
                            funcionario = funcionario.funcionario,
                            asignado_el = funcionario.asignado_el,
                            verificacion = verificacion
                        )
                        f = FuncionariosVerificacion(**data)
                        f.save()

        if len(generados) == len(post):
            response = dict(success=True, message=msg)

        response = json.dumps(response, ensure_ascii=True)
        return HttpResponse(response, content_type='application/json')