def post(self, request, *args, **kwargs): form = self.form_class(request.POST) if not form.is_valid(): return self.json_response(form.errors, status=404) data = form.cleaned_data task_names = set([i.split('_')[0] for i in data if i != 'parse']) custom_task_names = task_names & self.custom_tasks lexnlp_task_names = task_names - self.custom_tasks # custom tasks rejected_tasks = [] started_tasks = [] for task_name in custom_task_names: kwargs = {k.replace('%s_' % task_name, ''): v for k, v in data.items() if k.startswith(task_name)} if any(kwargs.values()): kwargs['user_id'] = request.user.pk if Task.disallow_start(task_name): rejected_tasks.append(task_name) else: started_tasks.append(task_name) locator_result_link = self.locator_result_links_map.get(task_name) if locator_result_link: kwargs['metadata'] = {'result_links': [locator_result_link]} call_task(task_name, **kwargs) # lexnlp tasks lexnlp_task_data = dict() for task_name in lexnlp_task_names: kwargs = {k.replace('%s_' % task_name, ''): v for k, v in data.items() if k.startswith(task_name)} if any(kwargs.values()): lexnlp_task_data[task_name] = kwargs if lexnlp_task_data: if Task.disallow_start('Locate'): rejected_tasks.append('Locate') else: started_tasks.append('Locate') call_task('Locate', tasks=lexnlp_task_data, parse=data['parse'], user_id=request.user.pk, metadata={ 'description': [i for i, j in lexnlp_task_data.items() if j.get('locate')], 'result_links': [self.locator_result_links_map[i] for i, j in lexnlp_task_data.items() if j.get('locate')]}) response_text = '' if started_tasks: response_text += 'The Task is started. It can take a while.<br />' response_text += 'Started tasks: [{}].<br />'.format(', '.join(started_tasks)) if rejected_tasks: response_text += 'Some tasks were rejected (already started).<br />' response_text += 'Rejected Tasks: [{}]'.format(', '.join(rejected_tasks)) return self.json_response(response_text)
def post(self, request, *args, **kwargs): data = request.POST.dict() if not data: return self.json_response('error', status=404) data['user_id'] = request.user.pk rejected_tasks = [] started_tasks = [] for task_alias, metadata in self.tasks_map.items(): task_name = metadata['task_name'] if Task.disallow_start(task_name): rejected_tasks.append(task_name) continue repo_paths = [ '{}/{}/{}'.format(settings.GIT_DATA_REPO_ROOT, j.replace('{}_locale_'.format(i), ''), self.paths_map[i]) for i in data if i.startswith(task_alias) and i in self.paths_map for j in data if j.startswith('{}_locale_'.format(i)) ] file_path = data.get('{}_file_path'.format(task_alias)) or None delete = '{}_delete'.format(task_alias) in data if any([repo_paths, file_path, delete]): call_task(task_name, repo_paths=repo_paths, file_path=file_path, delete=delete, metadata=metadata) started_tasks.append(task_name) return self.json_response('The task is started. It can take a while.')
def post(self, request, *args, **kwargs): data = request.POST.dict() if not data: return self.json_response('error', status=404) data['user_id'] = request.user.pk rejected_tasks = [] started_tasks = [] for task_alias, metadata in self.tasks_map.items(): task_name = metadata['task_name'] if Task.disallow_start(task_name): rejected_tasks.append(task_name) continue repo_paths = [ '{}/{}/{}'.format(settings.GIT_DATA_REPO_ROOT, j.replace('{}_locale_'.format(i), ''), DICTIONARY_DATA_URL_MAP[i]) for i in data if i.startswith(task_alias) and i in DICTIONARY_DATA_URL_MAP for j in data if j.startswith('{}_locale_'.format(i)) ] file_path = data.get('{}_file_path'.format(task_alias)) or None delete = '{}_delete'.format(task_alias) in data if any([repo_paths, file_path, delete]): try: call_task(task_name, repo_paths=repo_paths, file_path=file_path, delete=delete, metadata=metadata) except Exception as e: return self.json_response(str(e), status=400) started_tasks.append(task_name) return self.json_response(TASK_STARTED_MESSAGE)
def get(self, request, *args, **kwargs): if Task.disallow_start(self.task_name): return HttpResponseForbidden( 'Forbidden. Task "%s" is already started.' % self.task_name) else: form = self.form_class() data = dict(header=form.header, form_class=self.html_form_class, form_data=form.as_p()) return self.json_response(data)
def post(self, request, *args, **kwargs): if Task.disallow_start(self.task_name): return HttpResponseForbidden( 'Forbidden. Such task is already started.') if self.form_class is None: data = request.POST.dict() else: form = self.form_class(request.POST) if not form.is_valid(): return self.json_response(form.errors, status=400) data = form.cleaned_data data['user_id'] = request.user.pk data['metadata'] = self.get_metadata() call_task(self.task_name, **data) return self.json_response('The task is started. It can take a while.')
def post(self, request, *args, **kwargs): form = self.form_class(request.POST) if not form.is_valid(): return self.json_response(form.errors, status=400) data = form.cleaned_data project_id = None project_ref = data.get('project') if project_ref: del data['project'] project_id = project_ref.pk task_names = set([i.split('_')[0] for i in data if i != 'parse']) custom_task_names = task_names & self.custom_tasks lexnlp_task_names = task_names - self.custom_tasks # custom tasks rejected_tasks = [] started_tasks = [] for task_name in custom_task_names: kwargs = { k.replace('%s_' % task_name, ''): v for k, v in data.items() if k.startswith(task_name) } if any(kwargs.values()): kwargs['user_id'] = request.user.pk if Task.disallow_start(task_name): rejected_tasks.append(task_name) else: started_tasks.append(task_name) locator_result_link = self.locator_result_links_map.get( task_name) if locator_result_link: kwargs['metadata'] = { 'result_links': [locator_result_link] } try: call_task(task_name, **kwargs) except Exception as e: return self.json_response(str(e), status=400) # lexnlp tasks lexnlp_task_data = dict() for task_name in lexnlp_task_names: kwargs = { k.replace('%s_' % task_name, ''): v for k, v in data.items() if k.startswith(task_name) } if any(kwargs.values()): lexnlp_task_data[task_name] = kwargs if lexnlp_task_data: # allow to start "Locate" task anytime started_tasks.append('Locate({})'.format(', '.join( lexnlp_task_data.keys()))) try: call_task('Locate', tasks=lexnlp_task_data, parse=data['parse'], user_id=request.user.pk, project_id=project_id, metadata={ 'description': [ i for i, j in lexnlp_task_data.items() if j.get('locate') ], 'result_links': [ self.locator_result_links_map[i] for i, j in lexnlp_task_data.items() if j.get('locate') ] }) except Exception as e: return self.json_response(str(e), status=400) response_text = '' if started_tasks: response_text += f'{TASK_STARTED_MESSAGE}<br /><br />' response_text += 'Started tasks: [{}].<br />'.format( ', '.join(started_tasks)) if rejected_tasks: response_text += 'Some tasks were rejected (already started).<br />' response_text += 'Rejected Tasks: [{}]'.format( ', '.join(rejected_tasks)) return self.json_response(response_text)
def disallow_start(self): return Task.disallow_start(self.task_name)