aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/db/sql/util.py
diff options
context:
space:
mode:
authorElrond <elrond+mediagoblin.org@samba-tng.org>2012-01-24 21:47:40 +0100
committerElrond <elrond+mediagoblin.org@samba-tng.org>2012-03-05 21:37:05 +0100
commitb62b3b982a2543fb881c93570c544fbef61dd97e (patch)
treec07f4bb1a60b91310a82df3ab8cd8b89cd92218a /mediagoblin/db/sql/util.py
parentc65cbf9514278fd624ff6f1ccbac93cca8e31764 (diff)
downloadmediagoblin-b62b3b982a2543fb881c93570c544fbef61dd97e.tar.lz
mediagoblin-b62b3b982a2543fb881c93570c544fbef61dd97e.tar.xz
mediagoblin-b62b3b982a2543fb881c93570c544fbef61dd97e.zip
Generic check_media_slug_used db utility.
In two cases (generating a new slug and editing the slug) it is nice to know in advance (before the db gets angry) that the slug is used/free. So created a db utility function to check for this on mongo and sql: check_media_slug_used()
Diffstat (limited to 'mediagoblin/db/sql/util.py')
-rw-r--r--mediagoblin/db/sql/util.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/mediagoblin/db/sql/util.py b/mediagoblin/db/sql/util.py
index 737e4e59..efb0fafe 100644
--- a/mediagoblin/db/sql/util.py
+++ b/mediagoblin/db/sql/util.py
@@ -17,7 +17,7 @@
import sys
from mediagoblin.db.sql.base import Session
-from mediagoblin.db.sql.models import Tag, MediaTag
+from mediagoblin.db.sql.models import MediaEntry, Tag, MediaTag
def _simple_printer(string):
@@ -285,6 +285,15 @@ def atomic_update(table, query_dict, update_values):
Session.commit()
+def check_media_slug_used(dummy_db, uploader_id, slug, ignore_m_id):
+ filt = (MediaEntry.uploader == uploader_id) \
+ & (MediaEntry.slug == slug)
+ if ignore_m_id is not None:
+ filt = filt & (MediaEntry.id != ignore_m_id)
+ does_exist = Session.query(MediaEntry.id).filter(filt).first() is not None
+ return does_exist
+
+
def clean_orphan_tags():
q1 = Session.query(Tag).outerjoin(MediaTag).filter(MediaTag.id==None)
for t in q1: