From 0cb3ee538f2d3202c640bbab199b707ce06eeeb0 Mon Sep 17 00:00:00 2001 From: simonmicro Date: Sun, 11 Dec 2022 20:22:16 +0100 Subject: [PATCH] Added products sub-page --- py-kms/pykms_WebUI.py | 65 ++++++++++++++++++++++++++++++---- py-kms/templates/base.html | 20 ++++++++++- py-kms/templates/clients.html | 16 +++++---- py-kms/templates/license.html | 8 ++--- py-kms/templates/products.html | 53 +++++++++++++++++++++++++++ 5 files changed, 143 insertions(+), 19 deletions(-) create mode 100644 py-kms/templates/products.html diff --git a/py-kms/pykms_WebUI.py b/py-kms/pykms_WebUI.py index 1030b67..8b2ab06 100644 --- a/py-kms/pykms_WebUI.py +++ b/py-kms/pykms_WebUI.py @@ -1,15 +1,49 @@ import os, uuid, datetime from flask import Flask, render_template from pykms_Sql import sql_get_all +from pykms_DB2Dict import kmsDB2Dict serve_count = 0 def _random_uuid(): return str(uuid.uuid4()).replace('-', '_') +def _increase_serve_count(): + global serve_count + serve_count += 1 + def _get_serve_count(): return serve_count +_kms_items = None +_kms_items_ignored = None +def _get_kms_items_cache(): + global _kms_items, _kms_items_ignored + if _kms_items is None: + _kms_items = {} + _kms_items_ignored = 0 + queue = [kmsDB2Dict()] + while len(queue): + item = queue.pop(0) + if isinstance(item, list): + for i in item: + queue.append(i) + elif isinstance(item, dict): + if 'KmsItems' in item: + queue.append(item['KmsItems']) + elif 'SkuItems' in item: + queue.append(item['SkuItems']) + elif 'Gvlk' in item: + if len(item['Gvlk']): + _kms_items[item['DisplayName']] = item['Gvlk'] + else: + _kms_items_ignored += 1 + #else: + # print(item) + else: + raise NotImplementedError(f'Unknown type: {type(item)}') + return _kms_items, _kms_items_ignored + app = Flask('pykms_webui') app.jinja_env.globals['start_time'] = datetime.datetime.now() app.jinja_env.globals['get_serve_count'] = _get_serve_count @@ -17,8 +51,7 @@ app.jinja_env.globals['random_uuid'] = _random_uuid @app.route('/') def root(): - global serve_count - serve_count += 1 + _increase_serve_count() error = None # Get the db name / path dbPath = None @@ -39,19 +72,39 @@ def root(): countClientsOffice = countClients - countClientsWindows return render_template( 'clients.html', + path='/', error=error, clients=clients, count_clients=countClients, count_clients_windows=countClientsWindows, - count_clients_office=countClientsOffice + count_clients_office=countClientsOffice, + count_projects=len(_get_kms_items_cache()[0]) ) @app.route('/license') def license(): - global serve_count - serve_count += 1 + _increase_serve_count() with open('../LICENSE', 'r') as f: return render_template( 'license.html', + path='/license/', license=f.read() - ) \ No newline at end of file + ) + +@app.route('/products') +def products(): + _increase_serve_count() + items, ignored = _get_kms_items_cache() + countProducts = len(items) + countProductsWindows = len([i for i in items if 'windows' in i.lower()]) + countProductsOffice = len([i for i in items if 'office' in i.lower()]) + return render_template( + 'products.html', + path='/products/', + products=items, + filtered=ignored, + count_products=countProducts, + count_products_windows=countProductsWindows, + count_products_office=countProductsOffice + ) + \ No newline at end of file diff --git a/py-kms/templates/base.html b/py-kms/templates/base.html index 28c22ce..8b9f8d8 100644 --- a/py-kms/templates/base.html +++ b/py-kms/templates/base.html @@ -3,18 +3,36 @@ py-kms {% block title %}{% endblock %} + -
{% block content %}{% endblock %} + + {% if path != '/' %} + + {% endif %}