not all JSONEncoded fields should be mutable dicts
[mediagoblin.git] / mediagoblin / db / models.py
index 809e47220dd6b6901b2361b8d563ca045ec7caac..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
@@ -294,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):
@@ -391,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'),