Skip to content

Commit 533be26

Browse files
Merge pull request #181 from pneumaticapp/backend/workflow/45289__the_task_name_is_substituted_with_raw_text_workflow_starter
45289 backend [ workflow ] The task name is substituted with raw text {{workflow starter}}
2 parents 797a94d + 04d53ac commit 533be26

5 files changed

Lines changed: 81 additions & 18 deletions

File tree

backend/src/processes/models/workflows/workflow.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
TaskFieldQuerySet,
1717
WorkflowQuerySet,
1818
)
19+
from src.processes.utils.common import get_workflow_starter_name
1920

2021
UserModel = get_user_model()
2122

@@ -185,3 +186,39 @@ def is_running(self):
185186
@property
186187
def is_completed(self):
187188
return self.status == WorkflowStatus.DONE
189+
190+
def get_kickoff_fields_markdown_values(
191+
self,
192+
fields_filter_kwargs: Optional[Dict] = None,
193+
) -> Dict[str, str]:
194+
"""Extends parent method by adding the workflow-starter
195+
system variable to the substitution dictionary."""
196+
197+
fields_values = super().get_kickoff_fields_markdown_values(
198+
fields_filter_kwargs=fields_filter_kwargs,
199+
)
200+
201+
fields_values['workflow-starter'] = get_workflow_starter_name(
202+
self.workflow_starter,
203+
)
204+
return fields_values
205+
206+
def get_fields_markdown_values(
207+
self,
208+
tasks_filter_kwargs: Optional[Dict] = None,
209+
tasks_exclude_kwargs: Optional[Dict] = None,
210+
fields_filter_kwargs: Optional[Dict] = None,
211+
) -> Dict[str, str]:
212+
"""Extends parent method by adding the workflow-starter
213+
system variable to the substitution dictionary."""
214+
215+
fields_values = super().get_fields_markdown_values(
216+
tasks_filter_kwargs=tasks_filter_kwargs,
217+
tasks_exclude_kwargs=tasks_exclude_kwargs,
218+
fields_filter_kwargs=fields_filter_kwargs,
219+
)
220+
221+
fields_values['workflow-starter'] = get_workflow_starter_name(
222+
self.workflow_starter,
223+
)
224+
return fields_values

backend/src/processes/services/workflow_action.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
from django.db.models import Q
88
from django.utils import timezone
99

10-
from src.processes.utils.common import get_workflow_starter_name
1110
from src.analysis.services import AnalyticService
1211
from src.authentication.enums import AuthTokenType
1312
from src.authentication.services.guest_auth import GuestJWTAuthService
@@ -319,9 +318,6 @@ def skip_task(
319318
user=self.user or self.workflow.account.get_owner(),
320319
)
321320
fields_values = self.workflow.get_fields_markdown_values()
322-
fields_values['workflow-starter'] = get_workflow_starter_name(
323-
self.workflow.workflow_starter,
324-
)
325321
task_service.insert_fields_values(fields_values=fields_values)
326322

327323
WorkflowEventService.task_skip_event(task)
@@ -403,9 +399,6 @@ def start_workflow(self):
403399
for task in tasks:
404400
task_service = TaskService(instance=task, user=self.user)
405401
fields_values = self.workflow.get_kickoff_fields_markdown_values()
406-
fields_values['workflow-starter'] = get_workflow_starter_name(
407-
self.workflow.workflow_starter,
408-
)
409402

410403
task_service.insert_fields_values(fields_values=fields_values)
411404

@@ -634,9 +627,6 @@ def start_task(
634627
user=self.user or self.workflow.account.get_owner(),
635628
)
636629
fields_values = self.workflow.get_fields_markdown_values()
637-
fields_values['workflow-starter'] = get_workflow_starter_name(
638-
self.workflow.workflow_starter,
639-
)
640630
task_service.insert_fields_values(fields_values=fields_values)
641631
task.update_performers(restore_performers=True)
642632
task_performers_exists = (

backend/src/processes/tests/test_models/test_workflow.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,27 @@ def test_get_kickoff_fields_values__ok(self, mocker):
8080

8181
# assert
8282
kickoff_output_fields_mock.assert_called_once()
83+
84+
def test_get_fields_markdown_values__workflow_starter__ok(self):
85+
# arrange
86+
user = create_test_user()
87+
workflow = create_test_workflow(user=user)
88+
89+
# act
90+
fields_values = workflow.get_fields_markdown_values()
91+
92+
# assert
93+
assert 'workflow-starter' in fields_values
94+
assert fields_values['workflow-starter'] == user.name
95+
96+
def test_get_kickoff_fields_markdown_values__workflow_starter__ok(self):
97+
# arrange
98+
user = create_test_user()
99+
workflow = create_test_workflow(user=user)
100+
101+
# act
102+
fields_values = workflow.get_kickoff_fields_markdown_values()
103+
104+
# assert
105+
assert 'workflow-starter' in fields_values
106+
assert fields_values['workflow-starter'] == user.name

backend/src/processes/tests/test_services/test_tasks/test_task_version_service.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -220,17 +220,21 @@ def test_update_from_version__only_required_fields__ok(mocker):
220220
)
221221

222222
# assert
223+
expected_fields_values = {
224+
field_api_name: field_markdown_value,
225+
'workflow-starter': user.name,
226+
}
223227
create_or_update_instance_mock.assert_called_once_with(
224228
data=data,
225229
workflow=workflow,
226-
fields_values={field_api_name: field_markdown_value},
230+
fields_values=expected_fields_values,
227231
)
228232
update_fields_mock.assert_called_once_with(data=None)
229233
update_conditions_mock.assert_called_once_with(data=None)
230234
update_checklists_mock.assert_called_once_with(
231235
data=None,
232236
version=version,
233-
fields_values={field_api_name: field_markdown_value},
237+
fields_values=expected_fields_values,
234238
)
235239
update_raw_due_date_mock.assert_called_once_with(data=None)
236240
set_due_date_from_template.assert_called_once()
@@ -376,10 +380,14 @@ def test_update_from_version__all_fields__active_task__ok(mocker):
376380
)
377381

378382
# assert
383+
expected_fields_values = {
384+
field_api_name: field_markdown_value,
385+
'workflow-starter': user.name,
386+
}
379387
create_or_update_instance_mock.assert_called_once_with(
380388
data=data,
381389
workflow=workflow,
382-
fields_values={field_api_name: field_markdown_value},
390+
fields_values=expected_fields_values,
383391
)
384392
update_fields_mock.assert_called_once_with(
385393
data=data['fields'],
@@ -390,7 +398,7 @@ def test_update_from_version__all_fields__active_task__ok(mocker):
390398
update_checklists_mock.assert_called_once_with(
391399
data=data['checklists'],
392400
version=version,
393-
fields_values={field_api_name: field_markdown_value},
401+
fields_values=expected_fields_values,
394402
)
395403
update_raw_due_date_mock.assert_called_once_with(
396404
data=data['raw_due_date'],
@@ -540,10 +548,14 @@ def test_update_from_version__inactive_task_field_value__insert_null(
540548
)
541549

542550
# assert
551+
expected_fields_values = {
552+
field_api_name: None,
553+
'workflow-starter': user.name,
554+
}
543555
create_or_update_instance_mock.assert_called_once_with(
544556
data=data,
545557
workflow=workflow,
546-
fields_values={field_api_name: None},
558+
fields_values=expected_fields_values,
547559
)
548560
update_fields_mock.assert_called_once_with(
549561
data=data['fields'],
@@ -554,7 +566,7 @@ def test_update_from_version__inactive_task_field_value__insert_null(
554566
update_checklists_mock.assert_called_once_with(
555567
data=data['checklists'],
556568
version=version,
557-
fields_values={field_api_name: None},
569+
fields_values=expected_fields_values,
558570
)
559571
update_raw_due_date_mock.assert_called_once_with(
560572
data=data['raw_due_date'],

frontend/src/public/lang/locales/ru_RU.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -800,7 +800,7 @@ export const ruMessages = {
800800
'workflows.log-workflow-ended': 'Процесс завершен',
801801
'workflows.log-comment-field-placeholder': 'Ваш комментарий...',
802802
'workflows.log-task-started': 'Начато',
803-
'workflows.log-skipped-tasks': 'Пропущенные',
803+
'workflows.log-skipped-tasks': 'Пропущено',
804804
'workflows.log-task-skipped': 'Шаг пропущен по условию',
805805
'workflows.empty-tasks-reminder': 'Пожалуйста, создайте ваш первый шаблон и запустите Процесс:',
806806
'workflows.tasks-failed-to-delete-file': 'Не удалось удалить файл',
@@ -834,7 +834,7 @@ export const ruMessages = {
834834
'workflows.user-added': 'Пользователь добавлен',
835835
'workflows.user-removed': 'Пользователь удален',
836836
'workflows.name': 'Название процесса',
837-
'workflows.tooltip-header': 'Завершено {completedTasks} из {tasksCountWithoutSkipped}',
837+
'workflows.tooltip-header': 'Выполнено {completedTasks} из {tasksCountWithoutSkipped}',
838838
'workflows.checklists-header': 'Чек листы',
839839
'workflows.checklists-counter': '{marked}/{total}',
840840
'workflows.event-snoozed-until': 'Процесс отложен до {date}',

0 commit comments

Comments
 (0)