From 9c0fe63fadc848b5154c7c1d4b2ff72dd05bc1c6 Mon Sep 17 00:00:00 2001 From: Caleb Forbes Davis V Date: Sat, 2 Jul 2011 06:15:58 -0500 Subject: adds previous and next links in the sidebar Feature #401 - previous/next navigation on media pages * media.html includes a new prev_next.html template containing the links * prev_next.html calls functions added to the media model to retrieve the appropriate objects from the database, formatted with urlgen * a small change to util.py brings ASCENDING into the mix --- mediagoblin/db/models.py | 28 +++++++++++++++++++++++++++- mediagoblin/db/util.py | 2 +- 2 files changed, 28 insertions(+), 2 deletions(-) (limited to 'mediagoblin/db') diff --git a/mediagoblin/db/models.py b/mediagoblin/db/models.py index bf825a23..cfd83430 100644 --- a/mediagoblin/db/models.py +++ b/mediagoblin/db/models.py @@ -22,7 +22,7 @@ from mediagoblin import util from mediagoblin.auth import lib as auth_lib from mediagoblin import mg_globals from mediagoblin.db import migrations -from mediagoblin.db.util import DESCENDING, ObjectId +from mediagoblin.db.util import ASCENDING, DESCENDING, ObjectId from mediagoblin.util import Pagination ################### @@ -154,6 +154,32 @@ class MediaEntry(Document): 'mediagoblin.user_pages.media_home', user=uploader['username'], media=unicode(self['_id'])) + + def url_to_prev(self, urlgen): + """ + Provide a url to the previous entry from this user, if there is one + """ + cursor = self.db.MediaEntry.find({'_id' : {"$lt": self['_id']}, + 'uploader': self['uploader']}).sort( + '_id', DESCENDING).limit(1) + + if cursor.count(): + return urlgen('mediagoblin.user_pages.media_home', + user=self.uploader()['username'], + media=unicode(cursor[0]['_id'])) + + def url_to_next(self, urlgen): + """ + Provide a url to the next entry from this user, if there is one + """ + cursor = self.db.MediaEntry.find({'_id' : {"$gt": self['_id']}, + 'uploader': self['uploader']}).sort( + '_id', ASCENDING).limit(1) + + if cursor.count(): + return urlgen('mediagoblin.user_pages.media_home', + user=self.uploader()['username'], + media=unicode(cursor[0]['_id'])) def uploader(self): return self.db.User.find_one({'_id': self['uploader']}) diff --git a/mediagoblin/db/util.py b/mediagoblin/db/util.py index 46f899f7..70c37945 100644 --- a/mediagoblin/db/util.py +++ b/mediagoblin/db/util.py @@ -30,7 +30,7 @@ document relevant to here: import copy # Imports that other modules might use -from pymongo import DESCENDING +from pymongo import ASCENDING, DESCENDING from pymongo.errors import InvalidId from mongokit import ObjectId -- cgit v1.2.3