Files @ 9bfee64f690e
Branch filter:

Location: FVDE/ennstatus/ennstatus/donate/views.py

Dennis Fink
First release
from flask import (Blueprint, render_template, request,
                   redirect, url_for, current_app)

from ennstatus.donate.forms import DateForm
from ennstatus.donate.functions import load_csv, get_choices

donate_page = Blueprint('donate', __name__)


@donate_page.route('/')
def index():
    return render_template('donate/index.html')


@donate_page.route('/wiretransfer')
def wiretransfer():
    return render_template('donate/wiretransfer.html')


@donate_page.route('/snailmail')
def snailmail():
    return render_template('donate/snailmail.html')


@donate_page.route('/paypal')
def paypal():
    return render_template('donate/paypal.html')


@donate_page.route('/bitcoin')
def bitcoin():
    return render_template('donate/bitcoin.html')


@donate_page.route('/flattr')
def flattr():
    return render_template('donate/flattr.html')


@donate_page.route('/received',
                   methods=('GET', 'POST'))
def received():

    current_app.logger.info('Handling received')
    form = DateForm()

    current_app.logger.debug('Creating choices')
    choices = [name for name in get_choices()]
    choices.sort()
    form.date.choices = [(name, name) for name in choices]

    if not choices:
        current_app.logger.warn('No donations found!')
        return render_template('donate/received.html',
                               form=form, csv_file=None,
                               date=None)

    if request.method == 'POST':
        current_app.logger.debug('Validating form')
        if form.validate_on_submit():
            date = form.date.data
            return redirect(url_for('donate.received', date=date))
    else:
        if 'date' in request.args:
            date = request.args['date']
            if request.args['date'] in choices:
                current_app.logger.info('Showing date %s' % date)
                form.date.data = date
                csv_file = load_csv(date)
            else:
                current_app.logger.warn('Date %s not found' % date)
                return ('Date %s not found!', 500,
                        {'Content-Type': 'text/plain'})
        else:
            current_app.logger.info('Showing last date %s' % choices[-1])
            form.date.data = choices[-1]
            csv_file = load_csv(choices[-1])
            date = choices[-1]

        current_app.logger.info('Return result')
        return render_template('donate/received.html',
                               form=form, csv_file=csv_file,
                               date=date)