Ejemplo n.º 1
0
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))
Ejemplo n.º 2
0
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))
Ejemplo n.º 3
0
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))
Ejemplo n.º 4
0
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("<", "&lt;")
        name = name.replace(">", "&gt;")

        subject = subject.replace("<", "&lt;")
        subject = subject.replace(">", "&gt;")

        message = message.replace("<", "&lt;")
        message = message.replace(">", "&gt;")

        # 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'))
Ejemplo n.º 5
0
def tutorial():
    return render_template(
        'tutorial.html',
        page_active='tutorial',
        tracking=tracking.determine_tracking_action(request))
Ejemplo n.º 6
0
def faq():
    return render_template(
        'faq.html',
        page_active='faq',
        tracking=tracking.determine_tracking_action(request))
Ejemplo n.º 7
0
def cookies():
    return render_template(
        'cookies.html',
        page_active='',
        tracking=tracking.determine_tracking_action(request))
Ejemplo n.º 8
0
def about():
    return render_template(
        'about.html',
        page_active='about',
        tracking=tracking.determine_tracking_action(request))
Ejemplo n.º 9
0
def index():
    return render_template(
        'welcome.html',
        page_active='home',
        tracking=tracking.determine_tracking_action(request))