Find out if such a slug exists via a query instead of via a .save() call
This commit is contained in:
parent
9bfe1d8e12
commit
d5e90fe4b4
@ -34,18 +34,25 @@ def edit_media(request, media):
|
|||||||
description = media['description'])
|
description = media['description'])
|
||||||
|
|
||||||
if request.method == 'POST' and form.validate():
|
if request.method == 'POST' and form.validate():
|
||||||
media['title'] = request.POST['title']
|
# Make sure there isn't already a MediaEntry with such a slug
|
||||||
media['description'] = request.POST['description']
|
# and userid.
|
||||||
media['slug'] = request.POST['slug']
|
existing_user_slug_entries = request.db.MediaEntry.find(
|
||||||
try:
|
{'slug': request.POST['slug'],
|
||||||
media.save()
|
'uploader': media['uploader'],
|
||||||
except Exception as e:
|
'_id': {'$ne': media['_id']}}).count()
|
||||||
return exc.HTTPConflict(detail = str(e))
|
|
||||||
|
|
||||||
# redirect
|
if existing_user_slug_entries:
|
||||||
return exc.HTTPFound(
|
form.slug.errors.append(
|
||||||
location=request.urlgen("mediagoblin.user_pages.media_home",
|
u'An entry with that slug already exists for this user.')
|
||||||
user=media.uploader()['username'], media=media['_id']))
|
else:
|
||||||
|
media['title'] = request.POST['title']
|
||||||
|
media['description'] = request.POST['description']
|
||||||
|
media['slug'] = request.POST['slug']
|
||||||
|
|
||||||
|
# redirect
|
||||||
|
return exc.HTTPFound(
|
||||||
|
location=request.urlgen("mediagoblin.user_pages.media_home",
|
||||||
|
user=media.uploader()['username'], media=media['_id']))
|
||||||
|
|
||||||
# render
|
# render
|
||||||
template = request.template_env.get_template(
|
template = request.template_env.get_template(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user