def admin(): user = verify() if user is None: flask.abort(403) db = get_db() row = db.execute("SELECT admin FROM users WHERE canonical_name = ?", (user,)).fetchone() if row is None or row[0] == 0: flask.abort(403) c = db.execute("SELECT files.id, files.name, files.revision, blobs.ctime, users.name FROM files INNER JOIN blobs ON blobs.id = files.revision LEFT OUTER JOIN users ON users.id = files.owner") copycats = list(map(lambda row: (row[0], row[1], format_url(row[2]), row[3], row[4]), c)) return flask.render_template("admin.html", active="admin", copycats=copycats)
def usercats(): user = verify() if user == None: flask.abort(403) c = get_db().execute("SELECT files.id, files.name, files.revision, files.type, blobs.ctime FROM files INNER JOIN blobs ON blobs.id = files.revision LEFT OUTER JOIN users ON users.id = files.owner WHERE users.canonical_name = ?", (user,)) files = list(c) copycats = list(map(lambda row: (row[0], row[1], format_url(row[2]), lexer_name(row[3]), row[4]), files))[::-1] base = BeautifulSoup(flask.render_template("usercats.html", active="usercats", copycats=copycats)) for f in files: fragment = BeautifulSoup(format_rev(f[2], f[3], 10)).body tag = base.find("div", id="file-{}".format(f[0])) tag = tag.find("div", class_="panel-footer") for elem in fragment.children: tag.insert_before(elem) return str(base)
def savechanges(): src = flask.request.form["copycat"] kood = flask.request.form["lexer"] value = flask.request.form["button"] print("Edited cat value: " + value) try: lexer = pygments.lexers.get_lexer_by_name(kood).aliases[0] except: lexer = pygments.lexers.guess_lexer(src).aliases[0] patch_ = "".join(diff("", src.splitlines(True))) file_id = blake2b(data=src.encode("utf-8")).digest() patch_id = blake2b(data=patch_.encode("utf-8")).digest() ctime = datetime.datetime.now(datetime.timezone.utc) db = get_db() try: db.execute("DELETE FROM files WHERE files.id = ?", (value,)) db.execute("INSERT INTO blobs (id, patch, ctime) VALUES (?, ?, ?)", (sqlite3.Binary(file_id), sqlite3.Binary(patch_id), ctime)) except: blob = db.execute("SELECT id FROM blobs WHERE id = ?", (sqlite3.Binary(file_id),)).fetchone() if blob == None or blob[0] != file_id: raise with lzma.open(os.path.join(app.config["BASE_PATH"], binascii.hexlify(patch_id).decode("utf-8")), "w") as f: f.write(patch_.encode("utf-8")) user = verify() if user is None: owner_id = None else: owner_id = db.execute("SELECT id FROM users WHERE canonical_name = ?", (user,)).fetchone()[0] db.execute("INSERT INTO files (owner, name, type, revision) VALUES(?, ?, ?, ?)", (owner_id, flask.request.form["name"], lexer, sqlite3.Binary(file_id))) db.commit() return flask.redirect(format_url(file_id))