From 567b75682bc377d36cd71f0af0f170a04bf2993c Mon Sep 17 00:00:00 2001 From: deflax Date: Mon, 8 May 2017 04:33:42 +0300 Subject: [PATCH] polishing things --- app/__init__.py | 5 ++-- app/auth/routes.py | 37 ----------------------- app/models.py | 45 +++++++++++----------------- app/settings/__init__.py | 2 +- app/settings/routes.py | 9 +++--- app/templates/base.html | 6 ++-- app/templates/nav.html | 2 +- app/templates/vmanager/index.html | 3 ++ app/templates/vmanager/livechat.html | 4 ++- app/uinvoice/routes.py | 10 +++---- app/vmanager/routes.py | 5 ++-- 11 files changed, 45 insertions(+), 83 deletions(-) diff --git a/app/__init__.py b/app/__init__.py index a58ce1b..05f68c2 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -57,14 +57,15 @@ class CustomJSONEncoder(JSONEncoder): app.json_encoder = CustomJSONEncoder +#if app.debug: if not app.debug: import logging from logging.handlers import RotatingFileHandler file_handler = RotatingFileHandler('/home/proxadmin/appserver/proxadmin/log/proxadmin.log', 'a', 1 * 1024 * 1024, 10) - file_handler.setLevel(logging.INFO) + file_handler.setLevel(logging.DEBUG) file_handler.setFormatter(logging.Formatter('%(asctime)s %(levelname)s: %(message)s [in %(pathname)s:%(lineno)d]')) app.logger.addHandler(file_handler) - app.logger.setLevel(logging.INFO) + app.logger.setLevel(logging.DEBUG) app.logger.info('Proxadmin started.') @app.errorhandler(403) diff --git a/app/auth/routes.py b/app/auth/routes.py index 6d35341..118d50b 100644 --- a/app/auth/routes.py +++ b/app/auth/routes.py @@ -56,43 +56,6 @@ def login(): return render_template('auth/login.html', page=page, form=form) -#PROFILE -@auth.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('auth/profile.html', page=page, form=form) @auth.route('/twofactor', methods=['GET', 'POST']) def twofactor(): diff --git a/app/models.py b/app/models.py index b2fa0bc..d18f2ef 100644 --- a/app/models.py +++ b/app/models.py @@ -20,7 +20,6 @@ class Permission: DEPLOY = 0x01 ADMINISTER = 0x80 - class Role(db.Model): __tablename__ = 'roles' pid = db.Column(db.Integer, primary_key=True) @@ -78,7 +77,7 @@ class User(db.Model, UserMixin): org_vat = db.Column(db.Boolean, default=False) org_vatnum = db.Column(db.String(16)) - wallet = db.Column(db.Float) + wallet = db.Column(db.Float, default=0.0) credit = db.Column(db.Float) creditlimit = db.Column(db.Float, default=20.0) @@ -187,7 +186,6 @@ class User(db.Model, UserMixin): def __repr__(self): return '' % self.email - class AnonymousUser(AnonymousUserMixin): def can(self, permissions): return False @@ -197,12 +195,10 @@ class AnonymousUser(AnonymousUserMixin): lm.anonymous_user = AnonymousUser - @lm.user_loader def load_user(user_id): return User.query.get(int(user_id)) - def contact_proxmaster(data, method, cubeid=0): url = current_app.config['PROXMASTER_URL'] data['apikey'] = current_app.config['APIKEY'] @@ -223,7 +219,6 @@ def contact_proxmaster(data, method, cubeid=0): except: return None - #TEMPLATE CLASSES class Product(db.Model): __tablename__ = 'products' @@ -272,7 +267,7 @@ class Product(db.Model): 'cpu': product.cpu, 'mem': product.mem, 'hdd': product.hdd, - 'recipe': product.recipe, + 'recipe': product.recipe } return products @@ -322,6 +317,7 @@ class Transaction(db.Model): user_id = db.Column(db.Integer, db.ForeignKey('users.pid')) #FK date_created = db.Column(db.DateTime, index=True, default=datetime.utcnow) currency = db.Column(db.String, default='BGN') + value = db.Column(db.Float) #PROFORMA INVOICE CLASS class Invoice(db.Model): @@ -361,8 +357,7 @@ class InvoiceItem(db.Model): item_quantity = db.Column(db.Float) item_price = db.Column(db.Float) amount = db.Column(db.Float) - - invoice = db.relationship(Invoice, backref=backref('items', order_by=item_number, cascade="delete")) + invoice = db.relationship(Invoice, backref=db.backref('items', order_by=item_number, cascade="delete")) def total(self): return self.item_quantity * self.item_price @@ -395,17 +390,13 @@ class Deployment(db.Model): hdd_cost = deploy.machine_hdd * current_app.config['HDD_RATIO'] total = cpu_cost + mem_cost + hdd_cost - - if managed_user.wallet - managed_user.credit > managed_user.creditlimit: print('{}> Deployment #{} costs {} today. Credit is now {}'.format(managed_user.email, deploy.machine_id, total, managed_user.credit)) managed_user.credit += total else: - print('{}> Deployment #{} costs {} today. Credit now is {} and its lower than the credit limit {}.'.format(managed_user.email, deploy.machine_id, total, managed_user.credit, managed_user.creditlimit) + print('{}> Deployment #{} costs {} today. Credit now is {} and its lower than the credit limit {}.'.format(managed_user.email, deploy.machine_id, total, managed_user.credit, managed_user.creditlimit)) print('') - if datetime.utcnow.date() == - db.session.commit() - if deploy. + db.session.commit() class Contract(db.Model): __tablename__ = 'contracts' @@ -426,13 +417,13 @@ class Contract(db.Model): for contract in result: managed_user = User.query.get(contract.user_id) db.session.add(contract) - if datetime.utcnow.date() > (contract.date_expire - timedelta(days=10)): - if contract.enabled == True: - print('{}> Contract {} will expire in 10 days at {}. Creating new order...'.format(managed_user.email, contract.pid, contract.date_expire)) - current_service = Service.query.get(int(contract.product_id)) - order = Order(user_id=managed_user.id, units=contract.units, unitvalue=(current_service.unitprice * contract.units), description=current_service.name) - db.session.add(order) - contract.data_expire = datetime.utcnow.date() + timedelta(days=30) + #if datetime.utcnow.date() > (contract.date_expire - timedelta(days=10)): + if contract.enabled == True: + print('{}> Contract {} will expire in 10 days at {}. Creating new order...'.format(managed_user.email, contract.pid, contract.date_expire)) + current_service = Service.query.get(int(contract.product_id)) + transaction = Transaction(user_id=managed_user.id, units=contract.units, unitvalue=(current_service.unitprice * contract.units), description=current_service.name) + db.session.add(transaction) + contract.data_expire = datetime.utcnow.date() + timedelta(days=30) db.session.commit() return True @@ -453,11 +444,11 @@ class Domain(db.Model): for domain in result: managed_user = User.query.get(domain.user_id) db.session.add(domain) - if datetime.utcnow.date() > (domain.date_expire - timedelta(days=60)): - if domain.enabled == True: - print('{}> Domain {} will expire in 60 days at {}. Creating new order...'.format(managed_user.email, domain.fqdn, domain.date_expire)) - order = Order(user_id=managed_user.id, unitvalue=25, description=domain.fqdn) - db.session.add(order) + #if datetime.utcnow.date() > (domain.date_expire - timedelta(days=60)): + if domain.enabled == True: + print('{}> Domain {} will expire in 60 days at {}. Creating new order...'.format(managed_user.email, domain.fqdn, domain.date_expire)) + transaction = Transaction(user_id=managed_user.id, unitvalue=25, description=domain.fqdn) + db.session.add(transaction) db.session.commit() return True diff --git a/app/settings/__init__.py b/app/settings/__init__.py index a90b227..709726b 100644 --- a/app/settings/__init__.py +++ b/app/settings/__init__.py @@ -1,3 +1,3 @@ from flask import Blueprint -uinvoice = Blueprint('settings', __name__) +settings = Blueprint('settings', __name__) from . import routes diff --git a/app/settings/routes.py b/app/settings/routes.py index 6b293ed..c1e0d64 100644 --- a/app/settings/routes.py +++ b/app/settings/routes.py @@ -3,11 +3,12 @@ from flask_login import login_required, login_user, logout_user, current_user from sqlalchemy import desc from . import settings -from .forms import EditProfileForm, EditProfileAdminForm, ChargeForm, PaymentForm +from .forms import EditProfileForm, EditProfileAdminForm from ..email import send_email from .. import db -from ..models import User, Order +from ..models import User +import sys #PROFILE @settings.route('/profile', methods=['GET', 'POST']) @@ -19,8 +20,8 @@ def profile(): ouruser = User.query.filter_by(email=currentmail).first() db.session.commit() - #wallet = "%.2f" % round(ouruser.wallet, 3) - #print(wallet) + wallet = "%.2f" % round(ouruser.wallet, 3) + current_app.logger.info('wallet: ' + wallet) form = EditProfileForm() if form.validate_on_submit(): diff --git a/app/templates/base.html b/app/templates/base.html index 406c4b0..ffcc332 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -7,6 +7,10 @@ {% block html_attribs %} lang="en"{% endblock %} +{% block head %} +{{ super() }} +{% endblock %} + {% block styles %} {{ super() }} @@ -16,7 +20,6 @@ {% block scripts %} {{ super() }} - {% endblock %} @@ -34,7 +37,6 @@ {% endfor %} {% block page_content %}{% endblock %} - {% endblock %} {% block footer %} diff --git a/app/templates/nav.html b/app/templates/nav.html index 27bcc43..41995af 100644 --- a/app/templates/nav.html +++ b/app/templates/nav.html @@ -20,7 +20,7 @@