aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/db/models.py
diff options
context:
space:
mode:
authorRodney Ewing <ewing.rj@gmail.com>2013-08-21 14:34:11 -0700
committerRodney Ewing <ewing.rj@gmail.com>2013-08-21 14:44:13 -0700
commite002452f911c366756bf93e19238cc26bc835d09 (patch)
treeb1e7731b685395351606aa681bac211ab5a73b48 /mediagoblin/db/models.py
parent0cdebda7fc533384bd725412365325edcbeb038c (diff)
downloadmediagoblin-e002452f911c366756bf93e19238cc26bc835d09.tar.lz
mediagoblin-e002452f911c366756bf93e19238cc26bc835d09.tar.xz
mediagoblin-e002452f911c366756bf93e19238cc26bc835d09.zip
get and set metadata for a MediaFile
Diffstat (limited to 'mediagoblin/db/models.py')
-rw-r--r--mediagoblin/db/models.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/mediagoblin/db/models.py b/mediagoblin/db/models.py
index 9cb39ff4..aa0c54d3 100644
--- a/mediagoblin/db/models.py
+++ b/mediagoblin/db/models.py
@@ -263,6 +263,34 @@ class MediaEntry(Base, MediaEntryMixin):
if media is not None:
return media.url_for_self(urlgen)
+ def get_file_metadata(self, file_key, metadata_key=None):
+ """
+ Return the file_metadata dict of a MediaFile. If metadata_key is given,
+ return the value of the key.
+ """
+ media_file = MediaFile.query.filter_by(media_entry=self.id,
+ name=file_key).first()
+
+ if media_file:
+ if metadata_key:
+ return media_file.file_metadata.get(metadata_key, None)
+
+ return media_file.file_metadata
+
+ def set_file_metadata(self, file_key, **kwargs):
+ """
+ Update the file_metadata of a MediaFile.
+ """
+ media_file = MediaFile.query.filter_by(media_entry=self.id,
+ name=file_key).first()
+
+ file_metadata = media_file.file_metadata or {}
+
+ for key, value in kwargs.iteritems():
+ file_metadata[key] = value
+
+ media_file.file_metadata = file_metadata
+
@property
def media_data(self):
return getattr(self, self.media_data_ref)
@@ -359,6 +387,7 @@ class MediaFile(Base):
nullable=False)
name_id = Column(SmallInteger, ForeignKey(FileKeynames.id), nullable=False)
file_path = Column(PathTupleWithSlashes)
+ file_metadata = Column(JSONEncoded)
__table_args__ = (
PrimaryKeyConstraint('media_entry', 'name_id'),