def delete_old_keys(): """Delete all old keys""" # EXPLANATION: weed out old creation keys overtime = now() - datetime.timedelta(days=30) data.execute("DELETE FROM User_creation_keys WHERE created <= ?", overtime) # EXPLANATION: weed out old password keys overtime = now() - datetime.timedelta(minutes=20) data.execute("DELETE FROM User_forgotten_password_keys WHERE created <= ?", overtime)
def delete_old_keys(): """Delete all old keys""" # EXPLANATION: weed out old creation keys overtime = now() - datetime.timedelta(days=30) data.execute("DELETE FROM User_creation_keys WHERE created <= ?", overtime) # EXPLANATION: weed out old password keys overtime = now() - datetime.timedelta(minutes=20) data.execute("DELETE FROM User_forgotten_password_keys WHERE created <= ?", overtime)
def add_news(): if request.method == 'POST': if 'cancel' in request.form: return redirect(url_front()) creator = session['username'] created = now() title = request.form['title'] get_flashed_messages() if title == "": flash("Please enter a title") return html.back() text = request.form['text'] data.execute("INSERT INTO News(creator, created, title, text) VALUES(?,?,?,?)", creator, created, title, text) return redirect(url_front()) else: w = html.WebBuilder() w.form() w.formtable() w.textfield("title", "Overskrift") w.textarea("text", "Tekst") form = w.create() return render_template("form.html", form=form)
def error(code): log.log("An error occured on \"{0}\" reason: {1}".format(request.path, repr(code)), "ERROR 500") try: username = session['username'] except: username = "******" try: ip = flask.request.environ["REMOTE_ADDR"] except: ip = "UNKNOWN IP" text = mail.error_adminmail.format(username=username, time=now(), ip=ip, url = request.path, code=repr(code)) mail.admin("ERROR", text, type="html", mail_admins=True) return (render_template("error/500.html"), 500)
def generate_key(): min = config.USER_CREATION_KEY_MIN_LENGTH max = config.USER_CREATION_KEY_MAX_LENGTH length = random.randrange(min, max) alphabet = string.ascii_letters + string.digits while True: key = ''.join(random.choice(alphabet) for x in range(length)) try: b = data.Bucket() b.key = key b.created = now() b >= "User_creation_keys" return key except psycopg2.IntegrityError as e: if e.pgerror.startswith('ERROR: duplicate key value violates unique constraint "user_forgotten_password_keys_pkey"'): continue else: raise
def generate_key(): min = config.USER_CREATION_KEY_MIN_LENGTH max = config.USER_CREATION_KEY_MAX_LENGTH length = random.randrange(min, max) alphabet = string.ascii_letters + string.digits while True: key = ''.join(random.choice(alphabet) for x in range(length)) try: b = data.Bucket() b.key = key b.created = now() b >= "User_creation_keys" return key except psycopg2.IntegrityError as e: if e.pgerror.startswith( 'ERROR: duplicate key value violates unique constraint "user_forgotten_password_keys_pkey"' ): continue else: raise
def new_book(): # TODO: merge features of book and new_book if request.method == "POST": if 'cancel' in request.form: flash(escape("Ændringer annulleret")) return redirect(url_for('bookkeeper.overview')) b = data.Bucket(request.form) b.title b.description b.creator = session['username'] b.created = now() b_id = (b >= "Books")["b_id"] return redirect(url_for("bookkeeper.book", b_id=b_id)) else: w = html.WebBuilder() w.form() w.formtable() w.textfield("title", "Overskrift") w.textarea("description", "beskrivelse") form = w.create() return render_template("form.html", form=form)
def new_book(): # TODO: merge features of book and new_book if request.method == "POST": if 'cancel' in request.form: flash(escape("Ændringer annulleret")) return redirect(url_for('bookkeeper.overview')) b = data.Bucket(request.form) b.title b.description b.creator = session['username'] b.created = now() b_id = (b >= "Books")["b_id"] return redirect(url_for("bookkeeper.book", b_id=b_id)) else: w = html.WebBuilder() w.form() w.formtable() w.textfield("title", "Overskrift") w.textarea("description", "beskrivelse") form = w.create() return render_template("form.html", form=form)
def forgot_password(username): user = data.execute("SELECT name, email from Users WHERE username = ?", username) if len(user) != 1: raise Exception("No such user/No valid email") min = config.USER_CREATION_KEY_MIN_LENGTH max = config.USER_CREATION_KEY_MAX_LENGTH length = random.randrange(min, max) alphabet = string.ascii_letters + string.digits finished = False while not finished: key = ''.join(random.choice(alphabet) for x in range(length)) try: b = data.Bucket() b.username = username b.key = key b.created = now() b >= "User_forgotten_password_keys" finished = True break except psycopg2.IntegrityError as e: if e.pgerror.startswith( 'ERROR: duplicate key value violates unique constraint "user_forgotten_password_keys_pkey"' ): finished = False continue else: raise user = user[0] email = user['email'] if email == None or email == '': raise Exception("No such user/No valid email") url = config.URL + url_for("usermanager.renew_password", key=key) text = forgot_password_mail.format(name=user['name'], url=url) mail.send(email, "Glemt løsen", text)
def forgot_password(username): user = data.execute("SELECT name, email from Users WHERE username = ?", username) if len(user) != 1: raise Exception("No such user/No valid email") min = config.USER_CREATION_KEY_MIN_LENGTH max = config.USER_CREATION_KEY_MAX_LENGTH length = random.randrange(min, max) alphabet = string.ascii_letters + string.digits finished = False while not finished: key = ''.join(random.choice(alphabet) for x in range(length)) try: b = data.Bucket() b.username = username b.key = key b.created = now() b >= "User_forgotten_password_keys" finished = True break except psycopg2.IntegrityError as e: if e.pgerror.startswith('ERROR: duplicate key value violates unique constraint "user_forgotten_password_keys_pkey"'): finished = False continue else: raise user = user[0] email = user['email'] if email == None or email == '': raise Exception("No such user/No valid email") url = config.URL + url_for("usermanager.renew_password", key=key) text = forgot_password_mail.format(name=user['name'], url=url) mail.send(email, "Glemt løsen", text)
def goodbye(): print("bye") if config.MAIL_ON_EXIT: mail.admin("GRIS shutdown", "GRIS has exited at {0}\nThis could either be caused by an error or by a restart.".format(now()))