예제 #1
0
    def get(self,evento_id):
        evento = adapter.get_evento(evento_id)


        clima_actual = openweathermap.get_clima(evento["ubicacion"])
        all_users = adapter.get_all_users()
        
        current_app.logger.info('Obteniendo usuarios confirmados...')
        usuarios_confirmados = adapter.obtener_usuarios_invitados_evento(evento_id,Asistencia.Asisto)

        current_app.logger.info('Obteniendo usuarios pendientes...')
        usuarios_pendientes = adapter.obtener_usuarios_invitados_evento(evento_id,Asistencia.Pendiente)

        current_app.logger.info('Obteniendo usuarios rechazados...')
        usuarios_rechazados = adapter.obtener_usuarios_invitados_evento(evento_id,Asistencia.NoAsisto)

        current_app.logger.info('Obteniendo usuarios invitados...')
        usuarios_invitados = usuarios_confirmados+usuarios_pendientes+usuarios_rechazados

        current_app.logger.info('Obteniendo usuarios para invitar...')
        users_to_invite = [user for user in all_users if user not in usuarios_invitados]
        requerimientos = adapter.obtener_requerimientos_evento(evento_id)

        print current_user.is_authenticated()
        if not(current_user.is_authenticated()):
            puede_editar = str(False).lower()
            asistencia_actual = Asistencia.NoAsisto
            requerimientos_con_datos = []
        else:
            puede_editar= str(current_user.id == evento["organizador_id"]).lower()
            asistencia_actual = adapter.obtener_asistencia_a_evento(evento_id, current_user.id)
            current_app.logger.info('Obteniendo requerimientos con datos...')
            requerimientos_con_datos = []
            for r in requerimientos:
                asignaciones = adapter.obtener_asignaciones_requerimiento(r.id)
                faltan_reservar = r.cantidad
                asignacion_propia = {"cantidad":1}
                for a in asignaciones:
                    faltan_reservar = faltan_reservar - a["cantidad"]
                    if a["usuario_id"]==current_user.id:
                        asignacion_propia = a
                        faltan_reservar = faltan_reservar + a["cantidad"]

                requerimientos_con_datos.append({"requerimiento":r,"faltan_reservar":faltan_reservar,"asignacion_propia":asignacion_propia})

        headers = {'Content-Type': 'text/html'}
    	return make_response(render_template('evento.html',Asistencias=Asistencia,asistencia_actual=asistencia_actual.value,puede_editar=puede_editar,evento=evento,all_users=users_to_invite,usuarios_rechazados=usuarios_rechazados,usuarios_confirmados=usuarios_confirmados,usuarios_pendientes=usuarios_pendientes, clima_actual=clima_actual, requerimientos_con_datos=requerimientos_con_datos),200,headers)
    def post(self):
        recurso_id = request.form["id_recurso"]
        cantidad = request.form["cantidad_llevar"]
        usuario_id = current_user.id

        asignado = adapter.obtener_asignacion_usuario(recurso_id, usuario_id)
        if asignado:
            current_app.logger.info('El recursa ya fue asignado, se guarda la edicion del mismo')
            asignado = adapter.editar_asignacion_requerimiento(asignado, cantidad)
        else:
            current_app.logger.info('Nueva asignacion de recurso para un usuario')
            asignado = adapter.asignar_requerimiento(recurso_id,usuario_id,cantidad)

        requerimiento = adapter.obtener_requerimiento(recurso_id)
        asignaciones = adapter.obtener_asignaciones_requerimiento(recurso_id)
        faltan_reservar = requerimiento["cantidad"]
        asignacion_propia = asignado
        for a in asignaciones:
            faltan_reservar = faltan_reservar - a["cantidad"]
        
        requerimiento_con_datos={"requerimiento":requerimiento,"faltan_reservar":(faltan_reservar+asignacion_propia["cantidad"]),"asignacion_propia":asignacion_propia}


        return requerimiento_con_datos