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'))
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')