예제 #1
0
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 } )
예제 #2
0
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") } )
예제 #3
0
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})
예제 #4
0
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
    })
예제 #5
0
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")
    })
예제 #6
0
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 } )    
예제 #7
0
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)
예제 #8
0
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})
예제 #9
0
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") } )
예제 #10
0
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, } )
예제 #11
0
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,
    })
예제 #12
0
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")
        })
예제 #13
0
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
    })
예제 #14
0
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 } )    
예제 #15
0
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})
예제 #16
0
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 } )    
예제 #17
0
def index():
    usr = getUser()
    if usr and usr.inRole("student"):
        redirect("/assigments")
    return template("index")
예제 #18
0
def index():
    usr = getUser()
    if usr and usr.inRole("student"):
        redirect("/assigments")
    return template("index")