diff --git a/core/controller/ticket_controller.py b/core/controller/ticket_controller.py index 0191d7f..da231bc 100644 --- a/core/controller/ticket_controller.py +++ b/core/controller/ticket_controller.py @@ -167,6 +167,7 @@ def get_editing_info(self, obj): not_done = status != 'done' editing_info['input'] = not_done editing_info['__steps'] = not_done + editing_info['job_dict_overwrite'] = not_done for step_index, _ in enumerate(obj.get('steps')): editing_info['steps'].append({'subcampaign': step_index > 0 and not_done, 'processing_string': step_index > 0 and not_done, @@ -184,6 +185,7 @@ def create_requests_for_ticket(self, ticket): ticket_prepid = ticket.get_prepid() created_requests = [] request_controller = RequestController() + ticket_job_overwrite = ticket.get('job_dict_overwrite') with self.locker.get_lock(ticket_prepid): ticket = Ticket(json_input=database.get(ticket_prepid)) created_requests = ticket.get('created_requests') @@ -201,6 +203,7 @@ def create_requests_for_ticket(self, ticket): for step_index, step in enumerate(ticket.get('steps')): subcampaign_name = step['subcampaign'] new_request_json = {'subcampaign': subcampaign_name, + 'job_dict_overwrite': ticket_job_overwrite, 'priority': step['priority'], 'processing_string': step['processing_string'], 'time_per_event': step['time_per_event'], diff --git a/core/model/ticket.py b/core/model/ticket.py index 331f7f1..054673c 100644 --- a/core/model/ticket.py +++ b/core/model/ticket.py @@ -28,6 +28,9 @@ class Ticket(ModelBase): 'status': 'new', # List of dicts that have subcampaign, processing_string, size/time per event values 'steps': [], + # Manual overwrite of job dictionary for the request to be created + # a default template for them + 'job_dict_overwrite': {}, } lambda_checks = { diff --git a/scripts/add_job_dict_overwrite.py b/scripts/add_job_dict_overwrite.py index bcfb9a5..3088841 100644 --- a/scripts/add_job_dict_overwrite.py +++ b/scripts/add_job_dict_overwrite.py @@ -8,7 +8,7 @@ Database.set_credentials_file(os.getenv('DB_AUTH')) Database.set_database_name('rereco') -database = Database('requests') +database = Database('tickets') total_entries = database.get_count() diff --git a/vue_frontend/src/components/TicketsEdit.vue b/vue_frontend/src/components/TicketsEdit.vue index 42449ef..6d4b221 100644 --- a/vue_frontend/src/components/TicketsEdit.vue +++ b/vue_frontend/src/components/TicketsEdit.vue @@ -8,6 +8,13 @@ PrepID + + Job dict overwrite + + Edit + + + Steps ({{listLength(editableObject.steps)}}) @@ -155,12 +162,14 @@ import axios from 'axios' import { utilsMixin } from '../mixins/UtilsMixin.js' import LoadingOverlay from './LoadingOverlay.vue' import Autocompleter from './Autocompleter.vue' +import JSONField from './JSONField.vue' export default { name: 'TicketsEdit', components: { LoadingOverlay, - Autocompleter + Autocompleter, + JSONField }, mixins: [ utilsMixin @@ -170,6 +179,7 @@ export default { prepid: undefined, editableObject: {}, editingInfo: {}, + showJobDictOverwrite: false, loading: true, creatingNew: true, errorDialog: { @@ -219,6 +229,7 @@ export default { templateInfo.input = templateInfo.input.filter(Boolean).join('\n'); component.editableObject = templateInfo; component.editingInfo = editingInfo; + component.showJobDictOverwrite = Object.keys(component.editableObject.job_dict_overwrite) != 0; component.loading = false; }).catch(error => { component.loading = false; @@ -232,6 +243,7 @@ export default { } component.editableObject = objectInfo; component.editingInfo = editingInfo; + component.showJobDictOverwrite = Object.keys(component.editableObject.job_dict_overwrite) != 0; if (component.creatingNew) { component.addStep(); } @@ -402,6 +414,27 @@ export default { window.location = 'subcampaigns?prepid=' + this.prepid; } }, + toggleJobDictOverwrite: function() { + if (this.showJobDictOverwrite) { + this.showJobDictOverwrite = false; + return; + } + const component = this; + if (confirm('Are you sure you know what you are doing? This is a very dangerous action!')) { + component.showJobDictOverwrite = true; + } + }, } } + + \ No newline at end of file