From da5f23cde6610a9db15b089e7be3f7705e78a638 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Mon, 7 Mar 2016 21:28:20 +0100 Subject: [PATCH] wip: criticality levels --- wcs/admin/workflows.py | 116 +++++++++++++++++++++++++++++++++++- wcs/backoffice/management.py | 56 ++++++++++++++++- wcs/formdata.py | 2 + wcs/forms/backoffice.py | 24 +++++++- wcs/forms/common.py | 14 ----- wcs/qommon/static/css/dc2/admin.css | 31 ++++++++++ wcs/qommon/static/js/biglist.js | 1 + wcs/sql.py | 16 +++-- wcs/wf/criticality.py | 79 ++++++++++++++++++++++++ wcs/workflows.py | 25 ++++++++ 10 files changed, 339 insertions(+), 25 deletions(-) create mode 100644 wcs/wf/criticality.py diff --git a/wcs/admin/workflows.py b/wcs/admin/workflows.py index 743b5c8..7c68467 100644 --- a/wcs/admin/workflows.py +++ b/wcs/admin/workflows.py @@ -949,6 +949,84 @@ class FunctionsDirectory(Directory): return redirect('..') +class CriticalityLevelsDirectory(Directory): + _q_exports = ['', 'new'] + + def __init__(self, workflow): + self.workflow = workflow + + def _q_traverse(self, path): + get_response().breadcrumb.append( + ('criticality-levels/', _('Criticality Levels'))) + return Directory._q_traverse(self, path) + + def new(self): + form = Form(enctype='multipart/form-data') + form.add(StringWidget, 'name', title=_('Name'), required=True, size=50) + form.add(ColourWidget, 'colour', title=_('Colour'), required=False) + form.add_submit('submit', _('Add')) + form.add_submit('cancel', _('Cancel')) + if form.get_widget('cancel').parse(): + return redirect('..') + + if form.is_submitted() and not form.has_errors(): + if not self.workflow.criticality_levels: + self.workflow.criticality_levels = [] + level = WorkflowCriticalityLevel() + level.name = form.get_widget('name').parse() + level.colour = form.get_widget('colour').parse() + self.workflow.criticality_levels.append(level) + self.workflow.store() + return redirect('..') + + get_response().breadcrumb.append(('new', _('New Criticality Level'))) + html_top('workflows', title=_('New Criticality level')) + r = TemplateIO(html=True) + r += htmltext('

%s

') % _('New Criticality Level') + r += form.render() + return r.getvalue() + + def _q_lookup(self, component): + for level in (self.workflow.criticality_levels or []): + if level.id == component: + break + else: + raise errors.TraversalError() + + form = Form(enctype='multipart/form-data') + form.add(StringWidget, 'name', title=_('Name'), required=True, size=50, + value=level.name) + form.add(ColourWidget, 'colour', title=_('Colour'), required=False, + value=level.colour) + form.add_submit('submit', _('Submit')) + form.add_submit('cancel', _('Cancel')) + form.add_submit('delete', _('Delete')) + + if form.get_widget('cancel').parse(): + return redirect('..') + + if form.get_submit() == 'delete': + self.workflow.criticality_levels.remove(level) + self.workflow.store() + return redirect('..') + + if form.is_submitted() and not form.has_errors(): + level.name = form.get_widget('name').parse() + level.colour = form.get_widget('colour').parse() + self.workflow.store() + return redirect('..') + + get_response().breadcrumb.append(('new', _('Edit Criticality Level'))) + html_top('workflows', title=_('Edit Criticality Level')) + r = TemplateIO(html=True) + r += htmltext('

%s

') % _('Edit Criticality Level') + r += form.render() + return r.getvalue() + + def _q_index(self): + return redirect('..') + + class GlobalActionPage(WorkflowStatusPage): _q_exports = ['', 'new', 'delete', 'newitem', ('items', 'items_dir'), 'edit', ('triggers', 'triggers_dir'), @@ -1139,8 +1217,10 @@ class GlobalActionsDirectory(Directory): class WorkflowPage(Directory): _q_exports = ['', 'edit', 'delete', 'newstatus', ('status', 'status_dir'), 'update_order', 'duplicate', 'export', 'svg', ('variables', 'variables_dir'), - 'update_actions_order', - ('functions', 'functions_dir'), ('global-actions', 'global_actions_dir')] + 'update_actions_order', 'update_criticality_levels_order', + ('functions', 'functions_dir'), ('global-actions', 'global_actions_dir'), + ('criticality-levels', 'criticality_levels_dir'), + ] def __init__(self, component, html_top): try: @@ -1153,6 +1233,7 @@ class WorkflowPage(Directory): self.variables_dir = VariablesDirectory(self.workflow) self.functions_dir = FunctionsDirectory(self.workflow) self.global_actions_dir = GlobalActionsDirectory(self.workflow, html_top) + self.criticality_levels_dir = CriticalityLevelsDirectory(self.workflow) get_response().breadcrumb.append((component + '/', self.workflow.name)) def _q_index(self): @@ -1257,7 +1338,7 @@ class WorkflowPage(Directory): r += htmltext('