Improve sqlalchemy filter rules

Thanks to Elrond's review. 1) Use filter_by more consistently
rather than mixing filter and filter_by. 2) Add multiple AND
conditions in the same filter rule rather than using separate
ones. 3) The atom feeds used filter_by(Modelname.attr == ...)
which was the wrong pattern, of course.

Thanks for repairing my junk Elrond!

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
This commit is contained in:
Sebastian Spaeth 2012-12-23 12:08:51 +01:00
parent cfa922295e
commit 2fb36dac31

View File

@ -54,8 +54,9 @@ def user_home(request, page):
'mediagoblin/user_pages/user.html',
{'user': user})
cursor = MediaEntry.query.filter_by(uploader = user.id).\
filter_by(state = u'processed').sort('created', DESCENDING)
cursor = MediaEntry.query.\
filter_by(uploader = user.id,
state = u'processed').sort('created', DESCENDING)
pagination = Pagination(page, cursor)
media_entries = pagination()
@ -179,9 +180,8 @@ def media_collect(request, media):
form = user_forms.MediaCollectForm(request.form)
# A user's own collections:
form.collection.query = Collection.query.filter(
request.db.Collection.creator == request.user.id)\
.order_by(Collection.title)
form.collection.query = Collection.query.filter_by(
creator = request.user.id).order_by(Collection.title)
if request.method != 'POST' or not form.validate():
# No POST submission, or invalid form
@ -440,13 +440,15 @@ def atom_feed(request):
"""
generates the atom feed with the newest images
"""
user = User.query.filter(User.username==request.matchdict['user']).\
filter(User.status == u'active').first()
user = User.query.filter_by(
username = request.matchdict['user'],
status = u'active').first()
if not user:
return render_404(request)
cursor = MediaEntry.query.filter_by(MediaEntry.uploader == user.id).\
filter_by(MediaEntry.state == u'processed').\
cursor = MediaEntry.query.filter_by(
uploader = user.id,
state = u'processed').\
sort('created', DESCENDING).\
limit(ATOM_DEFAULT_NR_OF_UPDATED_ITEMS)
@ -501,8 +503,9 @@ def collection_atom_feed(request):
"""
generates the atom feed with the newest images from a collection
"""
user = User.query.filter(User.username == request.matchdict['user']).\
filter_by(User.status == u'active').first()
user = User.query.filter_by(
username = request.matchdict['user'],
status = u'active').first()
if not user:
return render_404(request)
@ -586,19 +589,19 @@ def processing_panel(request):
# Get media entries which are in-processing
processing_entries = MediaEntry.query.\
filter(MediaEntry.uploader == user.id).\
filter(MediaEntry.state == u'processing').\
filter_by(uploader = user.id,
state = u'processing').\
order_by(MediaEntry.created.desc())
# Get media entries which have failed to process
failed_entries = MediaEntry.query.\
filter(MediaEntry.uploader == user.id).\
filter(MediaEntry.state == u'failed').\
filter_by(uploader = user.id,
state = u'failed').\
order_by(MediaEntry.created.desc())
processed_entries = MediaEntry.query.\
filter(MediaEntry.uploader == user.id).\
filter(MediaEntry.state == u'processed').\
filter_by(uploader = user.id,
state = u'processed').\
order_by(MediaEntry.created.desc()).\
limit(10)