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 from .forms import EditProfileForm, EditProfileAdminForm, ChargeForm, PaymentForm from ..email import send_email from .. import db from ..models import User, Order #PROFILE @uinvoice.route('/profile', methods=['GET', 'POST']) @login_required def profile(): page = { 'title': 'Edit Profile' } currentmail = current_user.email ouruser = User.query.filter_by(email=currentmail).first() db.session.commit() #wallet = "%.2f" % round(ouruser.wallet, 3) #print(wallet) form = EditProfileForm() if form.validate_on_submit(): current_user.name = form.name.data current_user.address = form.address.data current_user.city = form.city.data current_user.postcode = form.postcode.data current_user.country = form.country.data current_user.phone = form.phone.data current_user.org_responsible = form.org_responsible.data current_user.org_bulstat = form.org_bulstat.data current_user.twofactor = form.twofactor.data db.session.add(current_user) db.session.commit() flash('Info Updated!') form.twofactor.data = current_user.twofactor form.name.data = current_user.name form.address.data = current_user.address form.city.data = current_user.city form.postcode.data = current_user.postcode form.country.data = current_user.country form.phone.data = current_user.phone form.org_responsible.data = current_user.org_responsible form.org_bulstat.data = current_user.org_bulstat return render_template('uinvoice/profile.html', page=page, form=form) #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) @uinvoice.route('/documents', methods=['GET']) @login_required def documents(): page = { 'title': 'Order documents' } invoices = Order.query.filter_by(user_id=current_user.pid).order_by(desc(Order.date_created)).all() db.session.commit() return render_template('uinvoice/documents.html', page=page, documents=invoices) @uinvoice.route('/order/', methods=['GET', 'POST']) @login_required def order(document_id): page = { 'title': 'Preview ' + str(document_id) } order = Order.query.filter_by(pid=document_id).first() 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)