refactor discovery of inner media elements

pull/81/head
msramalho 2023-06-26 17:05:25 +01:00
rodzic d4f983e575
commit 6cf3e109ed
1 zmienionych plików z 16 dodań i 9 usunięć

Wyświetl plik

@ -30,15 +30,19 @@ class Media:
return return
for s in storages: for s in storages:
s.store(self, url) for any_media in self.all_inner_media(include_self=True):
# Media can be inside media properties, examples include transformations on original media s.store(any_media, url)
for prop in self.properties.values():
if isinstance(prop, Media): def all_inner_media(self, include_self=False):
s.store(prop, url) """ Media can be inside media properties, examples include transformations on original media.
if isinstance(prop, list): This function return a generator for all the inner media.
for prop_media in prop: """
if isinstance(prop_media, Media): if include_self: yield self
s.store(prop_media, url) for prop in self.properties.values():
if isinstance(prop, Media): yield prop
if isinstance(prop, list):
for prop_media in prop:
if isinstance(prop_media, Media): yield prop_media
def is_stored(self) -> bool: def is_stored(self) -> bool:
return len(self.urls) > 0 and len(self.urls) == len(ArchivingContext.get("storages")) return len(self.urls) > 0 and len(self.urls) == len(ArchivingContext.get("storages"))
@ -70,3 +74,6 @@ class Media:
def is_audio(self) -> bool: def is_audio(self) -> bool:
return self.mimetype.startswith("audio") return self.mimetype.startswith("audio")
def is_image(self) -> bool:
return self.mimetype.startswith("image")