X-Git-Url: http://git.datanom.net/pwp.git/blobdiff_plain/e5424f290a1b4f0f9b200e720d19091b63ed3eb2..fc01a3eb12731e8e2512e77b426ab5b33503edd1:/app/tools.py diff --git a/app/tools.py b/app/tools.py index e930a2e..f8e05d5 100644 --- a/app/tools.py +++ b/app/tools.py @@ -1,4 +1,5 @@ from .models import User, Portfolio, Album, Photo, AccessRight, Role, MyAnonymous +from app import app #from flask_login import mixins class DBQueryException(Exception): @@ -10,11 +11,11 @@ class DBQuery: albums = [] if hasattr(object, '__tablename__'): if isinstance(object, User): - portfolios = Portfolio.query.filter_by(owner=object) + portfolios = Portfolio.query(user=object.id) for p in portfolios: albums.extend(Album.query.filter_by(portfolio=p)) elif isinstance(object, Portfolio): - albums = Album.query.filter_by(portfolio=object) + albums = Album.query(portfolio=object.id) elif isinstance(object, Photo): albums.append(object.album) else: @@ -30,7 +31,7 @@ class DBQuery: portfolios = [] if hasattr(object, '__tablename__'): if isinstance(object, User): - portfolios = Portfolio.query.filter_by(owner=object) + portfolios = Portfolio.query(user=object.id) elif isinstance(object, Album): portfolios.append(object.portfolio) elif isinstance(object, Photo): @@ -48,14 +49,14 @@ class DBQuery: def get_owner(self, object): if hasattr(object, '__tablename__'): if isinstance(object, Portfolio): - return object.owner + return object.user elif isinstance(object, Album): p = object.portfolio - return p.owner + return p.user elif isinstance(object, Photo): a = object.album p = a.portfolio - return p.owner + return p.user else: raise DBQueryException("%s: not supported" % object.__tablename__) else: @@ -65,6 +66,7 @@ class DBQuery: if hasattr(object, '__tablename__'): users = [] if isinstance(object, Album): + # TODO: get rit of query.join objects = AccessRight.query.join(AccessRight.album).filter(Album.id == object.id) for o in objects: users.append(o.user) @@ -229,7 +231,7 @@ class DBQuery: # Last get all visible and public albums u = MyAnonymous() temp = self.get_albums_for_user(u) - print("1) Other albums: %s" % temp) + app.logger.info("1) Other albums: %s" % temp) albs = [] portfolios = self.get_portfolios(user) for p in portfolios: @@ -240,10 +242,10 @@ class DBQuery: if not hidden and not a.visible: continue albums.append(a) - print("2) Own albums: %s" % albums) + app.logger.info("2) Own albums: %s" % albums) # Remove own albums temp = list(set(temp) - set(albs)) - print("3) Other albums: %s" % temp) + app.logger.info("3) Other albums: %s" % temp) # Merge albums with temp removing duplicates albums = albums + temp else: @@ -251,10 +253,10 @@ class DBQuery: # Anonymous user if user.is_anonymous: # Find all albums which is public and visible - albums = Album.query.filter_by(public=True,visible=True).all() + albums = Album.query(public=True, visible=True) except AttributeError: raise DBQueryException("%s: Not a User object" % user) - print("Anonymous albums: %s" % albums) + app.logger.info("Anonymous albums: %s" % albums) return albums def is_safe_url(target):