Pipelines:
- {% for pipeline in pipelines %}
+ {% for pipeline_key, pipeline_info in pipelines.items %}
-
- {{ pipeline.name }}
+
+ {{ pipeline_key }}
-
+
- {{ pipeline.description }}
+ {{ pipeline_info.description }}
- {% for step in pipeline.steps %}
- {{ step.name }}
- {{ step.doc }}
- {% if not forloop.last %}↓
{% endif %}
- {% endfor %}
+ {% for step in pipeline_info.steps %}
+ {{ step.name }}
+ {{ step.doc }}
+ {% if not forloop.last %}↓
{% endif %}
+ {% endfor %}
- {{ pipeline.description }}
+ {{ pipeline_info.description }}
{% endfor %}
diff --git a/scanpipe/tests/test_pipelines.py b/scanpipe/tests/test_pipelines.py
index 1c6873677..c160f6ef0 100644
--- a/scanpipe/tests/test_pipelines.py
+++ b/scanpipe/tests/test_pipelines.py
@@ -68,6 +68,17 @@ def test_scanpipe_pipelines_class_get_doc(self):
self.assertEqual(expected, pipeline_class.get_doc())
self.assertEqual(expected, pipeline_instance.get_doc())
+ def test_scanpipe_pipelines_class_get_info(self):
+ expected = {
+ "name": "DoNothing",
+ "description": "A pipeline that does nothing, in 2 steps.",
+ "steps": [
+ {"name": "step1", "doc": "Step1 doc."},
+ {"name": "step2", "doc": "Step2 doc."},
+ ],
+ }
+ self.assertEqual(expected, DoNothing.get_info())
+
def test_scanpipe_pipeline_class_log(self):
project1 = Project.objects.create(name="Analysis")
run = project1.add_pipeline("do_nothing")
diff --git a/scanpipe/views.py b/scanpipe/views.py
index 19c3b6cfa..ae1e3e746 100644
--- a/scanpipe/views.py
+++ b/scanpipe/views.py
@@ -76,14 +76,10 @@ class ProjectCreateView(generic.CreateView):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
- context["pipelines"] = [
- {
- "name": name,
- "description": pipeline_class.get_doc(),
- "steps": pipeline_class.get_graph(),
- }
- for name, pipeline_class in scanpipe_app_config.pipelines.items()
- ]
+ context["pipelines"] = {
+ key: pipeline_class.get_info()
+ for key, pipeline_class in scanpipe_app_config.pipelines.items()
+ }
return context
def get_success_url(self):