From a621fe488fbaaa60563456470d49852681083fad Mon Sep 17 00:00:00 2001 From: Todd Dembrey <todd.dembrey@torchbox.com> Date: Mon, 18 Dec 2017 15:16:57 +0000 Subject: [PATCH] Add a public display name to the Phase --- .../apply/templates/apply/demo_workflow.html | 3 ++- opentech/apply/tests/test_workflow.py | 17 +++++++++++++++++ opentech/apply/workflow.py | 18 +++++++++++++----- 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/opentech/apply/templates/apply/demo_workflow.html b/opentech/apply/templates/apply/demo_workflow.html index e81ec67c7..6817653d7 100644 --- a/opentech/apply/templates/apply/demo_workflow.html +++ b/opentech/apply/templates/apply/demo_workflow.html @@ -17,7 +17,8 @@ <section class="container"> <h2>{{ workflow}}</h2> <h3>{{ phase.stage }}</h3> - <h4>{{ phase.name }}</h4> + <h4>OTF: {{ phase.name }}</h4> + <h4>Public: {{ phase.public_name }}</h4> <form method="post"> {% csrf_token %} <input id="current" type="hidden" name="current" value="{{ phase }}" /> diff --git a/opentech/apply/tests/test_workflow.py b/opentech/apply/tests/test_workflow.py index 770c5091b..5770b0d66 100644 --- a/opentech/apply/tests/test_workflow.py +++ b/opentech/apply/tests/test_workflow.py @@ -69,6 +69,23 @@ class TestPhaseCreation(SimpleTestCase): phase = PhaseFactory(actions=actions) self.assertEqual(phase[action.name], action) + def test_uses_name_if_no_public(self): + phase = Phase('Phase Name') + self.assertEqual(phase.public_name, phase.name) + + def test_uses_public_if_provided(self): + public_name = 'Public Name' + phase = Phase('Phase Name', public_name=public_name) + self.assertEqual(phase.public_name, public_name) + self.assertNotEqual(phase.public_name, phase.name) + + def test_uses_public_if_provided_on_class(self): + class NewPhase(Phase): + public_name = 'Public Name' + phase = NewPhase('Phase Name') + self.assertEqual(phase.public_name, NewPhase.public_name) + self.assertNotEqual(phase.public_name, phase.name) + class TestActions(SimpleTestCase): def test_can_create_action(self): diff --git a/opentech/apply/workflow.py b/opentech/apply/workflow.py index dd24aa001..c7ff5b158 100644 --- a/opentech/apply/workflow.py +++ b/opentech/apply/workflow.py @@ -115,10 +115,17 @@ class Stage: class Phase: actions: Sequence['Action'] = list() name: str = '' + public_name: str = '' - def __init__(self, name: str='') -> None: + def __init__(self, name: str='', public_name:str = '') -> None: if name: self.name = name + + if public_name: + self.public_name = public_name + elif not self.public_name: + self.public_name = self.name + self._internal = slugify(self.name) self.stage: Union['Stage', None] = None self._actions = {action.name: action for action in self.actions} @@ -160,10 +167,8 @@ class ChangePhaseAction(Action): def process(self, phase: 'Phase') -> Union['Phase', None]: if isinstance(self.target_phase, str): - phase = globals()[self.target_phase] - else: - phase = self.target_phase - return phase + return phase.stage.current(self.target_phase, '0') + return self.target_phase class NextPhaseAction(Action): @@ -182,16 +187,19 @@ next_phase = NextPhaseAction('Progress') class ReviewPhase(Phase): name = 'Internal Review' + public_name = 'In review' actions = [NextPhaseAction('Close Review')] class DeterminationWithProgressionPhase(Phase): name = 'Under Discussion' + public_name = 'In review' actions = [progress_stage, reject_action] class DeterminationWithNextPhase(Phase): name = 'Under Discussion' + public_name = 'In review' actions = [NextPhaseAction('Open Review'), reject_action] -- GitLab