Exemple #1
0
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)
Exemple #2
0
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)
Exemple #3
0
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)
Exemple #4
0
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)
Exemple #5
0
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
Exemple #6
0
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
Exemple #7
0
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)
Exemple #8
0
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)
Exemple #9
0
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)
Exemple #10
0
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)
Exemple #11
0
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()))