def wrap(*args, **kwargs): # Get current user user_id = get_jwt_identity() # Get project and admin_id project_id = kwargs.get('project_id') project = find_by_project_id(project_id) if not project: response = { 'success': False, 'msg': 'Project does not exist', } return make_response(jsonify(response)), 404 user_roles = get_user_roles(user_id, project_id) # If current user does not have models or admin role, then unauthorized if 'admin' not in user_roles and 'models' not in user_roles: response = { 'success': False, 'msg': 'Only a models team member can access this route', } return make_response(jsonify(response)), 401 # Else continue return fun(*args, **kwargs)
def wrap(*args, **kwargs): # Get current user user_id = get_jwt_identity() # Get project and admin_id project_id = kwargs.get('project_id') project = find_by_project_id(project_id) if not project: response = { 'success': False, 'msg': 'Project does not exist', } return make_response(jsonify(response)), 404 user_roles = get_user_roles(user_id, project_id) # If current user has no roles in the project, then unauthorized if len(user_roles) == 0: response = { 'success': False, 'msg': 'Only a project member can access this route', } return make_response(jsonify(response)), 401 # Else continue return fun(*args, **kwargs)
def get(self, project_id): try: user_id = get_jwt_identity() user = find_by_user_id(user_id) project = find_by_project_id(project_id) if user_id == project['admin_id']: response = { 'success': False, 'msg': 'Cannot leave own project', } return make_response(jsonify(response)), 401 team_ids = get_teams_of_user_in_project(user['id'], project_id) for id in team_ids: delete_by_user_id_team_id(user['id'], id) project_members = count_users_in_team(id) if project_members == 0: delete_team(id) response = { 'success': True, 'msg': 'Project left', } return make_response(jsonify(response)), 200 except Exception as err: print(err) response = { 'success': False, 'msg': 'Something went wrong', } return make_response(jsonify(response)), 500
def get(self, project_id): try: if not project_id: response = { "success":False, "msg": "Project id not provided" } return make_response(jsonify(response)), 400 project = find_by_project_id(project_id) project['members'] = get_projectmembers(project_id) response = { "success": True, "msg": "Project found", "body": project } return make_response(jsonify(response)), 200 except Exception: response = { "success":False, "msg": "Something went wrong!" } # Return a server error using the HTTP Error Code 500 (Internal # Server Error) return make_response(jsonify(response)), 500
def wrap(*args, **kwargs): # Get current user user_id = get_jwt_identity() # Get project and admin_id project_id = kwargs.get('project_id') project = find_by_project_id(project_id) if not project: response = { 'success': False, 'msg': 'Project does not exist', } return make_response(jsonify(response)), 404 admin_id = project['admin_id'] # If current user is not equal to project admin, then unauthorized if user_id != admin_id: response = { 'success': False, 'msg': 'Only project owner can access this route', } return make_response(jsonify(response)), 401 # Else continue return fun(*args, **kwargs)
def put(self, project_id): """Handle PUT request for this view. Url --> /api/v1/project/update""" # getting JSON data from request post_data = request.get_json(silent=True, force=True) try: project_name = post_data["project_name"] project_description = post_data["project_description"] except KeyError as err: response = { "success": False, "msg": f'{str(err)} key is not present' } return make_response(jsonify(response)), 400 # Search the database for this project_name project = find_by_project_name(project_name) if project and project['id'] != project_id: # There already exists another project with the same name. # So we can't let this project use that name response = { "success": False, "msg": "Project name already taken." } return make_response(jsonify(response)), 400 try: project = find_by_project_id(project_id) project['members'] = get_projectmembers(project_id) if not project: response = { "success": False, "msg": "Project not present."} return make_response(jsonify(response)), 404 data = { "project_name": project_name, "project_description": project_description } project_new = update_project(project_id, data) response = { "success": True, "msg": "Project updated.", "body": project_new } return make_response(jsonify(response)), 201 except Exception as err: print("Error occurred: ", err) response = { "success": False, "msg": "Something went wrong"} return make_response(jsonify(response)), 500