aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElrond <elrond+mediagoblin.org@samba-tng.org>2011-12-25 16:01:59 +0100
committerElrond <elrond+mediagoblin.org@samba-tng.org>2012-02-25 14:10:57 +0100
commit58f96a13e463fb417968cc92ec2ac5d4404641e4 (patch)
treea213ee4c35b23e4722d3e38baf209abf9bd755d4
parent98913512561e10d409e1cce067b4ed42b72e337c (diff)
downloadmediagoblin-58f96a13e463fb417968cc92ec2ac5d4404641e4.tar.lz
mediagoblin-58f96a13e463fb417968cc92ec2ac5d4404641e4.tar.xz
mediagoblin-58f96a13e463fb417968cc92ec2ac5d4404641e4.zip
Allow .id instead of ._id for the Mongo backend
To allow easier migration to the SQLAlchemy style .id give the User and MediaEntry mongo classes an alias attribute of .id that maps to ['_id']. Use it in the upload process, because this was one of the last positions with a ['_id'] instead of ._id (due to a bug in mongokit).
-rw-r--r--mediagoblin/db/mongo/models.py15
-rw-r--r--mediagoblin/submit/views.py2
2 files changed, 16 insertions, 1 deletions
diff --git a/mediagoblin/db/mongo/models.py b/mediagoblin/db/mongo/models.py
index 57af137d..99c7905d 100644
--- a/mediagoblin/db/mongo/models.py
+++ b/mediagoblin/db/mongo/models.py
@@ -25,6 +25,17 @@ from mediagoblin.tools.pagination import Pagination
from mediagoblin.tools import url
from mediagoblin.db.mixin import UserMixin, MediaEntryMixin, MediaCommentMixin
+
+class MongoPK(object):
+ """An alias for the _id primary key"""
+ def __get__(self, instance, cls):
+ return instance['_id']
+ def __set__(self, instance, val):
+ instance['_id'] = val
+ def __delete__(self, instance):
+ del instance['_id']
+
+
###################
# Custom validators
###################
@@ -87,6 +98,8 @@ class User(Document, UserMixin):
'status': u'needs_email_verification',
'is_admin': False}
+ id = MongoPK()
+
class MediaEntry(Document, MediaEntryMixin):
"""
@@ -205,6 +218,8 @@ class MediaEntry(Document, MediaEntryMixin):
'created': datetime.datetime.utcnow,
'state': u'unprocessed'}
+ id = MongoPK()
+
def get_comments(self, ascending=False):
if ascending:
order = ASCENDING
diff --git a/mediagoblin/submit/views.py b/mediagoblin/submit/views.py
index df5b15c0..1e145e9d 100644
--- a/mediagoblin/submit/views.py
+++ b/mediagoblin/submit/views.py
@@ -59,7 +59,7 @@ def submit_start(request):
# create entry and save in database
entry = request.db.MediaEntry()
- entry['_id'] = ObjectId()
+ entry.id = ObjectId()
entry.media_type = unicode(media_type)
entry.title = (
unicode(request.POST['title'])