diff options
author | Matthias Baumgartner <dev@igsor.net> | 2023-02-08 19:23:46 +0100 |
---|---|---|
committer | Matthias Baumgartner <dev@igsor.net> | 2023-02-08 19:23:46 +0100 |
commit | a281d6b3a75a7d4a97e673c285ee430a327482ed (patch) | |
tree | cbdecc56c7fca6a7a4cd03a1b974d5c60ee3cd7b /bsie/lib/naming_policy.py | |
parent | 482235a8229261fa905f73ce167982bca57ab3e6 (diff) | |
download | bsie-a281d6b3a75a7d4a97e673c285ee430a327482ed.tar.gz bsie-a281d6b3a75a7d4a97e673c285ee430a327482ed.tar.bz2 bsie-a281d6b3a75a7d4a97e673c285ee430a327482ed.zip |
preview extractor
Diffstat (limited to 'bsie/lib/naming_policy.py')
-rw-r--r-- | bsie/lib/naming_policy.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/bsie/lib/naming_policy.py b/bsie/lib/naming_policy.py index 360abde..131a70b 100644 --- a/bsie/lib/naming_policy.py +++ b/bsie/lib/naming_policy.py @@ -87,6 +87,8 @@ class DefaultNamingPolicy(NamingPolicy): return node if node.node_type == ns.bsfs.File: return self.name_file(node) + if node.node_type == ns.bsfs.Preview: + return self.name_preview(node) raise errors.ProgrammingError('no naming policy available for {node.node_type}') def name_file(self, node: Node) -> Node: @@ -98,4 +100,21 @@ class DefaultNamingPolicy(NamingPolicy): node.uri = (self._prefix + 'file')[fragment] return node + def name_preview(self, node: Node) -> Node: + """Set a bsfs:Preview node's uri fragment to its ucid. + Uses its source fragment as fallback. Appends the size if provided. + """ + fragment = None + if 'ucid' in node.hints: # content id + fragment = node.hints['ucid'] + if fragment is None and 'source' in node.hints: # source id + self.handle_node(node.hints['source']) + fragment = node.hints['source'].uri.get('fragment', None) + if fragment is None: # random name + fragment = self._uuid() + if 'size' in node.hints: # append size + fragment += '_s' + str(node.hints['size']) + node.uri = (self._prefix + 'preview')[fragment] + return node + ## EOF ## |