mirror of
https://gitlab.com/SIGBUS/nyaa.git
synced 2024-12-22 15:00:01 +00:00
Resolves #48
This commit is contained in:
parent
b147cfeb81
commit
1c1a4747c8
|
@ -131,16 +131,32 @@ def search(term='', user=None, sort='id', order='desc', category='0_0', quality_
|
||||||
else:
|
else:
|
||||||
query = models.Torrent.query
|
query = models.Torrent.query
|
||||||
|
|
||||||
# Filter by user
|
# User view (/user/username)
|
||||||
if user:
|
if user:
|
||||||
query = query.filter(models.Torrent.uploader_id == user)
|
query = query.filter(models.Torrent.uploader_id == user)
|
||||||
# If admin, show everything
|
|
||||||
if not admin:
|
if not admin:
|
||||||
# If user is not logged in or the accessed feed doesn't belong to user,
|
# Hide all DELETED torrents if regular user
|
||||||
# hide anonymous torrents belonging to the queried user
|
query = query.filter(models.Torrent.flags.op('&')(int(models.TorrentFlags.DELETED)).is_(False))
|
||||||
if not same_user:
|
# If logged in user is not the same as the user being viewed, show only torrents that aren't hidden or anonymous
|
||||||
query = query.filter(models.Torrent.flags.op('&')(
|
# If logged in user is the same as the user being viewed, show all torrents including hidden and anonymous ones
|
||||||
int(models.TorrentFlags.ANONYMOUS | models.TorrentFlags.DELETED)).is_(False))
|
# On RSS pages in user view, show only torrents that aren't hidden or anonymous no matter what
|
||||||
|
if not same_user or rss:
|
||||||
|
query = query.filter(models.Torrent.flags.op('&')(int(models.TorrentFlags.HIDDEN |
|
||||||
|
models.TorrentFlags.ANONYMOUS)).is_(False))
|
||||||
|
# General view (homepage, general search view)
|
||||||
|
else:
|
||||||
|
if not admin:
|
||||||
|
# Hide all DELETED torrents if regular user
|
||||||
|
query = query.filter(models.Torrent.flags.op('&')(int(models.TorrentFlags.DELETED)).is_(False))
|
||||||
|
# If logged in, show all torrents that aren't hidden unless they belong to you
|
||||||
|
# On RSS pages, show all public torrents and nothing more.
|
||||||
|
if flask.g.user and not rss:
|
||||||
|
query = query.filter((models.Torrent.flags.op('&')(int(models.TorrentFlags.HIDDEN)).is_(False)) |
|
||||||
|
(models.Torrent.uploader_id == flask.g.user.id))
|
||||||
|
# Otherwise, show all torrents that aren't hidden
|
||||||
|
else:
|
||||||
|
query = query.filter(models.Torrent.flags.op('&')(int(models.TorrentFlags.HIDDEN)).is_(False))
|
||||||
|
|
||||||
if main_category:
|
if main_category:
|
||||||
query = query.filter(models.Torrent.main_category_id == main_cat_id)
|
query = query.filter(models.Torrent.main_category_id == main_cat_id)
|
||||||
|
@ -151,11 +167,6 @@ def search(term='', user=None, sort='id', order='desc', category='0_0', quality_
|
||||||
if filter_tuple:
|
if filter_tuple:
|
||||||
query = query.filter(models.Torrent.flags.op('&')(int(filter_tuple[0])).is_(filter_tuple[1]))
|
query = query.filter(models.Torrent.flags.op('&')(int(filter_tuple[0])).is_(filter_tuple[1]))
|
||||||
|
|
||||||
# If admin, show everything
|
|
||||||
if not admin:
|
|
||||||
query = query.filter(models.Torrent.flags.op('&')(
|
|
||||||
int(models.TorrentFlags.HIDDEN | models.TorrentFlags.DELETED)).is_(False))
|
|
||||||
|
|
||||||
if term:
|
if term:
|
||||||
for item in shlex.split(term, posix=False):
|
for item in shlex.split(term, posix=False):
|
||||||
if len(item) >= 2:
|
if len(item) >= 2:
|
||||||
|
|
Loading…
Reference in a new issue