def create(cls, db, graph, raw_view_pass, raw_edit_pass):
if raw_view_pass is not None:
view_pass = bcrypt.hashpw(
raw_view_pass.encode(), bcrypt.gensalt()).decode()
else:
view_pass = None
if raw_edit_pass is not None:
edit_pass = bcrypt.hashpw(
raw_edit_pass.encode(), bcrypt.gensalt()).decode()
else:
edit_pass = None
result = db.execute('select count(*) from polycules where graph = ?',
[graph])
existing = result.fetchone()[0]
if existing != 0:
raise Polycule.IdenticalGraph
cur = db.cursor()
result = cur.execute('''insert into polycules
(graph, view_pass, delete_pass, hash) values (?, ?, ?, ?)''', [
graph,
view_pass,
edit_pass,
hashlib.sha1(graph.encode('utf-8')).hexdigest(),
])
db.commit()
new_hash = db.execute('select hash from polycules where id = ?', [
result.lastrowid
]).fetchone()[0]
return Polycule.get(db, new_hash, None, force=True)
评论列表
文章目录