aboutsummaryrefslogtreecommitdiffstats
path: root/bsie/lib/naming_policy.py
diff options
context:
space:
mode:
Diffstat (limited to 'bsie/lib/naming_policy.py')
-rw-r--r--bsie/lib/naming_policy.py19
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 ##