def post(self, project_id): post_data = request.get_json(silent=True, force=True) try: user_email = post_data["member_email"] except KeyError as err: response = { "success": False, "msg": f'{str(err)} key is not present' } return make_response(jsonify(response)), 400 # Check if user exists user_obj = find_by_email(user_email) if not user_obj: response = {'success': False, 'msg': 'User does not exist'} return make_response(jsonify(response)), 404 user = to_json(user_obj) roles = get_user_roles(user['id'], project_id) # Check if user is already admin if 'admin' in roles: response = {'success': False, 'msg': 'User is already admin'} return make_response(jsonify(response)), 400 admin_team = find_admin_team_of_project(project_id) project_member = ProjectMember(user['id'], admin_team['id']) project_member = save_project_member(project_member) response = { 'success': True, 'msg': 'User made admin successfully', } return make_response(jsonify(response)), 200
def post(self): """Handle POST request for this view. Url --> /api/v1/project/create""" # getting JSON data from request post_data = request.get_json(silent=True, force=True) current_user = get_jwt_identity() try: project_name = post_data["project_name"] project_description = post_data["project_description"] admin_id = current_user except KeyError as err: response = { "success": False, "msg": f'{str(err)} key is not present' } return make_response(jsonify(response)), 400 # Querying the database with requested project_name project = find_by_project_name(project_name) if project: # There is an existing project with the same name. We don't want to create two # projects with the same name. # Return a message to the user telling them that they have already created a project # with this name. response = { "success": False, "msg": "Project already exists. Please change the Project Name." } return make_response(jsonify(response)), 400 # There is no project so we'll try to create a new one """Save the new Project.""" try: project = Project(project_name=project_name, project_description=project_description, admin_id=admin_id) project_new = save_project(project) """Save the project admin.""" team = Team(team_name="admin", role="admin", project_id=project_new['id']) team_new = save_team(team) project_member = ProjectMember(user_id=admin_id, team_id=team_new['id']) project_member_new = save_project_member(project_member) project_new['members'] = get_projectmembers(project_new['id']) res = { "project": project_new, "team": team_new, "project_member": project_member_new } except Exception as err: print("Error occured: ", err) response = {"success": False, "msg": "Something went wrong!!"} return make_response(jsonify(response)), 500 response = { "success": True, "msg": "Your project was created successfully.", "body": res } # return a response notifying the user that they registered # successfully return make_response(jsonify(response)), 201
def post(self, project_id): """ Handle POST request for this view. Url --> /api/v1/project/add_project_member/<int:project_id> """ # getting JSON data from request post_data = request.get_json(silent=True, force=True) current_user = get_jwt_identity() roles = get_user_roles(current_user, project_id) if "admin" not in roles: print("Error occured: user not admin") response = {"success": False, "msg": "User not admin."} return make_response(jsonify(response)), 403 try: user_email = post_data["member_email"] team_name = post_data["team_name"] role = post_data["role"] except KeyError as err: response = { "success": False, "msg": f'{str(err)} key is not present' } return make_response(jsonify(response)), 400 try: if role not in allowed_teams: response = { "success": False, "msg": "Team role is not allowed." } return make_response(jsonify(response)), 400 user_obj = find_by_email(user_email) user = to_json(user_obj) if not user: response = {"success": False, "msg": "User not found."} return make_response(jsonify(response)), 404 roles = get_user_roles(user['id'], project_id) if "admin" in roles: print("Error occured: user already admin") response = {"success": False, "msg": "User already admin."} return make_response(jsonify(response)), 400 team_exist = find_by_team_name(team_name) if team_exist: project_member_exist = find_by_user_id_team_id( user['id'], team_exist['id']) if team_exist and team_name == "admin": response = { "success": False, "msg": "Admin role already exists." } return make_response(jsonify(response)), 400 if team_exist and project_member_exist: response = { "success": False, "msg": "Projectmember already exists in this team." } return make_response(jsonify(response)), 400 if not team_exist: try: team = Team(team_name=team_name, project_id=project_id, role=role) team_exist = save_team(team) except Exception as err: print("Error occured: ", err) response = { "success": False, "msg": "Could not save a team." } return make_response(jsonify(response)), 400 try: project_member = ProjectMember(user_id=user['id'], team_id=team_exist['id']) project_member_new = save_project_member(project_member) user_added = find_by_user_id(project_member_new['user_id']) response = { "success": True, "msg": "ProjectMember added.", "body": user_added } return make_response(jsonify(response)), 201 except Exception as err: print("Error occured: ", err) response = { "success": False, "msg": "Could not save the projectmember." } return make_response(jsonify(response)), 500 except Exception: response = {"success": False, "msg": "Something went wrong!!"} return make_response(jsonify(response)), 500