def post(self): subj = self.request.get('subject', '') msg = self.request.get('message', '') dest_id = self.request.get('dest_id', '') dest_name = self.request.get('dest_name', '').strip() if not dest_name: dest_name = "Rideshare User" csrf_token = self.request.get('_csrf_token', '') try: logging.debug("*** subject: %s / message: %s / dest_id: %s / dest_name: %s" % (subj, msg, dest_id, dest_name)) if csrf_token != generate_csrf_token(): raise ValueError("CSRF token could not be confirmed. Cannot send message.") source_u = self.user_model.get_by_id(int(self.user_id)) if not source_u: raise ValueError("Could not validate source user.") u = self.user_model.get_by_id(int(dest_id)) if not u: raise ValueError("Could not find destination user.") dest_email = u.email email_url = "/taskqueue-send-email/" params = { 'source_name': source_u.get_full_name(), 'source_email': source_u.email, 'source_user_id': source_u.key.id(), 'subject': subj, 'message': msg, 'city': i18n.get_city_code(self.request), 'region': i18n.get_region_code(self.request).upper(), 'country': i18n.get_country_code(self.request), 'app_name': self.app.config.get("app_name") } msg_tmpl = "emails/user_message.txt" msg_body = self.jinja2.render_template(msg_tmpl, **params) taskqueue.add(url=email_url, params={ 'to': dest_name + (" <%s>" % dest_email), 'subject': "[Surrender Rideshare] "+subj, 'body': msg_body, 'sender': "%s via Surrender Rideshare <%s>" % (source_u.get_full_name(), source_u.email), }) except Exception, e: logging.error("Exception when trying to send message: (%s) %s" % (e.__class__.__name__, e)) self.error(500)
def post(self): """ validate contact form """ if not self.form.validate(): return self.get() remote_ip = self.request.remote_addr city = i18n.get_city_code(self.request) region = i18n.get_region_code(self.request) country = i18n.get_country_code(self.request) coordinates = i18n.get_city_lat_long(self.request) user_agent = self.request.user_agent exception = self.request.POST.get('exception') name = self.form.name.data.strip() email = self.form.email.data.lower() message = self.form.message.data.strip() template_val = {} challenge = self.request.POST.get('recaptcha_challenge_field') response = self.request.POST.get('recaptcha_response_field') cResponse = captcha.submit( response, self.app.config.get('captcha_private_key'), remote_ip)
def post(self): """ validate contact form """ if not self.form.validate(): return self.get() remote_ip = self.request.remote_addr city = i18n.get_city_code(self.request) region = i18n.get_region_code(self.request) country = i18n.get_country_code(self.request) coordinates = i18n.get_city_lat_long(self.request) user_agent = self.request.user_agent exception = self.request.POST.get('exception') name = self.form.name.data.strip() email = self.form.email.data.lower() message = self.form.message.data.strip() template_val = {} try: # parsing user_agent and getting which os key to use # windows uses 'os' while other os use 'flavor' ua = httpagentparser.detect(user_agent) _os = ua.has_key('flavor') and 'flavor' or 'os' operating_system = str(ua[_os]['name']) if "name" in ua[_os] else "-" if 'version' in ua[_os]: operating_system += ' ' + str(ua[_os]['version']) if 'dist' in ua: operating_system += ' ' + str(ua['dist']) browser = str(ua['browser']['name']) if 'browser' in ua else "-" browser_version = str(ua['browser']['version']) if 'browser' in ua else "-" template_val = { "name": name, "email": email, "ip": remote_ip, "city": city, "region": region, "country": country, "coordinates": coordinates, "browser": browser, "browser_version": browser_version, "operating_system": operating_system, "message": message } except Exception as e: logging.error("error getting user agent info: %s" % e) try: subject = _("Contact") + " " + self.app.config.get('app_name') # exceptions for error pages that redirect to contact if exception != "": subject = "{} (Exception error: {})".format(subject, exception) body_path = "emails/contact.txt" body = self.jinja2.render_template(body_path, **template_val) email_url = self.uri_for('taskqueue-send-email') taskqueue.add(url=email_url, params={ 'to': self.app.config.get('contact_recipient'), 'subject': subject, 'body': body, 'sender': self.app.config.get('contact_sender'), }) message = _('Your message was sent successfully.') self.add_message(message, 'success') return self.redirect_to('contact') except (AttributeError, KeyError), e: logging.error('Error sending contact form: %s' % e) message = _('Error sending the message. Please try again later.') self.add_message(message, 'error') return self.redirect_to('contact')
def post(self): """ validate contact form """ if not self.form.validate(): return self.get() remote_ip = self.request.remote_addr city = i18n.get_city_code(self.request) region = i18n.get_region_code(self.request) country = i18n.get_country_code(self.request) coordinates = i18n.get_city_lat_long(self.request) user_agent = self.request.user_agent exception = self.request.POST.get('exception') name = self.form.name.data.strip() email = self.form.email.data.lower() message = self.form.message.data.strip() template_val = {} challenge = self.request.POST.get('recaptcha_challenge_field') response = self.request.POST.get('recaptcha_response_field') cResponse = captcha.submit(challenge, response, self.app.config.get('captcha_private_key'), remote_ip) if re.search(r"(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})", message) and not cResponse.is_valid: chtml = captcha.displayhtml( public_key=self.app.config.get('captcha_public_key'), use_ssl=(self.request.scheme == 'https'), error=None) if self.app.config.get('captcha_public_key') == "PUT_YOUR_RECAPCHA_PUBLIC_KEY_HERE" or \ self.app.config.get('captcha_private_key') == "PUT_YOUR_RECAPCHA_PUBLIC_KEY_HERE": chtml = '<div class="alert alert-error"><strong>Error</strong>: You have to ' \ '<a href="http://www.google.com/recaptcha/whyrecaptcha" target="_blank">sign up ' \ 'for API keys</a> in order to use reCAPTCHA.</div>' \ '<input type="hidden" name="recaptcha_challenge_field" value="manual_challenge" />' \ '<input type="hidden" name="recaptcha_response_field" value="manual_challenge" />' template_val = { "captchahtml": chtml, "exception": exception, "message": message, "name": name, } if not cResponse.is_valid and response is None: _message = _( "Please insert the Captcha in order to finish the process of sending the message" ) self.add_message(_message, 'warning') elif not cResponse.is_valid: _message = _( 'Wrong image verification code. Please try again.') self.add_message(_message, 'error') return self.render_template('contact.html', **template_val) else: try: # parsing user_agent and getting which os key to use # windows uses 'os' while other os use 'flavor' ua = httpagentparser.detect(user_agent) _os = ua.has_key('flavor') and 'flavor' or 'os' operating_system = str( ua[_os]['name']) if "name" in ua[_os] else "-" if 'version' in ua[_os]: operating_system += ' ' + str(ua[_os]['version']) if 'dist' in ua: operating_system += ' ' + str(ua['dist']) browser = str( ua['browser']['name']) if 'browser' in ua else "-" browser_version = str( ua['browser']['version']) if 'browser' in ua else "-" template_val = { "name": name, "email": email, "ip": remote_ip, "city": city, "region": region, "country": country, "coordinates": coordinates, "browser": browser, "browser_version": browser_version, "operating_system": operating_system, "message": message } except Exception as e: logging.error("error getting user agent info: %s" % e) try: subject = _("Contact") + " " + self.app.config.get('app_name') # exceptions for error pages that redirect to contact if exception != "": subject = "{} (Exception error: {})".format( subject, exception) body_path = "emails/contact.txt" body = self.jinja2.render_template(body_path, **template_val) email_url = self.uri_for('taskqueue-send-email') taskqueue.add(url=email_url, params={ 'to': self.app.config.get('contact_recipient'), 'subject': subject, 'body': body, 'sender': self.app.config.get('contact_sender'), }) message = _('Your message was sent successfully.') self.add_message(message, 'success') return self.redirect_to('contact') except (AttributeError, KeyError), e: logging.error('Error sending contact form: %s' % e) message = _( 'Error sending the message. Please try again later.') self.add_message(message, 'error') return self.redirect_to('contact')
def post(self): """ validate contact form """ if not self.form.validate(): return self.get() remote_ip = self.request.remote_addr city = i18n.get_city_code(self.request) region = i18n.get_region_code(self.request) country = i18n.get_country_code(self.request) coordinates = i18n.get_city_lat_long(self.request) user_agent = self.request.user_agent exception = self.request.POST.get('exception') name = self.form.name.data.strip() email = self.form.email.data.lower() message = self.form.message.data.strip() template_val = {} challenge = self.request.POST.get('recaptcha_challenge_field') response = self.request.POST.get('recaptcha_response_field') cResponse = captcha.submit( challenge, response, self.app.config.get('captcha_private_key'), remote_ip) if re.search(r"(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})", message) and not cResponse.is_valid: chtml = captcha.displayhtml( public_key=self.app.config.get('captcha_public_key'), use_ssl=(self.request.scheme == 'https'), error=None) if self.app.config.get('captcha_public_key') == "PUT_YOUR_RECAPCHA_PUBLIC_KEY_HERE" or \ self.app.config.get('captcha_private_key') == "PUT_YOUR_RECAPCHA_PUBLIC_KEY_HERE": chtml = '<div class="alert alert-error"><strong>Error</strong>: You have to ' \ '<a href="http://www.google.com/recaptcha/whyrecaptcha" target="_blank">sign up ' \ 'for API keys</a> in order to use reCAPTCHA.</div>' \ '<input type="hidden" name="recaptcha_challenge_field" value="manual_challenge" />' \ '<input type="hidden" name="recaptcha_response_field" value="manual_challenge" />' template_val = { "captchahtml": chtml, "exception": exception, "message": message, "name": name, } if not cResponse.is_valid and response is None: _message = _("Please insert the Captcha in order to finish the process of sending the message") self.add_message(_message, 'warning') elif not cResponse.is_valid: _message = _('Wrong image verification code. Please try again.') self.add_message(_message, 'error') return self.render_template('contact.html', **template_val) else: try: # parsing user_agent and getting which os key to use # windows uses 'os' while other os use 'flavor' ua = httpagentparser.detect(user_agent) _os = ua.has_key('flavor') and 'flavor' or 'os' operating_system = str(ua[_os]['name']) if "name" in ua[_os] else "-" if 'version' in ua[_os]: operating_system += ' ' + str(ua[_os]['version']) if 'dist' in ua: operating_system += ' ' + str(ua['dist']) browser = str(ua['browser']['name']) if 'browser' in ua else "-" browser_version = str(ua['browser']['version']) if 'browser' in ua else "-" template_val = { "name": name, "email": email, "ip": remote_ip, "city": city, "region": region, "country": country, "coordinates": coordinates, "browser": browser, "browser_version": browser_version, "operating_system": operating_system, "message": message } except Exception as e: logging.error("error getting user agent info: %s" % e) try: subject = _("Contact") + " " + self.app.config.get('app_name') # exceptions for error pages that redirect to contact if exception != "": subject = "{} (Exception error: {})".format(subject, exception) body_path = "emails/contact.txt" body = self.jinja2.render_template(body_path, **template_val) email_url = self.uri_for('taskqueue-send-email') taskqueue.add(url=email_url, params={ 'to': self.app.config.get('contact_recipient'), 'subject': subject, 'body': body, 'sender': self.app.config.get('contact_sender'), }) message = _('Your message was sent successfully.') self.add_message(message, 'success') return self.redirect_to('contact') except (AttributeError, KeyError), e: logging.error('Error sending contact form: %s' % e) message = _('Error sending the message. Please try again later.') self.add_message(message, 'error') return self.redirect_to('contact')
def post(self): """ validate contact form """ if not self.form.validate(): return self.get() remote_ip = self.request.remote_addr city = i18n.get_city_code(self.request) region = i18n.get_region_code(self.request) country = i18n.get_country_code(self.request) coordinates = i18n.get_city_lat_long(self.request) user_agent = self.request.user_agent exception = self.request.POST.get('exception') name = self.form.name.data.strip() email = self.form.email.data.lower() message = self.form.message.data.strip() template_val = {} try: # parsing user_agent and getting which os key to use # windows uses 'os' while other os use 'flavor' ua = httpagentparser.detect(user_agent) _os = ua.has_key('flavor') and 'flavor' or 'os' operating_system = str( ua[_os]['name']) if "name" in ua[_os] else "-" if 'version' in ua[_os]: operating_system += ' ' + str(ua[_os]['version']) if 'dist' in ua: operating_system += ' ' + str(ua['dist']) browser = str(ua['browser']['name']) if 'browser' in ua else "-" browser_version = str( ua['browser']['version']) if 'browser' in ua else "-" template_val = { "name": name, "email": email, "ip": remote_ip, "city": city, "region": region, "country": country, "coordinates": coordinates, "browser": browser, "browser_version": browser_version, "operating_system": operating_system, "message": message } except Exception as e: logging.error("error getting user agent info: %s" % e) try: subject = _("Contact") + " " + self.app.config.get('app_name') # exceptions for error pages that redirect to contact if exception != "": subject = "{} (Exception error: {})".format(subject, exception) body_path = "emails/contact.txt" body = self.jinja2.render_template(body_path, **template_val) email_url = self.uri_for('taskqueue-send-email') taskqueue.add(url=email_url, params={ 'to': self.app.config.get('contact_recipient'), 'subject': subject, 'body': body, 'sender': self.app.config.get('contact_sender'), }) message = _('Your message was sent successfully.') self.add_message(message, 'success') return self.redirect_to('contact') except (AttributeError, KeyError), e: logging.error('Error sending contact form: %s' % e) message = _('Error sending the message. Please try again later.') self.add_message(message, 'error') return self.redirect_to('contact')