From 612571b4b23a30fbcda6ffdf272f1a70c524f420 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Tue, 18 Oct 2016 12:10:43 +0200 Subject: [PATCH] Added node URL finders for tasks and shots --- attract/__init__.py | 5 ++++- attract/node_url_finders.py | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 attract/node_url_finders.py diff --git a/attract/__init__.py b/attract/__init__.py index 3dcd218..2bab4fe 100644 --- a/attract/__init__.py +++ b/attract/__init__.py @@ -81,7 +81,7 @@ class AttractExtension(PillarExtension): return os.path.join(os.path.dirname(__file__), 'static') def setup_app(self, app): - """Connects Blinker signals.""" + """Connects Blinker signals and sets up other app-dependent stuff in submodules.""" from . import subversion, tasks, eve_hooks, subquery, shots @@ -91,6 +91,9 @@ class AttractExtension(PillarExtension): eve_hooks.setup_app(app) subquery.setup_app(app) + # Imports for side-effects + from . import node_url_finders + def attract_projects(self): """Returns projects set up for Attract. diff --git a/attract/node_url_finders.py b/attract/node_url_finders.py new file mode 100644 index 0000000..5910ae0 --- /dev/null +++ b/attract/node_url_finders.py @@ -0,0 +1,23 @@ +from flask import url_for + +from pillar.web.nodes.finders import register_node_finder + +from attract.node_types.shot import node_type_shot +from attract.node_types.task import node_type_task + + +@register_node_finder(node_type_shot['name']) +def find_for_shot(project, node): + return url_for('attract.shots.perproject.view_shot', + project_url=project['url'], + shot_id=node['_id']) + + +@register_node_finder(node_type_task['name']) +def find_for_task(project, node): + if node['parent']: + endpoint = 'attract.shots.perproject.with_task' + else: + endpoint = 'attract.tasks.perproject.view_task' + + return url_for(endpoint, project_url=project['url'], task_id=node['_id'])