def post(self): args = self.post_req_parser.parse_args() response_id = args['response_id'] title = args['title'] firstname = args['firstname'] lastname = args['lastname'] relation = args['relation'] email = args['email'] user = user_repository.get_by_id(g.current_user['id']) if not user: return USER_NOT_FOUND event = event_repository.get_event_by_response_id(response_id) if not event: return EVENT_NOT_FOUND response = response_repository.get_by_id(response_id) if not response: return RESPONSE_NOT_FOUND reference_request = ReferenceRequest(response_id=response_id, title=title, firstname=firstname, lastname=lastname, relation=relation, email=email) reference_request_repository.create(reference_request) link = "{host}/reference/{token}".format(host=misc.get_baobab_host(), token=reference_request.token) candidate, candidate_firstname, nominator = _get_candidate_nominator( response) if nominator is None: nomination_text = "has nominated themself" else: nomination_text = "has been nominated by {}".format(nominator) subject = 'REFERENCE REQUEST - {}'.format(event.name) body = REFERENCE_REQUEST_EMAIL_BODY.format( title=title, firstname=firstname, lastname=lastname, candidate=candidate, candidate_firstname=candidate_firstname, nomination_text=nomination_text, event_name=event.name, event_url=event.url, application_close_date=event.application_close, link=link) send_mail(recipient=email, subject=subject, body_text=body) reference_request.set_email_sent(datetime.now()) reference_request_repository.add(reference_request) return reference_request, 201
def post(self): args = self.post_req_parser.parse_args() response_id = args['response_id'] title = args['title'] firstname = args['firstname'] lastname = args['lastname'] relation = args['relation'] email = args['email'] user = user_repository.get_by_id(g.current_user['id']) if not user: return USER_NOT_FOUND event = event_repository.get_event_by_response_id(response_id) if not event: return EVENT_NOT_FOUND response = response_repository.get_by_id(response_id) if not response: return RESPONSE_NOT_FOUND reference_request = ReferenceRequest(response_id=response_id, title=title, firstname=firstname, lastname=lastname, relation=relation, email=email) reference_request_repository.create(reference_request) link = "{host}/reference/{token}".format(host=misc.get_baobab_host(), token=reference_request.token) try: candidate, candidate_firstname, nominator = _get_candidate_nominator( response) except ValueError as e: LOGGER.error(e) return BAD_CONFIGURATION email_user('reference-request-self-nomination' if nominator is None else 'reference-request', template_parameters=dict( candidate=candidate, candidate_firstname=candidate_firstname, nominator=nominator, event_url=event.url, application_close_date=event.application_close, link=link), event=event, user=user) reference_request.set_email_sent(datetime.now()) reference_request_repository.add(reference_request) return reference_request, 201
def get(self): args = self.post_req_parser.parse_args() token = args['token'] reference_request = reference_request_repository.get_by_token( token) # type: ReferenceRequest if not reference_request: return REFRERENCE_REQUEST_WITH_TOKEN_NOT_FOUND response_id = reference_request.response_id response = response_repository.get_by_id(response_id) # type: Response if not response: return RESPONSE_NOT_FOUND event = event_repository.get_event_by_response_id( response_id) # type: Event if not event: return EVENT_NOT_FOUND reference = reference_repository.get_by_reference_request_id( reference_request.id) app_form = event.get_application_form() # type: ApplicationForm # Determine whether the response is a nomination try: candidate, _, nominator = _get_candidate_nominator(response) except ValueError as e: LOGGER.error(e) return BAD_CONFIGURATION return_object = { 'candidate': candidate, 'nominator': nominator, 'relation': reference_request.relation, 'name': event.get_name('en'), 'description': event.get_description('en'), 'is_application_open': event.is_application_open, 'email_from': event.email_from, 'reference_submitted_timestamp': reference.timestamp if reference is not None else None } return return_object, 200
def get(self): args = self.get_req_parser.parse_args() user = user_repository.get_by_id(g.current_user['id']) response = response_repository.get_by_id(args['response_id']) if not response: return RESPONSE_NOT_FOUND event = event_repository.get_event_by_response_id(response.id) if not user.is_event_admin(event.id): return FORBIDDEN reference_responses = reference_request_repository.get_references_by_response_id( response.id) return [ reference_response.Reference for reference_response in reference_responses ], 200
def post(self): LOGGER.debug('Received post request for reference-request') args = self.post_req_parser.parse_args() response_id = args['response_id'] title = args['title'] firstname = args['firstname'] lastname = args['lastname'] relation = args['relation'] email = args['email'] user = user_repository.get_by_id(g.current_user['id']) if not user: return USER_NOT_FOUND response_event = event_repository.get_event_by_response_id(response_id) if not response_event or not response_event.Event: return EVENT_NOT_FOUND event = response_event.Event reference_request = ReferenceRequest(response_id=response_id, title=title, firstname=firstname, lastname=lastname, relation=relation, email=email) reference_request_repository.create(reference_request) link = "{host}/{key}/reference?token={token}".format( host=misc.get_baobab_host(), key=event.key, token=reference_request.token) subject = 'REFERENCE REQUEST - {}'.format(event.name) body = REFERENCE_REQUEST_EMAIL_BODY.format( title=title, firstname=firstname, lastname=lastname, event_description=event.description, link=link, candidate_firstname=user.firstname, candidate_lastname=user.lastname, application_close_date=event.application_close) send_mail(recipient=email, subject=subject, body_text=body) reference_request.set_email_sent(datetime.now()) reference_request_repository.update(reference_request) return {}, 201
def put(self): args = self.put_req_parser.parse_args() token = args['token'] uploaded_document = args['uploaded_document'] reference_request = reference_request_repository.get_by_token(token) event = event_repository.get_event_by_response_id( reference_request.response_id) reference = reference_request_repository.get_reference_by_reference_request_id( reference_request.id) if not reference_request: return REFERENCE_REQUEST_NOT_FOUND if not event.is_application_open: return APPLICATIONS_CLOSED reference.uploaded_document = uploaded_document reference_request_repository.commit() return {}, 200
def post(self): args = self.post_req_parser.parse_args() token = args['token'] uploaded_document = args['uploaded_document'] reference_request = reference_request_repository.get_by_token(token) event = event_repository.get_event_by_response_id( reference_request.response_id) if not reference_request: return REFRERENCE_REQUEST_WITH_TOKEN_NOT_FOUND if reference_request.has_reference: return DUPLICATE_REFERENCE_SUBMISSION if not event.is_application_open: return APPLICATIONS_CLOSED reference = Reference(reference_request_id=reference_request.id, uploaded_document=uploaded_document) reference_request_repository.add(reference) return {}, 201