From 500b12dd28e8ddb978d4cd65130900a35d49c3e8 Mon Sep 17 00:00:00 2001 From: deflax Date: Mon, 26 Jun 2017 17:31:30 +0300 Subject: [PATCH] filter enabled items --- app/admin/routes.py | 45 +++++++------- app/models.py | 4 +- app/templates/admin/admin_tasks.html | 6 +- app/templates/main/terms.html | 19 ++++-- app/vmanager/routes.py | 88 ++++++++++------------------ manage.py | 32 ++-------- 6 files changed, 77 insertions(+), 117 deletions(-) diff --git a/app/admin/routes.py b/app/admin/routes.py index 2d2e7ad..b35b963 100644 --- a/app/admin/routes.py +++ b/app/admin/routes.py @@ -75,32 +75,29 @@ def charge(user_pid=0): @admin_required def dashboard(user_pid=0): cuser = User.query.filter_by(pid=user_pid).first() - - deployments = cuser.inv_deployments.order_by(Deployment.date_created.desc()).all() + inv_deployments = cuser.inv_deployments.filter_by(enabled=True).order_by(Deployment.date_created.desc()) inv_deploycubeids = [] - inv_deploynames = [] - for invcls in deployments: - if invcls.user_id == cuser.pid and invcls.enabled == True: - inv_deploycubeids.extend([invcls.machine_id]) - inv_deploynames.extend([invcls.machine_alias]) + inv_deployments_list = [] + for invcls in inv_deployments: + inv_deploycubeids.extend([invcls.machine_id]) + inv_deployments_list.extend([invcls.machine_alias]) - services = cuser.inv_services.order_by(Service.date_created.desc()).all() - inv_services = [] - for invcls in services: - if invcls.user_id == cuser.pid and invcls.enabled == True: - inv_services.extend([invcls.description]) - - domains = cuser.inv_domains.order_by(Domain.date_created.desc()).all() - inv_domains = [] - for invcls in domains: - if invcls.user_id == cuser.pid and invcls.enabled == True: - inv_domains.extend([invcls.fqdn]) + inv_services = cuser.inv_services.filter_by(enabled=True).order_by(Service.date_last_charge.asc()) + inv_services_list = [] + for invcls in inv_services: + inv_services_list.extend([invcls.description]) - addresses = cuser.inv_addresses.order_by(Address.ip.asc()).all() - inv_addresses = [] - for invcls in addresses: + inv_domains = cuser.inv_domains.filter_by(enabled=True).order_by(Domain.date_created.desc()) + inv_domains_list = [] + for invcls in inv_domains: if invcls.user_id == cuser.pid and invcls.enabled == True: - inv_addresses.extend([invcls.ip]) + inv_domains_list.extend([invcls.fqdn]) + + inv_addresses = cuser.inv_addresses.filter_by(enabled=True).order_by(Address.ip.asc()) + inv_addresses_list = [] + for invcls in inv_addresses: + if invcls.user_id == cuser.pid and invcls.enabled == True: + inv_addresses_list.extend([invcls.ip]) #extract rrd and status from the deployments rrd = {} @@ -124,8 +121,8 @@ def dashboard(user_pid=0): flash('Deploy #{} unreachable. Support is notified'.format(str(cubeid))) send_email(current_app.config['MAIL_USERNAME'], 'Cube {} is unreachable'.format(cubeid), 'vmanager/email/adm_unreachable', user=cuser, cubeid=cubeid ) - current_app.logger.info('[{}] deployments: {}, services: {}, domains: {}, services: {}'.format(cuser.email, inv_deploynames, inv_services, inv_domains, inv_addresses )) - return render_template('vmanager/dashboard.html', rrd=rrd, status=statuses, inv_deployments=deployments, inv_services=services, inv_domains=domains, inv_addresses=addresses) + current_app.logger.info('[ADMIN] {} deployments: {}, services: {}, domains: {}, services: {}'.format(cuser.email, inv_deployments_list, inv_services_list, inv_domains_list, inv_addresses_list )) + return render_template('vmanager/dashboard.html', rrd=rrd, status=statuses, inv_deployments=inv_deployments, inv_services=inv_services, inv_domains=inv_domains, inv_addresses=inv_addresses) @admin.route("/listtransactions", methods=['GET']) @login_required diff --git a/app/models.py b/app/models.py index dcdd6d1..f1e7ebc 100644 --- a/app/models.py +++ b/app/models.py @@ -232,7 +232,7 @@ class Service(db.Model): date_created = db.Column(db.DateTime, index=True, default=datetime.utcnow) date_last_charge = db.Column(db.DateTime) period = db.Column(db.Integer) - enabled = db.Column(db.Boolean) + enabled = db.Column(db.Boolean, default=False) category = db.Column(db.String(64)) description = db.Column(db.Unicode(128)) @@ -320,7 +320,7 @@ class Address(db.Model): class Domain(db.Model): __tablename__ = 'domains' pid = db.Column(db.Integer, primary_key=True) - enabled = db.Column(db.Boolean) + enabled = db.Column(db.Boolean, default=False) user_id = db.Column(db.Integer, db.ForeignKey('users.pid')) #FK date_created = db.Column(db.DateTime, index=True, default=datetime.utcnow) diff --git a/app/templates/admin/admin_tasks.html b/app/templates/admin/admin_tasks.html index 90af9be..79d2261 100644 --- a/app/templates/admin/admin_tasks.html +++ b/app/templates/admin/admin_tasks.html @@ -2,9 +2,9 @@
Admin Pages
- - - + + +
diff --git a/app/templates/main/terms.html b/app/templates/main/terms.html index 9c8c1d3..c38c741 100644 --- a/app/templates/main/terms.html +++ b/app/templates/main/terms.html @@ -1,12 +1,17 @@ {% extends "base.html" %} {% block page_content %} -

Правила и Условия

-
- -
-
+ +
+
+
Terms of Service
+

+

+ +
+ +

Правила и Условия

I. ОСНОВНИ ДЕФИНИЦИИ:

Чл.1 (1) Информация съгласно Закона за електронната търговия и Закона за защита на потребителите:

@@ -70,6 +75,10 @@

Забранено е разпространението, съхранението или излагането на данни, материали или информация, които нарушават законите на Република България и/или законите на други държави. Това включва, но не се изчерпва с: материали, защитени от законите за авторски права; материали, които са заплашителни или нецензурни; материали, които са предназначени за лица над 18 години („само за възрастни“); материали, защитени като фирмена тайна или с друг статут ограничаващ тяхното публично разпространение.

Потребителя се задължава да плати обезщетение и поеме вината при използване на услугите.

Използването на услугите за нарушаване на защитени материали и търговски марки е забранено. Това включва, но не се изчерпва с неоторизирано копиране на музика, книги, снимки и всякакви други защитени продукти. Използването на акаунта за продаване на фалшификати на регистрирани търговски марки ще доведе до незабавното изтриване на потребителския акаунт. Ако се установи, че акаунта на потребителя нарушава други запазени права то достъпа до защитените материали ще бъде преустановен. Всеки потребителски акаунт хванат в повторно нарушение ще бъде спрян и/или изтрит от сървърите на доставчика. Ако смятате, че Вашите запазени права са нарушени може да пишете до доставчика на адрес с необходимата информация.

+ +
+
+
{% endblock %} diff --git a/app/vmanager/routes.py b/app/vmanager/routes.py index 191a604..50ee9bc 100644 --- a/app/vmanager/routes.py +++ b/app/vmanager/routes.py @@ -123,31 +123,30 @@ def deploy(product_id=None): @login_required def dashboard(): cuser = current_user - deployments = cuser.inv_deployments.order_by(Deployment.date_created.desc()).all() - inv_deploycubeids = [] - inv_deploynames = [] - for invcls in deployments: - if invcls.user_id == cuser.pid and invcls.enabled == True: - inv_deploycubeids.extend([invcls.machine_id]) - inv_deploynames.extend([invcls.machine_alias]) + + inv_deployments = cuser.inv_deployments.filter_by(enabled=True).order_by(Deployment.date_created.desc()) + inv_deploycubeids = [] + inv_deployments_list = [] + for invcls in inv_deployments: + inv_deploycubeids.extend([invcls.machine_id]) + inv_deployments_list.extend([invcls.machine_alias]) - services = cuser.inv_services.order_by(Service.date_last_charge.asc()).all() - inv_services = [] - for invcls in services: - if invcls.user_id == cuser.pid and invcls.enabled == True: - inv_services.extend([invcls.description]) + inv_services = cuser.inv_services.filter_by(enabled=True).order_by(Service.date_last_charge.asc()) + inv_services_list = [] + for invcls in inv_services: + inv_services_list.extend([invcls.description]) - domains = cuser.inv_domains.order_by(Domain.date_created.desc()).all() - inv_domains = [] - for invcls in domains: + inv_domains = cuser.inv_domains.filter_by(enabled=True).order_by(Domain.date_created.desc()) + inv_domains_list = [] + for invcls in inv_domains: if invcls.user_id == cuser.pid and invcls.enabled == True: - inv_domains.extend([invcls.fqdn]) - - addresses = cuser.inv_addresses.order_by(Address.ip.asc()).all() - inv_addresses = [] - for invcls in addresses: + inv_domains_list.extend([invcls.fqdn]) + + inv_addresses = cuser.inv_addresses.filter_by(enabled=True).order_by(Address.ip.asc()) + inv_addresses_list = [] + for invcls in inv_addresses: if invcls.user_id == cuser.pid and invcls.enabled == True: - inv_addresses.extend([invcls.ip]) + inv_addresses_list.extend([invcls.ip]) #extract rrd and status from the deployments rrd = {} @@ -174,41 +173,15 @@ def dashboard(): send_email(current_app.config['MAIL_USERNAME'], 'Cube {} is unreachable'.format(cubeid), 'vmanager/email/adm_unreachable', user=current_user, cubeid=cubeid ) - #current_app.logger.info('[{}] deployments: {}, services: {}, domains: {}, addresses: {}'.format(current_user.email, inv_deploynames, inv_services, inv_domains, inv_addresses )) - current_app.logger.info('[{}] dashboard loaded.'.format(current_user.email)) - return render_template('vmanager/dashboard.html', rrd=rrd, status=statuses, inv_deployments=deployments, inv_services=services, inv_domains=domains, inv_addresses=addresses) + current_app.logger.info('[{}] deployments: {}, services: {}, domains: {}, addresses: {}'.format(current_user.email, inv_deployments_list, inv_services_list, inv_domains_list, inv_addresses_list )) + return render_template('vmanager/dashboard.html', rrd=rrd, status=statuses, inv_deployments=inv_deployments, inv_services=inv_services, inv_domains=inv_domains, inv_addresses=inv_addresses) -@vmanager.route('/vmvnc/') -@login_required -def vnc(vmid=0): - result = current_user.inv_deployments.order_by(Deployment.date_created.desc()).all() - inventory = [] - for invcls in result: - if invcls.enabled == True: - inventory.extend([invcls.machine_id]) - - #checks if current user owns this vmid - if not vmid in inventory: - current_app.logger.warning('User does not own cube id: {}'.format(str(vmid))) - #TODO: log ips - else: - db_result = contact_proxmaster({}, 'vmvnc', vmid) - #return render_template('vmanager/vnc.html', url=db_result['url']) - return redirect(db_result['url']) - - #admin override - if current_user.is_administrator(): - current_app.logger.warning('Admin override for cube id: {}'.format(str(vmid))) - db_result = contact_proxmaster({}, 'vmvnc', vmid) - return redirect(db_result['url']) - - abort(404) - -valid_commands = ['vmstatus', 'vmstart', 'vmshutdown', 'vmstop'] @vmanager.route('//') @login_required def command(cmd=None, vmid=0): + valid_commands = ['vmstatus', 'vmstart', 'vmshutdown', 'vmstop', 'vmvnc'] + #checks whether this is a valid command if not cmd in valid_commands: current_app.logger.warning(cmd + ' is not a valid command!') @@ -217,16 +190,14 @@ def command(cmd=None, vmid=0): # flash('Недостатъчно средства в сметката за тази операция') # return redirect(url_for('uinvoice.addfunds')) - result = current_user.inv_deployments.order_by(Deployment.date_created.desc()).all() + result = current_user.inv_deployments.filter_by(enabled=True).order_by(Deployment.date_created.desc()) inventory = [] for invcls in result: - if invcls.enabled == True: - inventory.extend([invcls.machine_id]) - + inventory.extend([invcls.machine_id]) #checks if current user owns this vmid if not vmid in inventory: - current_app.logger.warning('user id: {} does not own cube id:{}'.format(current_user.pid, vmid)) + current_app.logger.warning('[{}] Access violation with cube id: {}'.format(current_user.pid, vmid)) #TODO: log ips else: db_result = contact_proxmaster({}, cmd, vmid) @@ -234,8 +205,11 @@ def command(cmd=None, vmid=0): #admin override if current_user.is_administrator(): - current_app.logger.warning('Admin override for cube id:{}'.format(vmid)) + current_app.logger.info('[ADMIN] Access override for cube id:{}'.format(vmid)) db_result = contact_proxmaster({}, cmd, vmid) + if cmd == 'vmvnc': + return redirect(db_result['url']) + abort(404) diff --git a/manage.py b/manage.py index f519dfb..b90d2de 100644 --- a/manage.py +++ b/manage.py @@ -33,35 +33,15 @@ def deploy(): Role.insert_roles() @manager.command -def sampledata(): - """Deploy Sample Data""" - pass - -def run_scheduler(): - command_line = 'python3 /home/proxadmin/appserver/proxmaster-panel/schedulerd.py' - args = shlex.split(command_line) - p = subprocess.Popen(args) - -@manager.command -def charge_deployments(): - from app.models import Product, Deployment, User - Deployment.charge() - -@manager.command -def charge_contracts(): - from app.models import Service, Contract, User - Contract.charge() - -@manager.command -def charge_domains(): - from app.models import Domain, User - Domain.charge() +def charge(): + print('charge') + from app.models import Deployment, Service, Domain + #Deployment.charge() + #Service.charge() + #Domain.charge() @manager.command def runserver(): - #print('Starting Scheduler...') - #run_scheduler() - print('Starting Flask...') app.run()