From f26dee5489add5b3f5c12d1735b48757552b5174 Mon Sep 17 00:00:00 2001 From: Lunaresk Date: Wed, 23 Mar 2022 13:45:45 +0100 Subject: [PATCH] minor: insert primitive possibility for invoice It's ugly. Future updates will make it more beautiful. --- app/models.py | 5 ++++- app/routes.py | 26 +++++++++++++++++++++----- app/templates/base.html | 3 +++ app/templates/overview.html | 7 +++++++ app/utils/database_utils.py | 26 +++++++++++++++++++++++--- 5 files changed, 58 insertions(+), 9 deletions(-) diff --git a/app/models.py b/app/models.py index cb9e9fd..6bc7a60 100644 --- a/app/models.py +++ b/app/models.py @@ -14,8 +14,9 @@ class User(UserMixin, db.Model): username = db.Column(db.String(64), nullable=False, unique=True) password_hash = db.Column(db.String(128), nullable=False) - # Bought = db.relationship("Bought", backref='User', lazy='dynamic') LoginToken = db.relationship("LoginToken", backref='User', lazy='dynamic') + Bought = db.relationship("Bought", secondary="login_token", + lazy='dynamic', overlaps="User,LoginToken") def set_password(self, password): self.password_hash = generate_password_hash(password) @@ -32,6 +33,8 @@ class Establishment(db.Model): owner = db.Column(db.ForeignKey('user.id'), nullable=False) LoginToken = db.relationship("LoginToken", backref='Establishment', lazy='dynamic') + Bought = db.relationship("Bought", secondary="login_token", + lazy='dynamic', overlaps="Establishment,LoginToken,Bought") def __repr__(self) -> str: return f"" diff --git a/app/routes.py b/app/routes.py index 98ad0cc..97dbadc 100644 --- a/app/routes.py +++ b/app/routes.py @@ -1,6 +1,6 @@ from app import app, db, LOGGER from app.forms import NewItemForm, LoginForm, RegistrationForm -from app.models import LoginToken, User, Item, Brand, PriceChange, AmountChange +from app.models import Establishment, LoginToken, User, Item, Brand, PriceChange, AmountChange from app.utils import view_utils, database_utils from app.utils.routes_utils import render_custom_template as render_template from datetime import date @@ -116,7 +116,8 @@ def get_report_from_user(): abort(400) LOGGER.info("Getting results.") results = database_utils.get_report(**request.args) - LOGGER.debug(f"Results received: {results}") + LOGGER.debug(f"Results received.") + # LOGGER.debug(str(results)) if results: result_list = view_utils.group_results(results) else: @@ -124,10 +125,25 @@ def get_report_from_user(): if request.content_type == "application/json": return jsonify(result_list) else: - return render_template("overview.html", results=result_list) + if "establishment" in request.args: + return render_template("overview.html", results=result_list, establishment = Establishment.query.get(int(request.args['establishment']))) + else: + return render_template("overview.html", results=result_list) @app.route(f'/{APPNAME}/overview/register_boughts', methods=['GET']) @login_required def check_unregistered_items(): - if current_user.is_anonymous: - abort(403) \ No newline at end of file + if current_user.is_anonymous or not request.args or 'establishment' not in request.args: + abort(403) + establishment = Establishment.query.get(int(request.args['establishment'])) + if current_user.id != establishment.owner: + abort(403) + results = database_utils.get_unregistered_and_register(establishment.id) + if results: + result_list = view_utils.group_results(results) + else: + result_list = [] + if request.content_type == "application/json": + return jsonify(result_list) + else: + return render_template("overview.html", results=result_list) \ No newline at end of file diff --git a/app/templates/base.html b/app/templates/base.html index 3e2969d..0ea63e7 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -10,6 +10,7 @@ {% else %} Scan2Kasse {% endif %} +
@@ -91,9 +92,11 @@ {% endwith %}
+
{% block content %}{% endblock %}
+
diff --git a/app/templates/overview.html b/app/templates/overview.html index 9b03689..eb4810c 100644 --- a/app/templates/overview.html +++ b/app/templates/overview.html @@ -1,6 +1,13 @@ {% extends "base.html" %} {% block content %} + {% if establishment %} + {% if current_user.id == establishment.owner %} + + {% endif %} + {% endif %} {% for user in results %}