get and set metadata for a MediaFile
This commit is contained in:
parent
0cdebda7fc
commit
e002452f91
@ -425,7 +425,7 @@ class RequestToken_v0(declarative_base()):
|
|||||||
callback = Column(Unicode, nullable=False, default=u"oob")
|
callback = Column(Unicode, nullable=False, default=u"oob")
|
||||||
created = Column(DateTime, nullable=False, default=datetime.datetime.now)
|
created = Column(DateTime, nullable=False, default=datetime.datetime.now)
|
||||||
updated = Column(DateTime, nullable=False, default=datetime.datetime.now)
|
updated = Column(DateTime, nullable=False, default=datetime.datetime.now)
|
||||||
|
|
||||||
class AccessToken_v0(declarative_base()):
|
class AccessToken_v0(declarative_base()):
|
||||||
"""
|
"""
|
||||||
Model for representing the access tokens
|
Model for representing the access tokens
|
||||||
@ -438,7 +438,7 @@ class AccessToken_v0(declarative_base()):
|
|||||||
request_token = Column(Unicode, ForeignKey(RequestToken_v0.token))
|
request_token = Column(Unicode, ForeignKey(RequestToken_v0.token))
|
||||||
created = Column(DateTime, nullable=False, default=datetime.datetime.now)
|
created = Column(DateTime, nullable=False, default=datetime.datetime.now)
|
||||||
updated = Column(DateTime, nullable=False, default=datetime.datetime.now)
|
updated = Column(DateTime, nullable=False, default=datetime.datetime.now)
|
||||||
|
|
||||||
|
|
||||||
class NonceTimestamp_v0(declarative_base()):
|
class NonceTimestamp_v0(declarative_base()):
|
||||||
"""
|
"""
|
||||||
@ -460,3 +460,14 @@ def create_oauth1_tables(db):
|
|||||||
NonceTimestamp_v0.__table__.create(db.bind)
|
NonceTimestamp_v0.__table__.create(db.bind)
|
||||||
|
|
||||||
db.commit()
|
db.commit()
|
||||||
|
|
||||||
|
|
||||||
|
@RegisterMigration(15, MIGRATIONS)
|
||||||
|
def add_file_metadata(db):
|
||||||
|
"""Add file_metadata to MediaFile"""
|
||||||
|
metadata = MetaData(bind=db.bind)
|
||||||
|
media_file_table = inspect_table(metadata, "core__mediafiles")
|
||||||
|
|
||||||
|
col = Column('file_metadata', JSONEncoded)
|
||||||
|
col.create(media_file_table)
|
||||||
|
db.commit()
|
||||||
|
@ -263,6 +263,34 @@ class MediaEntry(Base, MediaEntryMixin):
|
|||||||
if media is not None:
|
if media is not None:
|
||||||
return media.url_for_self(urlgen)
|
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
|
@property
|
||||||
def media_data(self):
|
def media_data(self):
|
||||||
return getattr(self, self.media_data_ref)
|
return getattr(self, self.media_data_ref)
|
||||||
@ -359,6 +387,7 @@ class MediaFile(Base):
|
|||||||
nullable=False)
|
nullable=False)
|
||||||
name_id = Column(SmallInteger, ForeignKey(FileKeynames.id), nullable=False)
|
name_id = Column(SmallInteger, ForeignKey(FileKeynames.id), nullable=False)
|
||||||
file_path = Column(PathTupleWithSlashes)
|
file_path = Column(PathTupleWithSlashes)
|
||||||
|
file_metadata = Column(JSONEncoded)
|
||||||
|
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
PrimaryKeyConstraint('media_entry', 'name_id'),
|
PrimaryKeyConstraint('media_entry', 'name_id'),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user