def assign(a, b): body = request.get_json() reviewer_id = body.get('reviewer_id', None) project_id = body.get('project_id', None) try: reviewer = Reviewer.query.filter_by(id=reviewer_id).one_or_none() project = Project.query.filter_by(id=project_id).one_or_none() previous_assignments = Assignment.query.filter( Assignment.reviewer_id == reviewer_id, Assignment.project_id == project_id).count() if previous_assignments > 0: raise AuthError({ 'code': 'Bad request', 'description': "this assignment is already existent" }, 400) if reviewer is None: raise AuthError({ 'code': 'Bad request', 'description': "reviewer does not exist" }, 400) if project is None: raise AuthError({ 'code': 'Bad request', 'description': "project does not exist" }, 400) assignment = Assignment() assignment.reviewer_id = reviewer_id assignment.project_id = project_id assignment.insert() return jsonify({ 'success': True, 'assignment': assignment.format() }) except Exception as e: print("exception error post reviewer", e) print(e) if isinstance(e, AuthError): raise e abort(422)