def processReplicaScripts(scriptsFile, replica): try: reader = csv.DictReader(scriptsFile, delimiter='\t') except (KeyboardInterrupt, SystemExit): raise except Exception as e: if hasattr(e, 'message'): return True, f'{e.message}', 0, 0 else: return True, f'{e}', 0, 0 # expected CSV structure: # Script Step Slot Task Type Oracle Value last_script = None last_step = None last_script_num = 0 last_step_num = 0 _candidates = 0 try: with transaction.atomic(): for row in reader: # print(row['Script'], row['Step'], row['Slot'], row['Task Type'], row['Oracle'], row['Value']) _script, _step, _slot, _tasktype, _oracle, _value = row['Script'], row['Step'], row['Slot'], row['Task Type'], row['Oracle'], row['Value'] if last_script_num != _script: last_script = Script(replica=replica, script_num=_script, status=Script.STATUS_FREE, contactme=False, withdraw=False) last_script.save() last_script_num = _script last_step = None last_step_num = 0 _candidates = _candidates + 1 if last_step_num != _step: last_step = Step(script=last_script, step_num=_step, tasktype=_tasktype, oracle=_oracle) last_step.save() last_step_num = _step component = Component(step=last_step, slot_num=_slot, tasktype=_tasktype, value=_value) component.save() except KeyError: # rollback changes replica.scripts.all().delete() return True, 'Badly formed CSV file \n(expected: Script\tStep\tSlot\tTask Type\tOracle\tValue)', 0, 0 except (KeyboardInterrupt, SystemExit): # rollback changes replica.scripts.all().delete() raise except Exception as e: # rollback changes replica.scripts.all().delete() if hasattr(e, 'message'): return True, f'{e.message}', 0, 0 else: return True, f'{e}', 0, 0 return False, '', _candidates, last_step_num
def newscript_view(request, *args, **kwargs): if request.method == 'POST': form = NewScriptForm(request.POST) print(f'received data: {request.POST}') print(f'new form: {form}') if form.is_valid(): print('form is valid') save_script = Script(name=request.POST['name'], description=request.POST['description'], content=request.POST['content'], user=request.user) print(f'script: {save_script}') save_script.save() print('script saved') return redirect(scriptdash_view) else: return render(request, 'newscript.html', {'form': form}) elif request.method == 'GET': form = NewScriptForm() else: return HttpResponse(status=404) return render(request, 'newscript.html', {'form': form})