From 4df434cdfb42b7afac3f8a4781c4aa0a3005d092 Mon Sep 17 00:00:00 2001 From: Sawyer Bergeron Date: Fri, 14 Dec 2018 16:05:47 -0500 Subject: Implement Segmented Workflows A major source of bugs has been how we've approached inlining workflows. We no longer inline them as of this commit, and instead use a stack structure. This commits the result of workflows to the database before other workflows try to read them, so we don't have to maintain a code path for when something is or isn't committed to db. This patchset allows for workflows to pass limited information to preset selections Change-Id: I3d040c7f3024c7420017ae4ec66a23219303dcb6 Signed-off-by: Sawyer Bergeron --- dashboard/src/workflow/forms.py | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) (limited to 'dashboard/src/workflow/forms.py') diff --git a/dashboard/src/workflow/forms.py b/dashboard/src/workflow/forms.py index feb32f2..f781663 100644 --- a/dashboard/src/workflow/forms.py +++ b/dashboard/src/workflow/forms.py @@ -41,6 +41,7 @@ class SearchableSelectMultipleWidget(widgets.SelectMultiple): self.default_entry = attrs.get("default_entry", "") self.edit = attrs.get("edit", False) self.wf_type = attrs.get("wf_type") + self.incompatible = attrs.get("incompatible", "false") super(SearchableSelectMultipleWidget, self).__init__(attrs) @@ -61,7 +62,8 @@ class SearchableSelectMultipleWidget(widgets.SelectMultiple): 'initial': self.initial, 'default_entry': self.default_entry, 'edit': self.edit, - 'wf_type': self.wf_type + 'wf_type': self.wf_type, + 'incompatible': self.incompatible } @@ -101,13 +103,6 @@ class ResourceSelectorForm(forms.Form): displayable['id'] = res.id resources[res.id] = displayable - if bundle: - displayable = {} - displayable['small_name'] = bundle.name - displayable['expanded_name'] = "Current bundle" - displayable['string'] = bundle.description - displayable['id'] = "repo bundle" - resources["repo bundle"] = displayable attrs = { 'set': resources, 'show_from_noentry': "true", @@ -159,13 +154,15 @@ class SWConfigSelectorForm(forms.Form): displayable['id'] = config.id configs[config.id] = displayable - if bundle: + incompatible_choice = "false" + if bundle and bundle.id not in configs: displayable = {} displayable['small_name'] = bundle.name - displayable['expanded_name'] = "Current configuration" + displayable['expanded_name'] = bundle.owner.username displayable['string'] = bundle.description - displayable['id'] = "repo bundle" - configs['repo bundle'] = displayable + displayable['id'] = bundle.id + configs[bundle.id] = displayable + incompatible_choice = "true" attrs = { 'set': configs, @@ -177,7 +174,8 @@ class SWConfigSelectorForm(forms.Form): 'placeholder': "config", 'initial': chosen, 'edit': edit, - 'wf_type': 2 + 'wf_type': 2, + 'incompatible': incompatible_choice } return attrs -- cgit 1.2.3-korg