From d5e90fe4b487e86261331fab0f7c08f12462625d Mon Sep 17 00:00:00 2001 From: Christopher Allan Webber Date: Fri, 3 Jun 2011 18:43:08 -0500 Subject: [PATCH] Find out if such a slug exists via a query instead of via a .save() call --- mediagoblin/edit/views.py | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/mediagoblin/edit/views.py b/mediagoblin/edit/views.py index 7df47b18..5cfb2297 100644 --- a/mediagoblin/edit/views.py +++ b/mediagoblin/edit/views.py @@ -34,18 +34,25 @@ def edit_media(request, media): description = media['description']) if request.method == 'POST' and form.validate(): - media['title'] = request.POST['title'] - media['description'] = request.POST['description'] - media['slug'] = request.POST['slug'] - try: - media.save() - except Exception as e: - return exc.HTTPConflict(detail = str(e)) - - # redirect - return exc.HTTPFound( - location=request.urlgen("mediagoblin.user_pages.media_home", - user=media.uploader()['username'], media=media['_id'])) + # Make sure there isn't already a MediaEntry with such a slug + # and userid. + existing_user_slug_entries = request.db.MediaEntry.find( + {'slug': request.POST['slug'], + 'uploader': media['uploader'], + '_id': {'$ne': media['_id']}}).count() + + if existing_user_slug_entries: + form.slug.errors.append( + u'An entry with that slug already exists for this user.') + 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 template = request.template_env.get_template( -- 2.25.1