def create_bug(): if not request.is_json: return jsonify({"details": "No json provided"}), 400 data = request.get_json() token = str(request.headers['authorization']).split(" ")[1] status_code, msg = kc_client.token_to_user(token) if status_code != requests.codes.ok: return msg, status_code else: user = BugzillaUser.query.filter_by(email=msg['email']).first() if user: bugzilla_token = user.apikey #TODO: check user roles that are able to create bugs #msg['roles'] = 'USER_ALLOWED' #if "USER_ALLOWED" in msg['roles']: status, msg = bz_client.create_bug(reporter_token=bugzilla_token, bug_data=data, reporter=msg['email']) return jsonify({'details': msg}), status #else: # return jsonify({'details': 'User not allowed to create bugs'}), 401 else: print( "SERVER > [ERROR] user {} not found in the DB but correctly logged in at Keycloak" ) return jsonify({'details': 'Internal server error'}), 500
def get_bug(bug_id): token = str(request.headers['authorization']).split(" ")[1] status_code, msg = kc_client.token_to_user(token) if status_code == requests.codes.ok: user = BugzillaUser.query.filter_by(email=msg['email']).first() if user: bugzilla_token = user.apikey if "SiteManager" in msg['roles']: status, msg = bz_client.get_bug(requester_email=msg['email'], requester_token=bugzilla_token, bug_id=bug_id, is_admin=True) else: status, msg = bz_client.get_bug(requester_email=msg['email'], requester_token=bugzilla_token, bug_id=bug_id, is_admin=False) return jsonify({'details': msg}), status else: print( "SERVER > [ERROR] user {} not found in the DB but correctly logged in at Keycloak" ) return jsonify({'details': 'Internal server error'}), 500 else: return msg, status_code
def update_bug(bug_id): print("PASO") if not request.is_json: return jsonify({"details": "No json provided"}), 400 data = request.get_json() print(data) token = str(request.headers['authorization']).split(" ")[1] status, user_data = kc_client.token_to_user(token) print(user_data) user = BugzillaUser.query.filter_by(email=user_data['email']).first() if user: bugzilla_token = user.apikey #TODO: Usuario admin tambien tiene que ser admin en Bugzilla if "SiteManager" in user_data['roles']: status, msg = bz_client.update_bug( reporter_email=user_data['email'], reporter_token=bugzilla_token, bug_data=data, bug_id=bug_id, is_admin=True) else: status, msg = bz_client.update_bug( reporter_email=user_data['email'], reporter_token=bugzilla_token, bug_data=data, bug_id=bug_id, is_admin=False) return jsonify({'details': msg}), status
def get_bugs(): page = request.args.get('page') if page != None: page = int(page) token = str(request.headers['authorization']).split(" ")[1] status_code, msg = kc_client.token_to_user(token) if status_code == requests.codes.ok: user = BugzillaUser.query.filter_by(email=msg['email']).first() if user: bugzilla_token = user.apikey # SiteManager retrieves everything but regular users only 5G-EVE portal related tickets if "SiteManager" in msg['roles']: status, msg = bz_client.get_bugs( requester_email=msg['email'], requester_token=bugzilla_token, is_admin=True, page=page) else: status, msg = bz_client.get_bugs( requester_email=msg['email'], requester_token=bugzilla_token, is_admin=False, page=page) return jsonify({'details': msg}), status #if status != requests.codes.ok: # return jsonify({'details': msg}), status #else: #sorted_data = sorted(msg['bugs'], key=lambda k: datetime.strptime(k['creation_time'],'%Y-%m-%dT%H:%M:%SZ'), reverse=False) #return jsonify({'details': sorted_data}), status else: print( "SERVER > [ERROR] user {} not found in the DB but correctly logged in at Keycloak" .format(msg['email'])) return jsonify({'details': 'Internal server error'}), 500 return msg, status_code
def create_bug_comment(bug_id): if not request.is_json: return jsonify({"details": "No json provided"}), 400 data = request.get_json() token = str(request.headers['authorization']).split(" ")[1] status_code, msg = kc_client.token_to_user(token) if status_code != requests.codes.ok: return msg, status_code else: user = BugzillaUser.query.filter_by(email=msg['email']).first() if user: bugzilla_token = user.apikey if "SiteManager" in msg['roles']: status, msg = bz_client.create_bug_comment( user_token=bugzilla_token, bug_id=bug_id, comment_data=data, is_admin=True) else: status, msg = bz_client.create_bug_comment( user_token=bugzilla_token, bug_id=bug_id, comment_data=data, is_admin=False) return jsonify({'details': msg}), status else: print( "SERVER > [ERROR] user {} not found in the DB but correctly logged in at Keycloak" ) return jsonify({'details': 'Internal server error'}), 500