def assigmentRate(assigment_id): """Úprava a obodování zadání""" usr = getUser() assigment = Assigment.get( assigment_id ) if not assigment: return HTTPError(404, "Cvičení nebylo nalezeno") #todo if ???: return HTTPError(403, "Nemáte oprávnění") if request.method == 'POST': action = request.forms.get("action") if (not action) or (not action in ("lock", "rate", "unlock")): HTTPError(400, "Neznámá akce") print("----------action", action) try: if action == "lock": assigment.lock() msg("Řešení bylo zamčeno", "success") elif action == "rate": assigment.rate( request.forms.get("points") ) msg("Řešení bylo ohodnoceno", "success") elif action == "unlock": assigment.unlock() msg("Řešení bylo odemčeno", "success") except ModelException as e: msg("Chyba při manipulaci: %s" %s, "error") redirect('/assigments-lector') return return template("assigments_rate", {"assigment" : assigment } )
def list(): """Seznam cvičení""" usr = getUser() if request.params.get("activate"): lec = Lecture.get( request.params.get("activate") ) lec.activate() msg("Cvičení %s bylo zapnuto" % lec.name,"success") redirect(request.path) if request.params.get("deactivate"): lec = Lecture.get( request.params.get("deactivate") ) lec.deactivate() msg("Cvičení %s bylo vypnuto" % lec.name,"success") redirect(request.path) # vložení nového cvičení if request.forms.get("add"): lec = Lecture.insert( request.forms.decode().get("add"), usr.login ) if lec: msg("Cvičení %s vytvořeno" % lec.name,"success") redirect("/lectures/edit/%i" % lec.lecture_id ) else: msg("Chyba při vytváření cvičení","error") redirect(request.path) lectures = Lecture.getAll() if usr.inRole("master") else Lecture.getAll(usr.login) return template("lectures", {"lectures" : lectures, "showLector": usr.inRole("master") } )
def assigmentRate(assigment_id): """Úprava a obodování zadání""" usr = getUser() assigment = Assigment.get(assigment_id) if not assigment: return HTTPError(404, "Cvičení nebylo nalezeno") #todo if ???: return HTTPError(403, "Nemáte oprávnění") if request.method == 'POST': action = request.forms.get("action") if (not action) or (not action in ("lock", "rate", "unlock")): HTTPError(400, "Neznámá akce") print("----------action", action) try: if action == "lock": assigment.lock() msg("Řešení bylo zamčeno", "success") elif action == "rate": assigment.rate(request.forms.get("points")) msg("Řešení bylo ohodnoceno", "success") elif action == "unlock": assigment.unlock() msg("Řešení bylo odemčeno", "success") except ModelException as e: msg("Chyba při manipulaci: %s" % s, "error") redirect('/assigments-lector') return return template("assigments_rate", {"assigment": assigment})
def edit(lecture_id): """Úprava specifické cvičení""" lecture = Lecture.get(lecture_id) form = LectureForm(request.forms.decode(), lecture) user = getUser() if not (user.inRole("master") or lecture.lector == user.login): return unauthorized() if request.method == 'POST' and form.validate(): try: lecture.update(name=form.name.data, nonterminal=form.nonterminal.data) msg("Cvičení aktualizováno", "success") except Exception as e: msg("Chyba při aktualizaci - %s" % e, "error") redirect(request.path) try: text = lecture.generate() except Exception as e: text = "Došlo k chybě : \n %s \n %s" % (type(e).__name__, e) return template("lectures_edit", { "lecture": lecture, "form": form_renderer(form), "text": text })
def list(): """Seznam cvičení""" usr = getUser() if request.params.get("activate"): lec = Lecture.get(request.params.get("activate")) lec.activate() msg("Cvičení %s bylo zapnuto" % lec.name, "success") redirect(request.path) if request.params.get("deactivate"): lec = Lecture.get(request.params.get("deactivate")) lec.deactivate() msg("Cvičení %s bylo vypnuto" % lec.name, "success") redirect(request.path) # vložení nového cvičení if request.forms.get("add"): lec = Lecture.insert(request.forms.decode().get("add"), usr.login) if lec: msg("Cvičení %s vytvořeno" % lec.name, "success") redirect("/lectures/edit/%i" % lec.lecture_id) else: msg("Chyba při vytváření cvičení", "error") redirect(request.path) lectures = Lecture.getAll() if usr.inRole("master") else Lecture.getAll( usr.login) return template("lectures", { "lectures": lectures, "showLector": usr.inRole("master") })
def edit(lecture_id): """Úprava specifické cvičení""" lecture = Lecture.get( lecture_id ) form = LectureForm(request.forms.decode(), lecture) user = getUser() if not ( user.inRole("master") or lecture.lector == user.login): return unauthorized() if request.method == 'POST' and form.validate(): try: lecture.update( name = form.name.data, nonterminal = form.nonterminal.data ) msg("Cvičení aktualizováno","success") except Exception as e: msg("Chyba při aktualizaci - %s" % e, "error") redirect(request.path) try: text = lecture.generate() except Exception as e: text = "Došlo k chybě : \n %s \n %s" % (type(e).__name__, e) return template("lectures_edit", {"lecture" : lecture, "form": form_renderer(form), "text": text } )
def edit(filename): from ita import Loader l = Loader("sablony") allowed = (path for path, content in l.getPathsOnly()) if not filename in allowed: msg("Integrita narušena", "error") redirect("/templates") content = request.forms.get("content") if content: try: save = l.save except AttributeError: msg("Současný Loader nepodporuje ukládání", "error") redirect(request.path) save(filename, content) msg("Změny uloženy", "success") redirect(request.path) with open(filename, "rb") as f: content = b"".join(f.readlines()) return template("templates_edit", content=content)
def list(): """Seznam šablon a možnost jejich úpravy""" from ita import Loader, Parser, Generator l = Loader("sablony") p = Parser(l) return template("templates", {"files": p.processedPaths})
def list(): """Seznam odevzdaných zadání""" usr = getUser() #todo pro mastera zobrazit všechny # zjistíme v jaké jsme skupině assigments = Assigment.getPending( usr.login ) silent = Assigment.getSilent( usr.login ) return template("assigments_lector", {"assigments" : assigments, "silent" : silent, "showLector" : usr.inRole("master") } )
def list(): """Seznam aktivních cvičení, na které se student může přihlásit""" usr = getUser() # zjistíme v jaké jsme skupině grp = usr.getGroup() #todo: assert group != None lectures = Lecture.getAvailable( grp.lector ) return template("assigments_student", {"lectures" : lectures, } )
def list(): """Seznam aktivních cvičení, na které se student může přihlásit""" usr = getUser() # zjistíme v jaké jsme skupině grp = usr.getGroup() #todo: assert group != None lectures = Lecture.getAvailable(grp.lector) return template("assigments_student", { "lectures": lectures, })
def list(): """Seznam odevzdaných zadání""" usr = getUser() #todo pro mastera zobrazit všechny # zjistíme v jaké jsme skupině assigments = Assigment.getPending(usr.login) silent = Assigment.getSilent(usr.login) return template( "assigments_lector", { "assigments": assigments, "silent": silent, "showLector": usr.inRole("master") })
def show(lecture_id): """Zobrazení a odevzdávání zadání """ usr = getUser() lec = Lecture.get(lecture_id) if not lec: return HTTPError(404, "Cvičení nebylo nalezeno") if not lec.isActive(): msg("Cvičení není aktivní", "error") redirect("/assigments") assigment = Assigment.getUnique(lecture_id, usr.login) if not assigment: assigment = Assigment.create(lec.lecture_id, lec.generate(), usr.login) msg("Cvičení bylo vygenerováno", "success") if request.method == 'POST' and request.files.response: try: assigment.respond(request.files.response.file.read()) msgTxt = "Řešení bylo úspěšně odesláno" if request.is_xhr: return HTTPResponse({ "type": "success", "msg": msgTxt }) msg(msgTxt, "success") except Exception as e: msgTxt = "Chyba při odesílání řešení - %s" % e if request.is_xhr: return HTTPResponse({ "type": "error", "msg": msgTxt }) msg(msgTxt, "error") redirect(request.path) return template("assigments_show", { "assigment": assigment, "lecture": lec })
def delete(lecture_id): """Smaže cvičení""" lecture = Lecture.get( lecture_id ) user = getUser() if not ( user.inRole("master") or lecture.lector == user.login): return unauthorized() answer = request.forms.get("answer") if answer: if answer == "Ne": redirect("/lectures") if answer == "Ano": lecture.remove() msg("Cvičení smazáno","success") redirect("/lectures") return template("question", {"question":"Skutečně chcete smazat cvičení '%s'" % lecture.name } )
def delete(lecture_id): """Smaže cvičení""" lecture = Lecture.get(lecture_id) user = getUser() if not (user.inRole("master") or lecture.lector == user.login): return unauthorized() answer = request.forms.get("answer") if answer: if answer == "Ne": redirect("/lectures") if answer == "Ano": lecture.remove() msg("Cvičení smazáno", "success") redirect("/lectures") return template( "question", {"question": "Skutečně chcete smazat cvičení '%s'" % lecture.name})
def show(lecture_id): """Zobrazení a odevzdávání zadání """ usr = getUser() lec = Lecture.get( lecture_id ); if not lec: return HTTPError(404, "Cvičení nebylo nalezeno") if not lec.isActive(): msg("Cvičení není aktivní", "error") redirect("/assigments"); assigment = Assigment.getUnique( lecture_id, usr.login ) if not assigment: assigment = Assigment.create( lec.lecture_id, lec.generate(), usr.login ) msg("Cvičení bylo vygenerováno", "success") if request.method == 'POST' and request.files.response: try: assigment.respond( request.files.response.file.read() ) msgTxt = "Řešení bylo úspěšně odesláno"; if request.is_xhr: return HTTPResponse({"type": "success", "msg": msgTxt}); msg(msgTxt ,"success") except Exception as e: msgTxt = "Chyba při odesílání řešení - %s" % e if request.is_xhr: return HTTPResponse({"type": "error", "msg": msgTxt}); msg(msgTxt, "error") redirect(request.path) return template("assigments_show", {"assigment" : assigment, "lecture": lec } )
def index(): usr = getUser() if usr and usr.inRole("student"): redirect("/assigments") return template("index")