Skip to content
Snippets Groups Projects
Commit a621fe48 authored by Todd Dembrey's avatar Todd Dembrey
Browse files

Add a public display name to the Phase

parent 4bcff286
No related branches found
No related tags found
No related merge requests found
......@@ -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 }}" />
......
......@@ -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):
......
......@@ -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]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment