2017-03-08 13:53:09 -05:00
from flask import render_template , redirect , request , url_for , flash , session , abort , current_app
from flask_login import login_required , login_user , logout_user , current_user
from sqlalchemy import desc
from . import uinvoice
2017-06-04 11:22:59 -04:00
from . forms import PaymentForm
2017-03-08 13:53:09 -05:00
from . . email import send_email
from . . import db
2017-06-10 23:26:10 -04:00
from . . models import User , Transaction
2017-03-08 13:53:09 -05:00
#INVOICES
#@uinvoice.route('/charge', methods=['GET', 'POST'])
#@login_required
#def charge():
# """ generate new invoice based on user request """
# unpaid_invoices = Order.query.filter_by(user_id=current_user.pid).filter_by(paid=False).all()
# if unpaid_invoices != []:
# flash('You have unpaid invoices')
# return redirect(url_for('uinvoice.documents'))
# page = { 'title': 'Charge Funds' }
# form = ChargeForm()
# if form.validate_on_submit():
# newinvoice = Order(amount=form.invoice_amount.data, user_id=current_user.pid)
# db.session.add(newinvoice)
# db.session.commit()
# return redirect(url_for('uinvoice.documents'))
# return render_template('uinvoice/charge.html', page=page, form=form)
2017-06-10 23:26:10 -04:00
@uinvoice.route ( ' /transactions ' , methods = [ ' GET ' ] )
2017-03-08 13:53:09 -05:00
@login_required
2017-06-10 23:26:10 -04:00
def transactions ( ) :
page = { ' title ' : ' Payment Transaction ' }
transactions = Transaction . query . filter_by ( user_id = current_user . pid ) . order_by ( Transaction . date_created . asc ( ) ) . all ( )
translist = [ ]
for tr in transactions :
2017-06-10 23:31:14 -04:00
translist . insert ( 0 , tr . value )
2017-06-10 23:26:10 -04:00
return render_template ( ' uinvoice/transactions.html ' , page = page , transactions = transactions , translist = translist )
2017-03-08 13:53:09 -05:00
@uinvoice.route ( ' /order/<int:document_id> ' , methods = [ ' GET ' , ' POST ' ] )
@login_required
def order ( document_id ) :
page = { ' title ' : ' Preview ' + str ( document_id ) }
2017-06-10 23:26:10 -04:00
order = Transaction . query . filter_by ( pid = document_id ) . first ( )
2017-03-08 13:53:09 -05:00
db . session . commit ( )
#check if document_id is owned by you.
try :
if order . user_id != current_user . pid :
print ( ' WARNING: user {} violates order {} ' . format ( current_user . pid , order . pid ) )
abort ( 404 )
except :
abort ( 404 )
form = PaymentForm ( )
if form . validate_on_submit ( ) :
#TODO: contact payment processor
send_email ( current_app . config [ ' MAIL_USERNAME ' ] , current_user . email + ' plati ' + str ( order . units * order . unitvalue ) + ' v koshnicata. ' , ' uinvoice/email/adm_payment ' , user = current_user , order = order )
order . paid = True
return redirect ( url_for ( ' uinvoice.documents ' ) )
#except:
# abort(404)
return render_template ( ' uinvoice/invoice.html ' , page = page , form = form , document = invoice , document_id = document_id )