diff options
author | Elrond <elrond+mediagoblin.org@samba-tng.org> | 2012-01-24 21:47:40 +0100 |
---|---|---|
committer | Elrond <elrond+mediagoblin.org@samba-tng.org> | 2012-03-05 21:37:05 +0100 |
commit | b62b3b982a2543fb881c93570c544fbef61dd97e (patch) | |
tree | c07f4bb1a60b91310a82df3ab8cd8b89cd92218a /mediagoblin/db/sql/util.py | |
parent | c65cbf9514278fd624ff6f1ccbac93cca8e31764 (diff) | |
download | mediagoblin-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.py | 11 |
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: |