def get(self, event_id): req_parser = reqparse.RequestParser() req_parser.add_argument('include_unsubmitted', type=inputs.boolean, required=True) # Note: Including [] in the question_ids parameter because that gets added by Axios on the front-end req_parser.add_argument('question_ids[]', type=int, required=False, action='append') req_parser.add_argument('language', type=str, required=True) args = req_parser.parse_args() include_unsubmitted = args['include_unsubmitted'] question_ids = args['question_ids[]'] language = args['language'] print('Include unsubmitted:', include_unsubmitted) responses = response_repository.get_all_for_event(event_id, not include_unsubmitted) review_config = review_configuration_repository.get_configuration_for_event(event_id) required_reviewers = 1 if review_config is None else review_config.num_reviews_required + review_config.num_optional_reviews response_reviewers = review_repository.get_response_reviewers_for_event(event_id) response_to_reviewers = { k: list(g) for k, g in itertools.groupby(response_reviewers, lambda r: r.response_id) } review_responses = review_repository.get_review_responses_for_event(event_id) reviewer_to_review_response = { r.reviewer_user_id: r for r in review_responses } serialized_responses = [] for response in responses: reviewers = [_serialize_reviewer(r, reviewer_to_review_response.get(r.reviewer_user_id, None)) for r in response_to_reviewers.get(response.id, [])] reviewers = _pad_list(reviewers, required_reviewers) if question_ids: answers = [_serialize_answer(answer, language) for answer in response.answers if answer.question_id in question_ids] else: answers = [] serialized = { 'response_id': response.id, 'user_title': response.user.user_title, 'firstname': response.user.firstname, 'lastname': response.user.lastname, 'start_date': response.started_timestamp.isoformat(), 'is_submitted': response.is_submitted, 'is_withdrawn': response.is_withdrawn, 'submitted_date': None if response.submitted_timestamp is None else response.submitted_timestamp.isoformat(), 'language': response.language, 'answers': answers, 'reviewers': reviewers, 'tags': [_serialize_tag(rt.tag, language) for rt in response.response_tags] } serialized_responses.append(serialized) return serialized_responses
def get(self, event_id): parser = reqparse.RequestParser() parser.add_argument('language', type=str, required=True) args = parser.parse_args() responses = response_repository.get_all_for_event(event_id) review_form = review_repository.get_review_form(event_id) return [ ReviewResponseSummaryListAPI._serialise_response( response, review_form, args['language']) for response in responses ], 200