diff --git a/app/models.py b/app/models.py index 0fc9b95..cb9e9fd 100644 --- a/app/models.py +++ b/app/models.py @@ -29,6 +29,7 @@ class User(UserMixin, db.Model): class Establishment(db.Model): id = db.Column(db.BigInteger, primary_key=True) name = db.Column(db.String(64), nullable=False) + owner = db.Column(db.ForeignKey('user.id'), nullable=False) LoginToken = db.relationship("LoginToken", backref='Establishment', lazy='dynamic') diff --git a/app/routes.py b/app/routes.py index 52fc5b9..98ad0cc 100644 --- a/app/routes.py +++ b/app/routes.py @@ -15,13 +15,6 @@ APPNAME = "scan2kasse" def index(): return render_template("base.html") -@app.route('/test') -def test(): - if request.args: - LOGGER.debug(request.args['testing']) - form = NewItemForm() - return render_template("test.html", form=form) - @app.route(f'/{APPNAME}/token_authorization') def token_authorization(): LOGGER.debug("Token Login") @@ -131,4 +124,10 @@ def get_report_from_user(): 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 + 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 diff --git a/app/utils/database_utils.py b/app/utils/database_utils.py index df33edd..2e89679 100644 --- a/app/utils/database_utils.py +++ b/app/utils/database_utils.py @@ -1,5 +1,5 @@ from app import db, LOGGER -from app.models import Bought, Item, LoginToken, User +from app.models import Bought, Establishment, Item, LoginToken, User from app.utils.view_utils import bought_with_prices as bwp from copy import deepcopy from datetime import date as dtdate, timedelta @@ -37,10 +37,11 @@ def get_report(**kwargs): query_select = query_select.filter_by(token == token) case {"establishment": establishment}: LOGGER.debug("Establishment present") - query_select = query_select.filter( - bwp.c.token.in_( - # db.session.query(LoginToken.token).filter_by(establishment = int(establishment), user=current_user.id))) - db.session.query(LoginToken.token).filter_by(establishment = int(establishment)))) + if current_user.id == Establishment.query.get(int(establishment)).owner: + _filter = db.session.query(LoginToken.token).filter_by(establishment = int(establishment)) + else: + _filter = db.session.query(LoginToken.token).filter_by(establishment = int(establishment), user=current_user.id) + query_select = query_select.filter(bwp.c.token.in_(_filter)) LOGGER.debug(str(query_select)) match kwargs: case {"month": month}: diff --git a/app/utils/view_utils.py b/app/utils/view_utils.py index 5978068..85191e3 100644 --- a/app/utils/view_utils.py +++ b/app/utils/view_utils.py @@ -1,8 +1,5 @@ from app import db, LOGGER from app.models import AmountChange, Bought, PriceChange -from datetime import date -from flask import render_template -from flask_login import current_user from sqlalchemy_utils import create_view def group_results(results: tuple) -> list: