aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mediagoblin/db/mongo/util.py6
-rw-r--r--mediagoblin/db/sql/util.py9
-rw-r--r--mediagoblin/db/util.py6
-rw-r--r--mediagoblin/listings/views.py6
4 files changed, 21 insertions, 6 deletions
diff --git a/mediagoblin/db/mongo/util.py b/mediagoblin/db/mongo/util.py
index 2d47f648..f61ae6be 100644
--- a/mediagoblin/db/mongo/util.py
+++ b/mediagoblin/db/mongo/util.py
@@ -310,3 +310,9 @@ def check_media_slug_used(db, uploader_id, slug, ignore_m_id):
existing_user_slug_entries = db.MediaEntry.find(
query_dict).count()
return existing_user_slug_entries
+
+
+def media_entries_for_tag_slug(db, tag_slug):
+ return db.MediaEntry.find(
+ {u'state': u'processed',
+ u'tags.slug': tag_slug})
diff --git a/mediagoblin/db/sql/util.py b/mediagoblin/db/sql/util.py
index efb0fafe..60024b28 100644
--- a/mediagoblin/db/sql/util.py
+++ b/mediagoblin/db/sql/util.py
@@ -294,6 +294,15 @@ def check_media_slug_used(dummy_db, uploader_id, slug, ignore_m_id):
return does_exist
+def media_entries_for_tag_slug(dummy_db, tag_slug):
+ return MediaEntry.query \
+ .join(MediaEntry.tags_helper) \
+ .join(MediaTag.tag_helper) \
+ .filter(
+ (MediaEntry.state == u'processed')
+ & (Tag.slug == tag_slug))
+
+
def clean_orphan_tags():
q1 = Session.query(Tag).outerjoin(MediaTag).filter(MediaTag.id==None)
for t in q1:
diff --git a/mediagoblin/db/util.py b/mediagoblin/db/util.py
index ff7aaf79..540a9244 100644
--- a/mediagoblin/db/util.py
+++ b/mediagoblin/db/util.py
@@ -21,7 +21,9 @@ except ImportError:
if use_sql:
from mediagoblin.db.sql.fake import ObjectId, InvalidId, DESCENDING
- from mediagoblin.db.sql.util import atomic_update, check_media_slug_used
+ from mediagoblin.db.sql.util import atomic_update, check_media_slug_used, \
+ media_entries_for_tag_slug
else:
from mediagoblin.db.mongo.util import \
- ObjectId, InvalidId, DESCENDING, atomic_update, check_media_slug_used
+ ObjectId, InvalidId, DESCENDING, atomic_update, \
+ check_media_slug_used, media_entries_for_tag_slug
diff --git a/mediagoblin/listings/views.py b/mediagoblin/listings/views.py
index 5c365ed2..9244293f 100644
--- a/mediagoblin/listings/views.py
+++ b/mediagoblin/listings/views.py
@@ -14,7 +14,7 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-from mediagoblin.db.util import DESCENDING
+from mediagoblin.db.util import media_entries_for_tag_slug, DESCENDING
from mediagoblin.tools.pagination import Pagination
from mediagoblin.tools.response import render_to_response
@@ -48,9 +48,7 @@ def tag_listing(request, page):
"""'Gallery'/listing for this tag slug"""
tag_slug = request.matchdict[u'tag']
- cursor = request.db.MediaEntry.find(
- {u'state': u'processed',
- u'tags.slug': tag_slug})
+ cursor = media_entries_for_tag_slug(request.db, tag_slug)
cursor = cursor.sort('created', DESCENDING)
pagination = Pagination(page, cursor)