def import_templates(request, biz_cc_id): f = request.FILES.get('data_file', None) form_data = TemplateImportForm(request.POST) if not form_data.is_valid(): return JsonResponse({'result': False, 'message': form_data.errors}) override = form_data.clean()['override'] r = read_template_data_file(f) if not r['result']: return JsonResponse(r) templates_data = r['data']['template_data'] try: result = TaskTemplate.objects.import_templates(templates_data, override, biz_cc_id) except Exception as e: logger.error(traceback.format_exc(e)) return JsonResponse({ 'result': False, 'message': 'invalid flow data or error occur, please contact administrator' }) return JsonResponse(result)
def import_common_template(request): if not check_white_apps(request): return JsonResponse({ 'result': False, 'message': 'you have no permission to call this api.' }) f = request.FILES.get('data_file', None) r = read_template_data_file(f) if not r['result']: return JsonResponse(r) override = BooleanField().to_python(request.POST.get('override', False)) try: import_result = CommonTemplate.objects.import_templates( r['data']['template_data'], override) except Exception as e: logger.exception(e) return JsonResponse({ 'result': False, 'message': 'invalid flow data or error occur, please contact administrator' }) return JsonResponse(import_result)
def check_before_import(request): f = request.FILES.get('data_file', None) r = read_template_data_file(f) if not r['result']: return JsonResponse(r) check_info = CommonTemplate.objects.import_operation_check( r['data']['template_data']) perms_tuples = [(common_template_resource, [common_template_resource.actions.create.id], None)] if check_info['override_template']: templates_id = [ template_info['id'] for template_info in check_info['override_template'] ] templates = CommonTemplate.objects.filter(id__in=templates_id, is_deleted=False) for template in templates: perms_tuples.append( (common_template_resource, [common_template_resource.actions.edit.id], template)) permissions = verify_or_return_insufficient_perms( principal_type='user', principal_id=request.user.username, perms_tuples=perms_tuples) return JsonResponse({ 'result': True, 'data': check_info, 'permission': permissions })
def import_templates(request, project_id): f = request.FILES.get('data_file', None) form_data = TemplateImportForm(request.POST) if not form_data.is_valid(): return JsonResponse({'result': False, 'message': form_data.errors}) override = form_data.clean()['override'] r = read_template_data_file(f) if not r['result']: return JsonResponse(r) templates_data = r['data']['template_data'] # check again and authenticate check_info = TaskTemplate.objects.import_operation_check( templates_data, project_id) perms_tuples = [] if override: if check_info['new_template']: project = Project.objects.get(id=project_id) perms_tuples.append( (project_resource, [project_resource.actions.create_template.id], project)) if check_info['override_template']: templates_id = [ template_info['id'] for template_info in check_info['override_template'] ] templates = TaskTemplate.objects.filter(id__in=templates_id, project_id=project_id, is_deleted=False) for template in templates: perms_tuples.append( (task_template_resource, [task_template_resource.actions.edit.id], template)) else: project = Project.objects.get(id=project_id) perms_tuples.append( (project_resource, [project_resource.actions.create_template.id], project)) batch_verify_or_raise_auth_failed(principal_type='user', principal_id=request.user.username, perms_tuples=perms_tuples) try: result = TaskTemplate.objects.import_templates(templates_data, override, project_id) except Exception as e: logger.error(traceback.format_exc(e)) return JsonResponse({ 'result': False, 'message': 'invalid flow data or error occur, please contact administrator' }) return JsonResponse(result)
def check_before_import(request, biz_cc_id): f = request.FILES.get('data_file', None) r = read_template_data_file(f) if not r['result']: return JsonResponse(r) check_info = TaskTemplate.objects.import_operation_check( r['data']['template_data'], biz_cc_id) return JsonResponse({'result': True, 'data': check_info})
def import_preset_template_and_replace_job_id(request, biz_cc_id): f = request.FILES.get('data_file', None) r = read_template_data_file(f) if not r['result']: return JsonResponse(r) job_id_map_json = request.POST.get('job_id_map', None) if job_id_map_json is None: return JsonResponse({ 'result': False, 'message': 'job_id_map can not be None' }) # replace str to int try: job_id_map = json.loads(job_id_map_json) except Exception: return JsonResponse({ 'result': False, 'message': 'job_id_map is not a valid json string' }) job_id_map = job_id_map_convert(job_id_map) # replace job id templates_data = r['data']['template_data'] # for each template replace_job_relate_id_in_templates_data(job_id_map, templates_data) try: result = TaskTemplate.objects.import_templates(templates_data, False, biz_cc_id) except Exception as e: logger.error(traceback.format_exc(e)) return JsonResponse({ 'result': False, 'message': 'invalid flow data or error occur, please contact administrator' }) return JsonResponse(result)