From 0550142d2cc4a75838966ef9b9b2feb4d068148f Mon Sep 17 00:00:00 2001 From: deflax Date: Sun, 17 Dec 2017 18:57:28 +0200 Subject: [PATCH] refactor dashboard --- app/main/routes.py | 19 +++-- app/models.py | 83 ++++++++++--------- app/templates/main/dashboard.html | 16 +--- .../{dashboard_pool.html => vdc_pool.html} | 20 +++++ 4 files changed, 79 insertions(+), 59 deletions(-) rename app/templates/main/{dashboard_pool.html => vdc_pool.html} (79%) diff --git a/app/main/routes.py b/app/main/routes.py index 2770494..033b666 100644 --- a/app/main/routes.py +++ b/app/main/routes.py @@ -57,20 +57,24 @@ def market(group_id=0): @main.route("/dashboard", methods=['GET', 'POST']) @login_required def dashboard(): + sys_regions = Region.query.all() + cuser = current_user + inv_bridges = cuser.inv_bridges.order_by(Bridge.bridge_id.asc()).all() + inv_addresses = cuser.inv_addresses.order_by(Address.ip.asc()).all() + inv_routers = cuser.inv_routers.order_by(Router.date_created.asc()).all() inv_deployments = cuser.inv_deployments.filter_by(deleted=False).order_by(Deployment.date_created.desc()).all() + + regions = {} + for region in sys_regions: + regions[region.pid] = region.description inv_deploycubeids = [] for invcls in inv_deployments: if invcls.user_id == cuser.pid: inv_deploycubeids.extend([invcls.machine_id]) + inv_services = cuser.inv_services.filter_by(deleted=False).order_by(Service.date_last_charge.asc()).all() inv_domains = cuser.inv_domains.filter_by(deleted=False).order_by(Domain.date_created.desc()).all() - inv_addresses = cuser.inv_addresses.order_by(Address.ip.asc()).all() - inv_bridges = cuser.inv_bridges.order_by(Bridge.bridge_id.asc()).all() - sys_regions = Region.query.all() - regions = {} - for region in sys_regions: - regions[region.pid] = region.description #extract rrd and status from the deployments rrd = {} @@ -102,5 +106,6 @@ def dashboard(): flash('Support is notified.'.format(str(unit_id))) 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('main/dashboard.html', rrd=rrd, status=statuses, inv_bridges=inv_bridges, inv_deployments=inv_deployments, inv_services=inv_services, inv_domains=inv_domains, inv_addresses=inv_addresses, region=regions) + + return render_template('main/dashboard.html', sys_regions=sys_regions, inv_bridges=inv_bridges, inv_deployments=inv_deployments, inv_services=inv_services, inv_domains=inv_domains, inv_addresses=inv_addresses, rrd=rrd, status=statuses) diff --git a/app/models.py b/app/models.py index 73781ae..094a1f7 100644 --- a/app/models.py +++ b/app/models.py @@ -1,3 +1,5 @@ +# FAT MODEL + from werkzeug.security import generate_password_hash, check_password_hash from itsdangerous import TimedJSONWebSignatureSerializer as Serializer @@ -226,30 +228,47 @@ def contact_proxmaster(data, method): except: return { 'status': 'UNREACHABLE' } -class Router(db.Model): - __tablename__ = 'routers' +#VDC +class Region(db.Model): + __tablename__ = 'regions' pid = db.Column(db.Integer, primary_key=True) - user_id = db.Column(db.Integer, db.ForeignKey('users.pid')) #FK - date_created = db.Column(db.DateTime, default=datetime.utcnow) - deleted = db.Column(db.Boolean, default=False) + inv_addresses = db.relationship('Address', backref='region', lazy='dynamic') + inv_bridges = db.relationship('Bridge', backref='region', lazy='dynamic') - inv_addresses = db.relationship('Address', backref='router', lazy='dynamic') - - machine_id = db.Column(db.BigInteger) #unit_id + enabled = db.Column(db.Boolean) + name = db.Column(db.String) + description = db.Column(db.String) + extraprice = db.Column(db.Float) class Bridge(db.Model): __tablename__ = 'bridges' pid = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('users.pid')) #FK + region_id = db.Column(db.Integer, db.ForeignKey('regions.pid')) #FK + inv_routers = db.relationship('Router', backref='bridge', lazy='dynamic') + inv_deployments = db.relationship('Deployment', backref='bridge', lazy='dynamic') + + date_created = db.Column(db.DateTime, default=datetime.utcnow) + deleted = db.Column(db.Boolean, default=False) + bridge_id = db.Column(db.String) + +class Router(db.Model): + __tablename__ = 'routers' + pid = db.Column(db.Integer, primary_key=True) + user_id = db.Column(db.Integer, db.ForeignKey('users.pid')) #FK + bridge_id = db.Column(db.Integer, db.ForeignKey('bridges.pid')) #FK + inv_addresses = db.relationship('Address', backref='router', lazy='dynamic') + date_created = db.Column(db.DateTime, default=datetime.utcnow) deleted = db.Column(db.Boolean, default=False) - bridge_id = db.Column(db.String) + machine_id = db.Column(db.BigInteger) #unit_id class Deployment(db.Model): __tablename__ = 'deployments' pid = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('users.pid')) #FK + bridge_id = db.Column(db.Integer, db.ForeignKey('bridges.pid')) #FK date_created = db.Column(db.DateTime, default=datetime.utcnow) deleted = db.Column(db.Boolean, default=False) @@ -267,34 +286,6 @@ class Deployment(db.Model): machine_hdd = db.Column(db.Integer) discount = db.Column(db.Integer) -class Service(db.Model): - __tablename__ = 'services' - pid = db.Column(db.Integer, primary_key=True) #PK - user_id = db.Column(db.Integer, db.ForeignKey('users.pid')) #FK - date_created = db.Column(db.DateTime, default=datetime.utcnow) - deleted = db.Column(db.Boolean, default=False) - - enabled = db.Column(db.Boolean, default=False) - warning = db.Column(db.Boolean, default=False) - date_last_charge = db.Column(db.DateTime) - period = db.Column(db.Integer) - daysleft = db.Column(db.Integer) - - category = db.Column(db.String) - description = db.Column(db.Unicode) - price = db.Column(db.Float) - -class Region(db.Model): - __tablename__ = 'regions' - pid = db.Column(db.Integer, primary_key=True) - enabled = db.Column(db.Boolean) - - inv_addresses = db.relationship('Address', backref='region', lazy='dynamic') - - name = db.Column(db.String) - description = db.Column(db.String) - extraprice = db.Column(db.Float) - class Address(db.Model): __tablename__ = 'address' pid = db.Column(db.Integer, primary_key=True) @@ -330,6 +321,24 @@ class Address(db.Model): else: return mac +#MISC ITEMS +class Service(db.Model): + __tablename__ = 'services' + pid = db.Column(db.Integer, primary_key=True) #PK + user_id = db.Column(db.Integer, db.ForeignKey('users.pid')) #FK + date_created = db.Column(db.DateTime, default=datetime.utcnow) + deleted = db.Column(db.Boolean, default=False) + + enabled = db.Column(db.Boolean, default=False) + warning = db.Column(db.Boolean, default=False) + date_last_charge = db.Column(db.DateTime) + period = db.Column(db.Integer) + daysleft = db.Column(db.Integer) + + category = db.Column(db.String) + description = db.Column(db.Unicode) + price = db.Column(db.Float) + class Domain(db.Model): __tablename__ = 'domains' pid = db.Column(db.Integer, primary_key=True) diff --git a/app/templates/main/dashboard.html b/app/templates/main/dashboard.html index 5f92ac2..0e4a9e4 100644 --- a/app/templates/main/dashboard.html +++ b/app/templates/main/dashboard.html @@ -138,21 +138,7 @@ addEventListener("DOMContentLoaded", function() { {% endif %}
- -
-
-
Device Manager
-

- {% if inv_deployments != [] %} - {% include "main/dashboard_pool.html" %} - - {% else %} - - {% endif %} -

-
-
- + {% include "main/vdc_pool.html" %} {% if inv_domains != [] %}
diff --git a/app/templates/main/dashboard_pool.html b/app/templates/main/vdc_pool.html similarity index 79% rename from app/templates/main/dashboard_pool.html rename to app/templates/main/vdc_pool.html index 97d0d48..3313c8e 100644 --- a/app/templates/main/dashboard_pool.html +++ b/app/templates/main/vdc_pool.html @@ -1,3 +1,8 @@ +
+
+
Device Manager
+

+ {% if inv_deployments != [] %}

{% for deploy in inv_deployments %} {% if deploy.enabled == False %} @@ -99,3 +104,18 @@ {% endfor %}
+ + {% else %} + + {% endif %} +
+
+
+ + {% else %} + + {% endif %} +
+
+ +