def make_cartogram_by_name(map_name): if map_name not in cartogram_handlers: return Response('Error', status=500) cartogram_handlers_select = [] for key, handler in cartogram_handlers.items(): for selector_name in handler.selector_names(): cartogram_handlers_select.append({ 'id': key, 'display_name': selector_name }) cartogram_handlers_select.sort(key=lambda h: h['display_name']) return render_template( 'new_index.html', page_active='cartogram', cartogram_url=url_for('cartogram'), cartogramui_url=url_for('cartogram_ui'), getprogress_url=url_for('getprogress'), cartogram_data_dir=url_for('static', filename='cartdata'), cartogram_handlers=cartogram_handlers_select, default_cartogram_handler=map_name, cartogram_version=settings.VERSION, tracking=tracking.determine_tracking_action(request))
def cartogram_by_key(string_key): if not settings.USE_DATABASE: return Response('Not found', status=404) cartogram_entry = CartogramEntry.query.filter_by( string_key=string_key).first_or_404() if cartogram_entry.handler not in cartogram_handlers: return Response('Error', status=500) cartogram_handlers_select = [{ 'id': key, 'display_name': handler.get_name() } for key, handler in cartogram_handlers.items()] return render_template( 'new_cartogram.html', page_active='cartogram', cartogram_url=url_for('cartogram'), cartogramui_url=url_for('cartogram_ui'), getprogress_url=url_for('getprogress'), cartogram_data_dir=url_for('static', filename='cartdata'), cartogram_handlers=cartogram_handlers_select, default_cartogram_handler=cartogram_entry.handler, cartogram_data=cartogram_entry.cartogram_data, cartogramui_data=cartogram_entry.cartogramui_data, cartogram_version=settings.VERSION, tracking=tracking.determine_tracking_action(request))
def cartogram_embed_by_map(map_name): if map_name not in cartogram_handlers: return Response('Error', status=500) return render_template( 'embed.html', page_active='cartogram', cartogram_url=url_for('cartogram'), cartogramui_url=url_for('cartogram_ui'), getprogress_url=url_for('getprogress'), cartogram_data_dir=url_for('static', filename='cartdata'), map_name=map_name, cartogram_version=settings.VERSION, tracking=tracking.determine_tracking_action(request))
def contact(): if request.method == 'GET': csrf_token = get_random_string(50) session['csrf_token'] = csrf_token captcha = custom_captcha.generate_captcha() session['captcha_hashed'] = captcha['captcha_hashed'] return render_template( 'contact.html', page_active='contact', name="", message="", email_address="", subject="", csrf_token=csrf_token, tracking=tracking.determine_tracking_action(request), captcha_image=captcha['captcha_image'], captcha_audio=captcha['captcha_audio']) else: name = request.form.get('name', '') email_address = request.form.get('email', '') subject = request.form.get('subject', '') message = request.form.get('message', '') csrf = request.form.get('csrftoken', '') captcha = custom_captcha.generate_captcha() if 'csrf_token' not in session: session['captcha_hashed'] = captcha['captcha_hashed'] flash('Invalid CSRF token.', 'danger') csrf_token = get_random_string(50) session['csrf_token'] = csrf_token return render_template( 'contact.html', page_active='contact', name=name, message=message, email_address=email_address, subject=subject, csrf_token=csrf_token, tracking=tracking.determine_tracking_action(request), captcha_image=captcha['captcha_image'], captcha_audio=captcha['captcha_audio']) if session['csrf_token'] != csrf or len( session['csrf_token'].strip()) < 1: session['captcha_hashed'] = captcha['captcha_hashed'] flash('Invalid CSRF token.', 'danger') csrf_token = get_random_string(50) session['csrf_token'] = csrf_token return render_template( 'contact.html', page_active='contact', name=name, message=message, email_address=email_address, subject=subject, csrf_token=csrf_token, tracking=tracking.determine_tracking_action(request), captcha_image=captcha['captcha_image'], captcha_audio=captcha['captcha_audio']) csrf_token = get_random_string(50) session['csrf_token'] = csrf_token if len(name.strip()) < 1 or len(subject.strip()) < 1 or len( message.strip()) < 1: session['captcha_hashed'] = captcha['captcha_hashed'] flash('You must fill out all of the form fields', 'danger') return render_template( 'contact.html', page_active='contact', name=name, message=message, email_address=email_address, subject=subject, csrf_token=csrf_token, tracking=tracking.determine_tracking_action(request), captcha_image=captcha['captcha_image'], captcha_audio=captcha['captcha_audio']) if not validate_email.validate_email(email_address): session['captcha_hashed'] = captcha['captcha_hashed'] flash('You must enter a valid email address.', 'danger') return render_template( 'contact.html', page_active='contact', name=name, message=message, email_address=email_address, subject=subject, csrf_token=csrf_token, tracking=tracking.determine_tracking_action(request), captcha_image=captcha['captcha_image'], captcha_audio=captcha['captcha_audio']) if 'captcha_hashed' not in session: session['captcha_hashed'] = captcha['captcha_hashed'] flash('Please retry completing the CAPTCHA.', 'danger') csrf_token = get_random_string(50) session['csrf_token'] = csrf_token return render_template( 'contact.html', page_active='contact', name=name, message=message, email_address=email_address, subject=subject, csrf_token=csrf_token, tracking=tracking.determine_tracking_action(request), captcha_image=captcha['captcha_image'], captcha_audio=captcha['captcha_audio']) if not custom_captcha.validate_captcha(request.form.get("captcha", ""), session['captcha_hashed']): session['captcha_hashed'] = captcha['captcha_hashed'] flash('Please retry completing the CAPTCHA.', 'danger') return render_template( 'contact.html', page_active='contact', name=name, message=message, email_address=email_address, subject=subject, csrf_token=csrf_token, tracking=tracking.determine_tracking_action(request), captcha_image=captcha['captcha_image'], captcha_audio=captcha['captcha_audio']) # Escape all of the variables: name = name.replace("<", "<") name = name.replace(">", ">") subject = subject.replace("<", "<") subject = subject.replace(">", ">") message = message.replace("<", "<") message = message.replace(">", ">") # Generate the message body message_body = """A message was received from the go-cart.io contact form. Name: {} Email: {} Subject: {} Message: {}""".format(name, email_address, subject, message) mime_message = email.mime.text.MIMEText(message_body) mime_message['Subject'] = "go-cart.io Contact Form: " + subject mime_message['From'] = settings.SMTP_FROM_EMAIL mime_message['To'] = settings.SMTP_DESTINATION try: with smtplib.SMTP(settings.SMTP_HOST, settings.SMTP_PORT) as smtp: if settings.SMTP_AUTHENTICATION_REQUIRED: smtp.login(settings.SMTP_USER, settings.SMTP_PASSWORD) smtp.send_message(mime_message) smtp.quit() # For some reason connect doesn't catch the socket error # *sigh* except (smtplib.SMTPException, socket.gaierror): session['captcha_hashed'] = captcha['captcha_hashed'] flash('There was an error sending your message.', 'danger') return render_template( 'contact.html', page_active='contact', name=name, message=message, email_address=email_address, subject=subject, csrf_token=csrf_token, tracking=tracking.determine_tracking_action(request), captcha_image=captcha['captcha_image'], captcha_audio=captcha['captcha_audio']) session['captcha_hashed'] = "" flash('Your message was successfully sent.', 'success') return redirect(url_for('contact'))
def tutorial(): return render_template( 'tutorial.html', page_active='tutorial', tracking=tracking.determine_tracking_action(request))
def faq(): return render_template( 'faq.html', page_active='faq', tracking=tracking.determine_tracking_action(request))
def cookies(): return render_template( 'cookies.html', page_active='', tracking=tracking.determine_tracking_action(request))
def about(): return render_template( 'about.html', page_active='about', tracking=tracking.determine_tracking_action(request))
def index(): return render_template( 'welcome.html', page_active='home', tracking=tracking.determine_tracking_action(request))