The problem is:
Collection.query.filter_by(id=X, ...)
1. X = form.collection.data
This works nicely for the completely empty form (X = None).
It does not work for a selected collection, because X
will be the collection, not its id.
2. X = request.form.get('collection') (old code).
This one works mostly, except for the completely empty
form on postgres, because in this case X = u"__None" and
postgres does not like comparing an integer column with
a string.
Fix:
collection = form.collection.data
if collection and collection.creator != request.user.id:
collection = None
# Otherwise, use the collection selected from the drop-down
else:
- collection = Collection.query.filter_by(
- id=form.collection.data,
- creator=request.user.id).first()
+ collection = form.collection.data
+ if collection and collection.creator != request.user.id:
+ collection = None
# Make sure the user actually selected a collection
if not collection: