not all JSONEncoded fields should be mutable dicts
[mediagoblin.git] / mediagoblin / db / models.py
index 37bd2f4f36919a11e4b9d3fb56086e39803d012f..5e8b664196ff8971a71c864c368626cfdc94f715 100644 (file)
@@ -31,7 +31,8 @@ from sqlalchemy.ext.associationproxy import association_proxy
 from sqlalchemy.util import memoized_property
 
 
-from mediagoblin.db.extratypes import PathTupleWithSlashes, JSONEncoded
+from mediagoblin.db.extratypes import (PathTupleWithSlashes, JSONEncoded,
+                                       MutationDict)
 from mediagoblin.db.base import Base, DictReadAttrProxy
 from mediagoblin.db.mixin import UserMixin, MediaEntryMixin, \
         MediaCommentMixin, CollectionMixin, CollectionItemMixin
@@ -48,6 +49,7 @@ from migrate import changeset
 _log = logging.getLogger(__name__)
 
 
+
 class User(Base, UserMixin):
     """
     TODO: We should consider moving some rarely used fields
@@ -287,7 +289,6 @@ class MediaEntry(Base, MediaEntryMixin):
         """
         media_file = MediaFile.query.filter_by(media_entry=self.id,
                                                name=unicode(file_key)).first()
-                                               name=file_key).first()
 
         file_metadata = media_file.file_metadata or {}
 
@@ -295,6 +296,7 @@ class MediaEntry(Base, MediaEntryMixin):
             file_metadata[key] = value
 
         media_file.file_metadata = file_metadata
+        media_file.save()
 
     @property
     def media_data(self):
@@ -392,7 +394,7 @@ class MediaFile(Base):
         nullable=False)
     name_id = Column(SmallInteger, ForeignKey(FileKeynames.id), nullable=False)
     file_path = Column(PathTupleWithSlashes)
-    file_metadata = Column(JSONEncoded)
+    file_metadata = Column(MutationDict.as_mutable(JSONEncoded))
 
     __table_args__ = (
         PrimaryKeyConstraint('media_entry', 'name_id'),