Find out if such a slug exists via a query instead of via a .save() call

This commit is contained in:
Christopher Allan Webber 2011-06-03 18:43:08 -05:00
parent 9bfe1d8e12
commit d5e90fe4b4

View File

@ -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(