def reset(user, request): name = request.POST['name'] program = UserProgram.find(user, name) program.reset() UserProgram.store(program) return HttpResponseRedirect(reverse('mips.views.details', kwargs={'name':program.name}))
def add(user, request): name = request.POST['name'] if not UserProgram.find(user, name): UserProgram.create_program(user,name) return HttpResponseRedirect(reverse('mips.views.programs')) else: msg = "Program with name '%s' already exists" % name logging.info("EXCEPTION " + msg) response = HttpResponseRedirect(reverse('mips.views.programs')) response.set_cookie('exception', msg) return response
def delete(user, request): name = request.POST['name'] prog = UserProgram.find(user, name) if prog: UserProgram.remove(prog) return HttpResponseRedirect(reverse('mips.views.programs')) else: msg = "Cannot delete program with name '%s'<br /> because it does not exist." % name response = HttpResponseRedirect(reverse('mips.views.programs')) response.set_cookie('exception', msg) return response
def details(user, request, name): program = UserProgram.find(user, name) code = program.code lines = code.splitlines() return render_to_response("mips/details.html", {'program' : program, 'code_lines' : lines, 'logout_url' : logout_url()})
def programs(user, request): programs = UserProgram.fetch_max_for(user) if not programs: example = UserProgram.example_program_for(user) programs.append(example) exception = request.COOKIES.get('exception') if not exception: return render_to_response("mips/programs.html", {"programs": programs, "logout_url" : logout_url()}) else: response = render_to_response("mips/programs.html", {"programs": programs, "exception": exception, "logout_url" : logout_url()}) response.delete_cookie('exception') return response
def run(user, request, name): program = UserProgram.find(user, name) result = {} if not program: raise ProgramNotFound("Program not found!") if program.is_suspended(): program.resume() state = program.state() output = program.output() result = mipsrunner.run_with_state(state, output) else: logging.info("executing program") prog_text = mipsrunner.format_user_program(str(program.code)) result = mipsrunner.run_program(prog_text, []) if not result.get('exception'): if result['suspended']: program.suspend() program.set_state(result['state']) program.set_output(result['output']) UserProgram.store(program) registers = program.registers() output = helpers.format_output(result['output']) json_data = render_to_string("mips/details.json", {'registers' : registers, 'output' : output}) return HttpResponse(json_data, mimetype="application/javascript") else: response = "{'exception': '%s', 'msg_list': %s}" % ( result['exception'], result['msg_list']) return HttpResponse(response, mimetype="application/javascript")