import logging import base64 from flask import request from flask import json from flask import current_app from flask import session from rz_mail import send_message log = logging.getLogger('rhizi') def decode_base64_uri(base64_encoded_data_uri): start = base64_encoded_data_uri.find(',') + 1 encoded = base64_encoded_data_uri[start:] return base64.decodestring(encoded) def send_user_feedback__email(): """ Email all parts as attachments to configured feedback email """ def sanitize_input(req): req_dict = req.get_json() url = req_dict['url'] note = req_dict['note'] img = decode_base64_uri(req_dict['img']) html = req_dict['html'] user_agent = req_dict['browser']['userAgent'] return RZ_User_Feedback(url=url, note=note, img=img, html=html, user_agent=user_agent) try: url, note, img, html = sanitize_input(request) except: log.warn('failed to sanitize inputs. request: %s' % request) # FIXME: should be async via celery (or another method) session_user = session.get('username') msg_body = ['Feedback from user:', '', 'user: %s' % (session_user if session_user else ""), 'user-agent: %s' % (u_feedback.user_agent), 'watching URL: %s' % (u_feedback.url), 'user-note: %s' % (u_feedback.note), '' ] msg_body = '\n'.join(msg_body)