diff --git a/app/admin/forms.py b/app/admin/forms.py new file mode 100644 index 0000000..6d7ce52 --- /dev/null +++ b/app/admin/forms.py @@ -0,0 +1,13 @@ +import string +import random +from ..models import User, Role + +from flask_wtf import FlaskForm, RecaptchaField +from wtforms import StringField, PasswordField, BooleanField, SubmitField, SelectField, DecimalField +from wtforms import validators, ValidationError +from wtforms.fields.html5 import EmailField + +class ChargeForm(FlaskForm): + amount = DecimalField('Стойност:', [validators.DataRequired(), validators.NumberRange(min=0, max=6)]) + submit = SubmitField('Зареди') + diff --git a/app/admin/routes.py b/app/admin/routes.py index 3ee9907..ad5c03e 100644 --- a/app/admin/routes.py +++ b/app/admin/routes.py @@ -3,6 +3,8 @@ from flask_login import login_required, login_user, logout_user from flask_sqlalchemy import get_debug_queries from . import admin +from .forms import ChargeForm + from .. import db from ..email import send_email from ..models import User, Role, Deployment, Service, Region, Address, Domain, contact_proxmaster @@ -29,10 +31,23 @@ def after_request(response): @admin.route("/", methods=['GET']) @login_required @admin_required -def index(): - allusers = User.query.all() +def users(): + allusers = User.query.order_by(User.pid.asc()).all() return render_template('admin/users.html', users=allusers) +@admin.route("/charge/", methods=['GET', 'POST']) +@login_required +@admin_required +def charge(user_pid=0): + cuser = User.query.filter_by(pid=user_pid).first() + form = ChargeForm() + if form.validate_on_submit(): + cuser.wallet += form.amount.data + db.session.add(cuser) + db.session.commit() + return redirect(url_for('admin.users')) + return render_template('admin/charge.html', form=form, usr=cuser) + @admin.route("/dashboard/", methods=['GET', 'POST']) @login_required @admin_required diff --git a/app/templates/uinvoice/charge.html b/app/templates/admin/charge.html similarity index 71% rename from app/templates/uinvoice/charge.html rename to app/templates/admin/charge.html index cd29201..5c78a2f 100644 --- a/app/templates/uinvoice/charge.html +++ b/app/templates/admin/charge.html @@ -3,10 +3,6 @@ {% block title %}Зареждане на сметка{% endblock %} {% block page_content %} - -

@@ -19,10 +15,10 @@
Зареждане на сметка
-
+

- {{ form.invoice_amount.label }} {{ form.invoice_amount }}
- {% for error in form.invoice_amount.errors %} + {{ form.charge_amount.label }} {{ form.charge_amount }}
+ {% for error in form.charge_amount.errors %} {{ error }}
{% endfor %}

diff --git a/app/templates/admin/dashboard.html b/app/templates/admin/dashboard.html index 02e8a7f..9c88751 100644 --- a/app/templates/admin/dashboard.html +++ b/app/templates/admin/dashboard.html @@ -119,6 +119,8 @@ addEventListener("DOMContentLoaded", function() {
+ Return to user list
+
Deployments
@@ -244,6 +246,8 @@ addEventListener("DOMContentLoaded", function() {
+ Return to user list
+
diff --git a/app/templates/admin/users.html b/app/templates/admin/users.html index 7d0ebfd..6d2d86d 100644 --- a/app/templates/admin/users.html +++ b/app/templates/admin/users.html @@ -1,8 +1,40 @@ {% extends "base.html" %} {% block page_content %} -
+ +
+
+
Users
+

+ + + + + + + + + + + + + {% for usr in users %} + + + + + + + + + {% endfor %} + +
idemaillast seenlast ipwalletcntrl
{{ usr.pid }}{{ usr.email }}{{ moment(usr.last_seen).fromNow()}}{{ usr.last_ip }}{{ usr.wallet }}Inventory
+ + + + {% endblock %} diff --git a/app/uinvoice/forms.py b/app/uinvoice/forms.py index dbf6490..04f2e7b 100644 --- a/app/uinvoice/forms.py +++ b/app/uinvoice/forms.py @@ -7,10 +7,6 @@ from wtforms import StringField, PasswordField, BooleanField, SubmitField, Selec from wtforms import validators, ValidationError from wtforms.fields.html5 import EmailField -class ChargeForm(FlaskForm): - invoice_amount = DecimalField('Стойност:', [validators.DataRequired(), validators.NumberRange(min=0, max=6)]) - submit = SubmitField('Зареди') - class PaymentForm(FlaskForm): plist = [('paypal', 'PayPal'), ('epay', 'ePay.bg'), ('bank', 'Bank Transfer')] processor = SelectField('Финансов инструмент:', choices=plist) diff --git a/app/uinvoice/routes.py b/app/uinvoice/routes.py index 5e43aa4..b7b3858 100644 --- a/app/uinvoice/routes.py +++ b/app/uinvoice/routes.py @@ -3,7 +3,7 @@ from flask_login import login_required, login_user, logout_user, current_user from sqlalchemy import desc from . import uinvoice -from .forms import ChargeForm, PaymentForm +from .forms import PaymentForm from ..email import send_email from .. import db diff --git a/app/vmanager/routes.py b/app/vmanager/routes.py index 0e4972f..5f7d556 100644 --- a/app/vmanager/routes.py +++ b/app/vmanager/routes.py @@ -122,6 +122,7 @@ def deploy(product_id=None): @vmanager.route("/dashboard", methods=['GET', 'POST']) @login_required def dashboard(): + cuser = current_user deployments = cuser.inv_deployments.order_by(Deployment.date_created.desc()).all() inv_deploycubeids = [] inv_deploynames = []