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(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 setUp(self): self.connection = aws_simpledb.SimpleDB() # If the testing domain, already exists, delete it if self.connection.has_domain(settings.test_domains[0]): helpers.msg(self, 'Test domain already exists - delete it') self.connection.delete_domain(settings.test_domains[0]) helpers.eventualConsistencySleep()
def tearDown(self): tests_methods = \ [method for method in dir(self) if inspect.ismethod(getattr(self, method)) and method[0:4] == 'test'] if tests_methods[-1] == self.id().split('.')[-1]: for domain in settings.test_domains: if self.connection.has_domain(domain): helpers.msg(self, 'Deleting test domain ' + domain) self.connection.delete_domain(domain)
def on_block_interact(event): if (str(event.getAction()) == "RIGHT_CLICK_BLOCK"): sender = event.getPlayer() block = event.getClickedBlock().getState() if (isinstance(block, bukkit.block.Skull) and not event.isCancelled()): owner = block.getOwner() if (owner): msg(sender, "&eThat's %s." % owner) else: msg(sender, "&cThis skull has no name (Steve)") event.setCancelled(True)
def tearDown(self): # For the last check we also, delete the testing domains # note that if you run only some of this TestCase's tests it's up to # you to delete the test domains. tests_methods = \ [method for method in dir(self) if inspect.ismethod(getattr(self, method)) and method[0:4] == 'test'] if tests_methods[-1] == self.id().split('.')[-1]: print 'Deleting test domains' for domain in settings.test_domains: if self.connection.has_domain(domain): helpers.msg(self, 'Deleting test domain ' + domain) self.connection.delete_domain(domain)
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 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 add(target, d): message = h.msg() val = d[u'value'] db_path = './bb/{}.sqlite'.format(d[u'board']) if target == 'board': if re.match(r'^[\w-]{4,20}$', val): finished = 0 filepath = './bb/{}.sqlite'.format(val) now = time.time() query1 = "CREATE TABLE bb (type text NOT NULL, headline text NOT NULL, body text NOT NULL,creator text NOT NULL, parent_id, creation_time integer NOT NULL)" if h.db_do(query1, '', filepath): finished += 1 query2 = "INSERT INTO boards (name,creator,time,description) VALUES (?,?,?,?)" qvals2 = (val, d[u'user'], now, d[u'body']) if h.db_do(query2, qvals2, sys_db): finished += 1 if finished > 1: message['success'] = True else: message['errors'].append(1003) else: message['errors'].append(1005) elif target == 'topic': if not re.match(r'^[-\w ]{1,50}$', d[u'headline']): message['errors'].append(1005) elif not os.path.isfile(db_path): message['errors'].append(1001) else: now = time.time() query = "INSERT INTO bb (type, headline, body, creator,creation_time) VALUES (?, ?, ?, ?, ?)" qvals = ('topic', d[u'headline'], d[u'body'], d[u'user'], now) if h.db_do(query, qvals, db_path): message['success'] = True else: message['errors'].append(1003) elif target == 'post' or target == 'reply': if target == 'reply' and not d[u'post']: message['errors'].append(1005) return message if d[u'topic'] and d[u'board']: query1 = "SELECT * FROM bb WHERE type = 'topic' and rowid = ?" qvals1 = (d[u'topic'], ) if h.db_do(query1, qvals1, db_path) and d[u'body']: headline = d[u'headline'] if d[u'headline'] else '' now = time.time() parent = d[u'topic'] if target == 'post' else d[u'post'] print parent query2 = "INSERT INTO bb (type, headline, body, creator, parent_id, creation_time) VALUES (?, ?, ?, ?, ?, ?)" qvals2 = (target, headline, d[u'body'], d[u'user'], parent, now) if h.db_do(query2, qvals2, db_path): message['success'] = True else: message['errors'].append(1003) else: message['errors'].append(1004) else: message['errors'].append(1005) return message
def view(target, d): message = h.msg() board_db = False if d[u'board']: if os.path.isfile('./bb/{}.sqlite'.format(d[u'board'])): board_db = './bb/{}.sqlite'.format(d[u'board']) if target == 'topic' and board_db: value = d[u'value'] if d[u'value'] else d[u'topic'] query = "SELECT rowid, headline, body, creator, creation_time FROM bb WHERE rowid = ? and type = 'topic'" qvals = (value, ) rows = h.db_do(query, qvals, board_db, False) if len(rows): message['headline'] = rows[0][1] message['body'] = rows[0][2] message['creator'] = rows[0][3] message['time'] = rows[0][4] message['success'] = True else: message['errors'].append(1007) elif target == 'post' and board_db: value = d[u'value'] if d[u'value'] else d[u'post'] p_query = "SELECT rowid, headline, body, creator, creation_time FROM bb WHERE rowid = ?" p_qvals = (value, ) r_query = "SELECT headline, body, creator, creation_time FROM bb WHERE parent_id = ? ORDER BY creation_time ASC" r_qvals = (value, ) p_rows = h.db_do(p_query, p_qvals, board_db, False) r_rows = h.db_do(r_query, p_qvals, board_db, False) if p_rows: message['headline'] = p_rows[0][1] message['body'] = p_rows[0][2] message['creator'] = p_rows[0][3] message['time'] = p_rows[0][4] message['success'] = True if r_rows: for x in r_rows: row = { 'headline': x[0], 'body': x[1], 'creator': x[2], 'time': x[3] } message['rows'].append(row) else: message['rows'].append({ 'headline': '', 'body': 'No replies yet...', 'creator': '', 'time': '' }) else: message['errors'].append(1007) else: message['errors'].append(1001) return message
def logoff(username, token): message = h.msg() query = "UPDATE users SET time = ? WHERE name = ? and token = ?" qvals = (28800, username, token) if h.db_do(query, qvals, sys_db): message['success'] = True else: message['errors'].append(1002) return message
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 join(username, d): message = h.msg() pw = auth.create_password_hash(d[u'password']) now = int(time.time()) query = 'INSERT INTO users (name, password, time, bio, contact, url) VALUES(?, ?, ?, ?, ?, ?)' qvals = (username, pw, now, d[u'bio'], d[u'contact'], d[u'url']) if h.db_do(query, qvals, sys_db): message['success'] = True message['user'] = username else: message['errors'].append(1002) return message
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(target, d): message = h.msg() val = d[u'value'] * 10 board_db = False if d[u'board']: if os.path.isfile('./bb/{}.sqlite'.format(d[u'board'])): board_db = './bb/{}.sqlite'.format(d[u'board']) if target == 'board': db_conn = sqlite3.connect(sys_db) c = db_conn.cursor() query = "SELECT * FROM boards ORDER BY name ASC LIMIT 10 OFFSET 0" rows = h.db_do(query, '', sys_db, False) for x in rows: row = {'headline': x[0], 'body': x[3], 'id': 0} message['rows'].append(row) if len(rows): message['success'] = True else: message['errors'].append(1007) elif d[u'board'] and board_db: if target == 'topic': query = 'SELECT rowid, headline, body, creator, creation_time FROM bb WHERE type = ? ORDER BY rowid ASC' qvals = ('topic', ) elif target == 'post': if d[u'topic']: query = 'SELECT rowid, headline, body, creator, creation_time FROM bb WHERE type = ? and parent_id = ? ORDER BY creation_time DESC' qvals = ('post', d[u'topic']) else: query = False qvals = False message['errors'].append(1005) if query and qvals: rows = h.db_do(query, qvals, board_db, False) for x in rows: row = { 'id': x[0], 'headline': x[1], 'body': x[2], 'creator': x[3], 'time': x[4] } message['rows'].append(row) if len(rows): message['success'] = True else: message['errors'].append(1007) else: message['errors'].append(1001) return message
def delete_user(username, password): message = h.msg() if auth.verify_password(username, password): password = auth.create_password_hash(password) query = "DELETE FROM users WHERE name = ? and password = ?" qvals = (username, password) if h.db_do(query, qvals, sys_db): message['success'] = True else: message['errors'].append(1003) else: message['errors'].append(1002) return message
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 logon(username, d): message = h.msg() valid = auth.verify_password(username, d[u'password']) if valid: new_token = auth.create_session_token(username) current = int(time.time()) query = "UPDATE users SET token = ?, time = ? WHERE name = ?" qvals = (new_token, current, username) if h.db_do(query, qvals, sys_db): message['success'] = True message['token'] = new_token else: message['errors'].append(1003) else: message['errors'].append(1002) return message
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 runTest(self): self.connection.create_domain(settings.test_domains[0]) helpers.msg(self, 'Test Domain created') helpers.eventualConsistencySleep() self.assertTrue(self.connection.has_domain(settings.test_domains[0]))
def setUp(self): self.connection = aws_simpledb.SimpleDB() if not self.connection.has_domain(settings.test_domains[0]): helpers.msg(self, 'Create test domain') self.connection.create_domain(settings.test_domains[0]) helpers.eventualConsistencySleep()