diff options
Diffstat (limited to 'mediagoblin/db/models.py')
-rw-r--r-- | mediagoblin/db/models.py | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/mediagoblin/db/models.py b/mediagoblin/db/models.py index 8e7889eb..37420834 100644 --- a/mediagoblin/db/models.py +++ b/mediagoblin/db/models.py @@ -21,6 +21,8 @@ from mongokit import Document, Set from mediagoblin import util from mediagoblin.auth import lib as auth_lib from mediagoblin import globals as mediagoblin_globals +from mediagoblin.db import migrations +from mediagoblin.db.util import ObjectId ################### # Custom validators @@ -67,7 +69,7 @@ class MediaEntry(Document): __collection__ = 'media_entries' structure = { - 'uploader': User, + 'uploader': ObjectId, 'title': unicode, 'slug': unicode, 'created': datetime.datetime, @@ -99,6 +101,8 @@ class MediaEntry(Document): 'created': datetime.datetime.utcnow, 'state': u'unprocessed'} + migration_handler = migrations.MediaEntryMigration + # Actually we should referene uniqueness by uploader, but we # should fix http://bugs.foocorp.net/issues/340 first. # indexes = [ @@ -123,17 +127,22 @@ class MediaEntry(Document): Use a slug if we have one, else use our '_id'. """ + uploader = self.uploader() + if self.get('slug'): return urlgen( 'mediagoblin.user_pages.media_home', - user=self['uploader']['username'], + user=uploader['username'], media=self['slug']) else: return urlgen( 'mediagoblin.user_pages.media_home', - user=self['uploader']['username'], + user=uploader['username'], media=unicode(self['_id'])) + def uploader(self): + return self.db.User.find_one({'_id': self['uploader']}) + REGISTER_MODELS = [MediaEntry, User] |