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)