From 9350e875bfe47c17af64fc1e4ea341a084def546 Mon Sep 17 00:00:00 2001 From: deflax Date: Wed, 7 Feb 2018 18:19:55 +0200 Subject: [PATCH] add order panel to regular and admin dashboards --- app/admin/forms.py | 9 +++++- app/admin/routes.py | 6 ++-- app/panel/routes.py | 11 ++++--- app/settings/forms.py | 9 +++--- app/templates/panel/dashboard.html | 11 +++++-- app/templates/panel/order.html | 48 ----------------------------- app/templates/panel/services.html | 1 - app/templates/panel/vdc_pool.html | 3 ++ app/templates/settings/profile.html | 11 +++---- 9 files changed, 39 insertions(+), 70 deletions(-) diff --git a/app/admin/forms.py b/app/admin/forms.py index 63626d7..842349b 100644 --- a/app/admin/forms.py +++ b/app/admin/forms.py @@ -7,7 +7,14 @@ from ..models import User, Role, Region 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 +from wtforms.fields.html5 import EmailField, DecimalRangeField + +class OrderForm(FlaskForm): + cpu = DecimalRangeField('Processor Cores', default=2) + memory = DecimalRangeField('Memory', default=512) + storage = DecimalRangeField('Storage', default=20) + alias = StringField('Machine Alias:', [validators.Regexp(message='ex.: myservice1.com, myservice2.local', regex='^[a-zA-Z0-9][a-zA-Z0-9-_]{0,61}[a-zA-Z0-9]{0,1}\.([a-zA-Z]{1,6}|[a-zA-Z0-9-]{1,30}\.[a-zA-Z]{2,3})$'), validators.Length(6,64)]) + submit = SubmitField('Create') class ChargeForm(FlaskForm): amount = DecimalField('Стойност:', [validators.DataRequired(), validators.NumberRange(min=1, max=500)]) diff --git a/app/admin/routes.py b/app/admin/routes.py index f1d4b44..1460e73 100644 --- a/app/admin/routes.py +++ b/app/admin/routes.py @@ -157,6 +157,9 @@ def transaction(user_pid=0): @fresh_login_required @admin_required def dashboard(user_pid=0): + form = OrderForm() + sys_regions = Region.query.all() + cuser = User.query.filter_by(pid=user_pid).first() inv_deployments = cuser.inv_deployments.filter_by(deleted=False).order_by(Deployment.date_created.desc()).all() @@ -206,6 +209,5 @@ def dashboard(user_pid=0): status = { unit_id : query['status'] } statuses.update(status) current_app.logger.info('[{}] Enabled deployments: {}, services: {}, domains: {}, addresses: {}'.format(cuser.email, inv_deployments_list, inv_services_list, inv_domains_list, inv_addresses_list)) - return render_template('panel/dashboard.html', rrd=rrd, status=statuses, inv_deployments=inv_deployments, inv_services=inv_services, inv_domains=inv_domains, inv_addresses=inv_addresses, regions=regions) - + return render_template('panel/dashboard.html', form=form, sys_regions=sys_regions, inv_deployments=inv_deployments, inv_services=inv_services, inv_domains=inv_domains, inv_addresses=inv_addresses, rrd=rrd, status=statuses, regions=regions) diff --git a/app/panel/routes.py b/app/panel/routes.py index 6d32964..e05162a 100644 --- a/app/panel/routes.py +++ b/app/panel/routes.py @@ -17,17 +17,18 @@ def after_request(response): current_app.logger.warning('Slow query: %s\nParameters: %s\nDuration: %fs\nContext: %s\n' % (query.statement, query.parameters, query.duration, query.context)) return response -@panel.route("/order", methods=['GET', 'POST']) +@panel.route("/submitorder", methods=['POST']) +@login_required def order(): - form = OrderForm() if form.validate_on_submit(): - return redirect('main.index') - return render_template('panel/order.html', form=form) + pass + return redirect('main.index') #DASHBOARD @panel.route("/dashboard", methods=['GET', 'POST']) @login_required def dashboard(): + form = OrderForm() sys_regions = Region.query.all() cuser = current_user @@ -77,5 +78,5 @@ def dashboard(): send_email(current_app.config['MAIL_USERNAME'], 'Cube {} is unreachable'.format(unit_id), 'vmanager/email/adm_unreachable', user=current_user, unit_id=unit_id, error=str(e)) - return render_template('panel/dashboard.html', sys_regions=sys_regions, inv_deployments=inv_deployments, inv_services=inv_services, inv_domains=inv_domains, inv_addresses=inv_addresses, rrd=rrd, status=statuses, regions=regions) + return render_template('panel/dashboard.html', form=form, sys_regions=sys_regions, inv_deployments=inv_deployments, inv_services=inv_services, inv_domains=inv_domains, inv_addresses=inv_addresses, rrd=rrd, status=statuses, regions=regions) diff --git a/app/settings/forms.py b/app/settings/forms.py index 22f9ab3..16f07d2 100644 --- a/app/settings/forms.py +++ b/app/settings/forms.py @@ -26,14 +26,13 @@ class EditProfileForm(FlaskForm): org_regaddress = StringField('Company Address:') org_responsible = StringField('Accountable Person (optional):') org_vatnum = StringField('VAT Number:') - twofactor = BooleanField('2-factor authentication') - submit = SubmitField('Обнови') - + twofactor = BooleanField('Enable 2-factor authentication') + submit = SubmitField('Update') class EditProfileAdminForm(FlaskForm): email = StringField('Електроннa поща (логин):', [validators.DataRequired(), validators.Length(1, 64), validators.Email()]) - confirmed = BooleanField('Активиран') - role = SelectField('Роля', coerce=int) + confirmed = BooleanField('Activated') + role = SelectField('Role', coerce=int) name = StringField('Лице за контакт:', [validators.DataRequired(), validators.Length(3, 60)]) address = StringField('Адрес:', [validators.DataRequired(), validators.Length(2, 50)]) diff --git a/app/templates/panel/dashboard.html b/app/templates/panel/dashboard.html index c0bc5e2..af1287f 100644 --- a/app/templates/panel/dashboard.html +++ b/app/templates/panel/dashboard.html @@ -88,7 +88,6 @@ addEventListener("DOMContentLoaded", function() {
Services
-
{% include "panel/services.html" %}
@@ -101,7 +100,6 @@ addEventListener("DOMContentLoaded", function() {
Domains
-
{% include "panel/domains.html" %}
@@ -149,5 +147,14 @@ addEventListener("DOMContentLoaded", function() {
+
+
+
Create new item
+
+ {% include "panel/order.html" %} +
+
+
+ {% endblock %} diff --git a/app/templates/panel/order.html b/app/templates/panel/order.html index e34b98b..041a743 100644 --- a/app/templates/panel/order.html +++ b/app/templates/panel/order.html @@ -1,59 +1,11 @@ -{% extends "base.html" %} - -{% block head %} -{{ super() }} - -{% endblock %} - -{% block title %}Activate deployment{% endblock %} - {% block page_content %} - -
- -
-
-
Order new deployment
-
-
{{ form.cpu.label }} {{ form.cpu(min=2, max=16, step=2) }}
{{ form.memory.label }} {{ form.memory(min=512, max=16384, step=512) }}
{{ form.storage.label }} {{ form.storage(min=10, max=100, step=10) }}
- -
Total: "
-

{{ form.csrf_token() }} {{ form.submit }}

- -
-
-
- -
- {% endblock %} diff --git a/app/templates/panel/services.html b/app/templates/panel/services.html index 6be8e81..93533bf 100644 --- a/app/templates/panel/services.html +++ b/app/templates/panel/services.html @@ -37,5 +37,4 @@
- {% endblock %} diff --git a/app/templates/panel/vdc_pool.html b/app/templates/panel/vdc_pool.html index da7c9b2..245271e 100644 --- a/app/templates/panel/vdc_pool.html +++ b/app/templates/panel/vdc_pool.html @@ -102,4 +102,7 @@ {% else %} {% endif %} +
+ + {% endblock %} diff --git a/app/templates/settings/profile.html b/app/templates/settings/profile.html index 82f3e31..9d2461d 100644 --- a/app/templates/settings/profile.html +++ b/app/templates/settings/profile.html @@ -129,15 +129,14 @@ $("#{{ form.org_account.id }}").click(function() {
-
Допълнителна защита на акаунта (2-Factor Authentication)
+
2-Factor Authentication

-

За да използвате тази функция изпълнете следните стъпки:
- 1. Моля инсталирайте FreeOTP на вашият смартфон. iTunes | Google Play
- 2. Сканирайте с помоща на приложението вашия QR код. Той е равносилен на допълнителна парола и не трябва да бъде показван или изгубван
-
- 3. Маркирайте отметката и обновете профила. Не губете своя QR код.

+

1. Please install FreeOTP on your mobile device. iTunes | Google Play
+ 2. Scan using the application your QR code.
+
+ 3. After the code is properly loaded in the FreeOTP app, you may activate the 2FA login with the following checkbox:

{{ form.twofactor }} {{ form.twofactor.label }}