def process_feedback( feedback, send_email_handler, session ): if feedback.processed: return target = get_user_by_id(feedback.target_user, session) manager = get_user_by_id(feedback.reports_to_user, session) author = get_user_by_id(feedback.author_user, session) sender = "{} {} <{}>".format(author.first_name, author.last_name, author.email) send_email_handler( to=manager.email, subject='Feedback for {}'.format(target.first_name), text=feedback.text, sender=sender, cc=target.email ) feedback.processed = True session.flush()
def get_request_user(): user_id = session.get('user_id') if not user_id: raise ValueError('No user is logged in this session') user = get_user_by_id(user_id, db.session) if not user: raise ValueError('Could not find user from user id {}'.format(user_id)) return user
def submit_feedback(): submitter = get_request_user() data = request.get_json() feedback_type = data['feedback_type'] text = data['text'] recipient_user_id = data['recipient_user_id'] recipient = get_user_by_id(recipient_user_id, db.session) feedback = create_feedback( target_user=recipient, author_user=submitter, text=text, type=feedback_type, session=db.session ) process_feedback( feedback=feedback, send_email_handler=send_email, session=db.session ) return 'ok', 201