def getinfobyiddesafio(iddesafio): data = get_info_token() print(data) pretest_data_temp = Get_pretest() pretest_data = [] posttest_data_temp = Get_posttest() posttest_data = [] detalle_desafio = Get_challenges_by_id(data['nickname'], iddesafio) resultados = [] if (data['tipousuario'] == 'GRUPO A'): print('G-A') resultados = get_results(iddesafio, 0, 50) elif (data['tipousuario'] == 'GRUPO B'): print('G-B') resultados = get_results(iddesafio, 10, 40) elif (data['tipousuario'] == 'GRUPO C'): print('G-C') resultados = get_results(iddesafio, 20, 30) elif (data['tipousuario'] == 'GRUPO D'): print('G-D') resultados = get_results(iddesafio, 30, 20) for x in pretest_data_temp: pretest_data.append(x[0]) for x in posttest_data_temp: posttest_data.append(x[0]) return jsonify({ 'message': "OK", 'pretest': pretest_data, 'posttest': posttest_data, 'detalle': detalle_desafio, 'test': resultados, 'code': 200 })
def post(self): """Realizar búsqueda [duckduckgo]""" data = get_info_token() ip_ = request.environ.get('HTTP_X_REAL_IP', request.remote_addr) response = "" code = 500 message = '' try: query_ = str(request.get_json()['query'].encode( 'utf-8').strip().decode("utf-8")) searchengine_ = str(request.get_json()['searchengine'].encode( 'utf-8').strip().decode("utf-8")) id_challenge_ = str(request.get_json()['id_challenge']) if searchengine_.lower() == 'google': response = googlesearch(query_) code = 200 message = 'TODOOK' return jsonify({ 'message': message, 'code': code, 'response': response }) except Exception as e: message = 'Se ha producido un error en nuestros servidores' code = 500 print(str(e)) return jsonify({'message': message, 'code': code})
def GetAllChallenges(): data = get_info_token() ALLCHALLENGES = Get_all_challenges(data['nickname']) return jsonify({ 'message': "OK", 'allchallenges': ALLCHALLENGES, 'code': 200 })
def put(self, id_challenge): """Editar template de desafío , creado por el usuario""" data = get_info_token() ip_ = request.environ.get('HTTP_X_REAL_IP', request.remote_addr) try: title_ = str(request.get_json()['title'].encode( 'utf-8').strip().decode("utf-8")) description_ = str(request.get_json()['description'].encode( 'utf-8').strip().decode("utf-8")) photo_ = str(request.get_json()['photo'].encode( 'utf-8').strip().decode("utf-8")) aim_ = str(request.get_json()['aim'].encode( 'utf-8').strip().decode("utf-8")) category_ = str(request.get_json()['category'].encode( 'utf-8').strip().decode("utf-8")) Payload = { "title": title_, "description": description_, "photo": photo_, "aim": aim_, "category": category_ } insert_request_log( "/professor/challenge/template/edit/" + str(id_challenge), "PUT", str(Payload), ip_, data['email']) if get_permission_by_user('Update_challenge', data['rol']) == 'True': response = edit_template_challenge(id_challenge, title_, description_, photo_, aim_, category_, data['email']) if response >= 1: message = 'ok' code = 200 else: message = 'No se pudo editar el desafío, probablemente no tienes los suficientes permisos. Por favor, contacta con el administrador' code = 403 response_str = { 'message': message, 'code': code, 'id_challenge_template': response } insert_general_log(str(response_str), ip_, data['email']) return jsonify(response_str) else: message = 'Acción no permitida' code = 403 response_str = {'message': message, 'code': code} insert_general_log(str(response_str), ip_, data['email']) return jsonify(response_str) except Exception as e: message = 'Se ha producido un error en nuestros servidores' code = 500 response_str = str({ 'error': "/template/edit/" + str(id_challenge), 'detalle': str(e) }) insert_general_log(response_str, ip_, data['email']) return jsonify({'message': message, 'code': code})
def post(self): """Crear nuevo template de desafío""" data = get_info_token() ip_ = request.environ.get('HTTP_X_REAL_IP', request.remote_addr) try: title_ = str(request.get_json()['title'].encode( 'utf-8').strip().decode("utf-8")) description_ = str(request.get_json()['description'].encode( 'utf-8').strip().decode("utf-8")) photo_ = str(request.get_json()['photo'].encode( 'utf-8').strip().decode("utf-8")) aim_ = str(request.get_json()['aim'].encode( 'utf-8').strip().decode("utf-8")) category_ = str(request.get_json()['category'].encode( 'utf-8').strip().decode("utf-8")) Payload = { "title": title_, "description": description_, "photo": photo_, "aim": aim_, "category": category_ } insert_request_log("/professor/challenge/template/create", "POST", str(Payload), ip_, data['email']) if get_permission_by_user('Create_challenge', data['rol']) == 'True': response = new_template_challenge(title_, description_, photo_, aim_, category_, data['email']) if response >= 1: message = 'ok' code = 200 else: message = 'Algo sucedió en la base de datos' code = 503 response_str = { 'message': message, 'code': code, 'id_challenge_template': response } insert_general_log(str(response_str), ip_, data['email']) return jsonify(response_str) else: message = 'Acción no permitida' code = 403 response_str = {'message': message, 'code': code} insert_general_log(str(response_str), ip_, data['email']) return jsonify(response_str) except Exception as e: message = 'Se ha producido un error en nuestros servidores' code = 500 response_str = str({ 'error': "/template/create", 'detalle': str(e) }) insert_general_log(response_str, ip_, data['email']) return jsonify({'message': message, 'code': code})
def get(self, id_challenge): """ [NO FUNCIONANDO] - Ver el estado de deadline, para comprobar si aún puede ejecutar alguna acción sobre el desafío """ data = get_info_token() ip_ = request.environ.get('HTTP_X_REAL_IP', request.remote_addr) response = ({'message': "Endpoint Pendiente", 'code': 200}) insert_general_log(str(response), ip_, data['email']) return jsonify(response)
def get(self): """ Obtener todos los desafíos (Creados por el usuario [Profesor]) <strong>Se obtiene un arreglo de los siguientes datos:</strong> -[0] Id de desafio\n -[1] Título\n -[2] Descripción\n -[3] Token interno (No habilitado)\n -[4] Foto (base64)\n -[5] Objetivos\n -[6] Fecha de creación\n -[7] Ultima vez modificado\n -[8] Tipo de deadline\n -[9] Valor de deadline\n -[10] ID de classroom a la que pertenece\n -[11] Categoría del desafío\n """ data = get_info_token() ip_ = request.environ.get('HTTP_X_REAL_IP', request.remote_addr) try: insert_request_log("/professor/challenge/", "GET", "", ip_, data['email']) if get_permission_by_user('Read_challenge', data['rol']) == 'True': response = get_all_my_challenges(data['email']) if len(response) >= 1: message = 'ok' code = 200 else: message = 'Algo sucedió en la base de datos' code = 503 response_str = str({ 'message': message, 'code': code, 'challenges': response }) insert_general_log(response_str, ip_, data['email']) return jsonify({ 'message': message, 'code': code, 'challenges': response }) else: message = 'Acción no permitida' code = 403 response_str = str({'message': message, 'code': code}) insert_general_log(response_str, ip_, data['email']) return jsonify({'message': message, 'code': code}) except Exception as e: message = 'Se ha producido un error en nuestros servidores' code = 500 response_str = str({ 'error': "/professor/challenge/", 'detalle': str(e) }) insert_general_log(response_str, ip_, data['email']) return jsonify({'message': message, 'code': code})
def get(self): """ Obtener todos los templates desafíos (Creados por el profesor y otros profesores) <strong>Se obtiene un arreglo de los siguientes datos:</strong> -[0] Id de template del desafio\n -[1] Título\n -[2] Descripción\n -[3] Foto (base64)\n -[4] Objetivos\n -[5] Fecha de creación\n -[6] Ultima vez modificado\n -[8] Estado [Show]\n -[9] Categoría del desafío\n -[10] Creado por [email del usuario]\n """ data = get_info_token() ip_ = request.environ.get('HTTP_X_REAL_IP', request.remote_addr) try: insert_request_log("/professor/challenge/template/", "GET", "", ip_, data['email']) if get_permission_by_user('Read_challenge', data['rol']) == 'True': response = get_all_templates_challenge() response_str = { 'message': 'Template de todos los desafíos disponibles', 'code': 200, 'template_challenge': response } insert_general_log(str(response_str), ip_, data['email']) return jsonify(response_str) else: message = 'Acción no permitida' code = 403 response_str = {'message': message, 'code': code} insert_general_log(str(response_str), ip_, data['email']) return jsonify(response_str) except Exception as e: message = 'Se ha producido un error en nuestros servidores' code = 500 response_str = str({'error': "/template", 'detalle': str(e)}) insert_general_log(response_str, ip_, data['email']) return jsonify({'message': message, 'code': code})
def get(self, id_challenge): """ Obtiene lista de los estudiantes suscritos al desafío y el estado de cada uno """ code = 500 data = get_info_token() ip_ = request.environ.get('HTTP_X_REAL_IP', request.remote_addr) insert_request_log( "/professor/challenge/" + str(id_challenge) + "/get_all_students", "GET", "", ip_, data['email']) try: if data['rol'] == 'Professor': print(data['email']) if iam_owner_of_this_challenge(id_challenge, data['email']): data_ = get_all_students_in_challenge(id_challenge) response_str = {'message': data_, 'code': 200} insert_general_log(str(response_str), ip_, data['email']) return jsonify(response_str) else: response_str = { 'message': 'Acción no permitida, probablemente no tienes la autorización necesaria', 'code': 403 } insert_general_log(str(response_str), ip_, data['email']) return jsonify(response_str) else: return jsonify({'message': 'Acción no permitida', 'code': 503}) except Exception as e: message = 'Se ha producido un error en nuestros servidores' response_str = str({ 'error': "/professor/challenge/" + str(id_challenge) + "/get_all_students", 'detalle': str(e) }) insert_general_log(response_str, ip_, data['email']) return jsonify({'message': message, 'code': code})
def getinfobyiddesafio(iddesafio): data = get_info_token()
def testing_logged(): """ Returns the data contained in the token, and thus validates that the token is valid """ data = get_info_token() return jsonify({'message': "You're logged", 'data': data, 'code': 200})
def put(self, id_challenge): """Editar desafío por id""" data = get_info_token() ip_ = request.environ.get('HTTP_X_REAL_IP', request.remote_addr) try: if data['rol'] == 'Professor': title_ = str(request.get_json()['title'].encode( 'utf-8').strip().decode("utf-8")) description_ = str(request.get_json()['description'].encode( 'utf-8').strip().decode("utf-8")) photo_ = str(request.get_json()['photo'].encode( 'utf-8').strip().decode("utf-8")) aim_ = str(request.get_json()['aim'].encode( 'utf-8').strip().decode("utf-8")) deadline_type_ = str( request.get_json()['deadline_type'].encode( 'utf-8').strip().decode("utf-8")) deadline_value_ = str( request.get_json()['deadline_value'].encode( 'utf-8').strip().decode("utf-8")) id_classroom_ = str(request.get_json()['id_classroom'].encode( 'utf-8').strip().decode("utf-8")) category_ = str(request.get_json()['category'].encode( 'utf-8').strip().decode("utf-8")) Payload = { "title": title_, "description": description_, "photo": photo_, "aim": aim_, "deadline_type": deadline_type_, "deadline_value": deadline_value_, "id_classroom": id_classroom_, "category": category_ } insert_request_log( "/professor/challenge/edit/" + str(id_challenge), "PUT", str(Payload), ip_, data['email']) if iam_owner_of_this_challenge(id_challenge, data['email']): if get_permission_by_user('Update_challenge', data['rol']) == 'True': response = edit_challenge(id_challenge, title_, description_, photo_, aim_, deadline_type_, deadline_value_, id_classroom_, category_) if response >= 1: message = 'ok' code = 200 else: message = 'Algo sucedió en la base de datos' code = 503 response_str = str({ 'message': message, 'code': code, 'id_challenge': response }) insert_general_log(response_str, ip_, data['email']) return jsonify({ 'message': message, 'code': code, 'id_challenge': response }) else: message = 'Acción no permitida' code = 403 response_str = str({'message': message, 'code': code}) insert_general_log(response_str, ip_, data['email']) return jsonify({'message': message, 'code': code}) except Exception as e: message = 'Se ha producido un error en nuestros servidores' code = 500 response_str = str({ 'error': "/professor/challenge/edit/" + str(id_challenge), 'detalle': str(e) }) insert_general_log(response_str, ip_, data['email']) return jsonify({'message': message, 'code': code})