def weekly_cancel():
    users.check_csrf()
    users.require_role(2)
    if entries.delete_own_entry(request.form["entry_id"], session["user_id"]):
        return redirect("/settings")
    return render_template("error.html",
                           message="Vakioajan peruminen ei onnistunut")
Example #2
0
def add_plan_pick():
    users.check_csrf()
    users.require_role(2)
    user_id = session["user_id"]
    entry = request.form["plan_pick"].split(",")
    entry_date = datetime.datetime.strptime(request.form["date"],
                                            "%Y-%m-%d").date()
    start_time = datetime.datetime.strptime(entry[0][2:-1], "%H:%M").time()
    finish_time = datetime.datetime.strptime(entry[5][2:-2], "%H:%M").time()
    dow = int(float(entry[2]))
    day_i = entry_date - datetime.date.today()
    times_of_own_entries_for_day = entries.get_times_of_own_entries_for_day(
        user_id, dow, day_i.days)
    if times_of_own_entries_for_day:
        if subfunctions.check_times_one(times_of_own_entries_for_day,
                                        (start_time, finish_time)) != "ok":
            return render_template("error.html",
                                   message=subfunctions.check_times_one(
                                       times_of_own_entries_for_day,
                                       (start_time, finish_time)))
    if entries.add_entry(entry_date, user_id, entry[4], start_time,
                         finish_time) > 0:
        return redirect("/plan")
    return render_template("error.html",
                           message="Osallistumisesi lisäys ei onnistunut")
Example #3
0
def userlist():
    users.require_role(1)
    if request.method == "GET":
        all_events = events.get_all_events()
        userlist = group.get_all_users_info_for_userlist()
        users_in_events_info = group.get_all_users_in_events_info_list()
        return render_template("userlist.html", users_in_events_info=users_in_events_info, all_events=all_events, userlist=userlist)

    if request.method == "POST":
        users.check_csrf()
        action = request.form["action"]
        users_changing = request.form.getlist("user_id")
        if action == "1":
            if users.change_level(users_changing, request.form["event_on"]):
                return redirect("/settings/admin/userlist")
        elif action == "2":
            if users.change_role(users_changing):
                return redirect("/settings/admin/userlist")
        elif action == "3":
            if users.reset_password(users_changing):
                return redirect("/settings/admin/userlist")
        elif action == "4":
            if group.change_participation_rights(users_changing, request.form["event_off"], 5):
                return redirect("/settings/admin/userlist")
        elif action == "5":
            if group.change_participation_rights(users_changing, request.form["event_off"], 2):
                return redirect("/settings/admin/userlist")
        elif action == "6":
            if group.change_all_participation_rights(users_changing, 5):
                return redirect("/settings/admin/userlist")
        elif action == "7":
            if group.change_all_participation_rights(users_changing, 2):
                return redirect("/settings/admin/userlist")
        return render_template("error.html", message="muutoksen tallentaminen ei onnistunut")
Example #4
0
def change_event_info():
    users.check_csrf()
    users.require_role(1)
    action = request.form["event_action"]
    event_id = request.form["event_pick"]
    if action == "1":
        if events.change_level(event_id, 100):
            return redirect("/settings")
        else:
            return render_template("error.html", message="Tapahtuman poistaminen ei onnistunut")
    elif action == "2":
        if request.form["event_name"]:
            if events.change_name(event_id, request.form["event_name"]):
                return redirect("/settings")
    elif action == "3":
        if request.form["event_description"]:
            if events.change_description(event_id, request.form["event_description"]):
                return redirect("/settings")
    elif action == "4":
        if request.form["number_value1"]:
            if events.change_min_participants(event_id, request.form["number_value1"]):
                return redirect("/settings")
    elif action == "5":
        if request.form["number_value1"]:
            if events.change_max_participants(event_id, request.form["number_value1"]):
                return redirect("/settings")
    elif action == "6":
        if request.form["number_value2"]:
            if events.change_level(event_id, request.form["number_value2"]):
                return redirect("/settings")
    return render_template("error.html", message="Tapahtuman muuttaminen ei onnistunut")
def settings():
    users.require_role(2)
    user_id = session["user_id"]
    events_with_own_level = events.get_all_events_for_user(user_id)
    own_weekly_entries = entries.get_weekly_entries_for_user(user_id)
    friends_list = friends.get_friends(user_id)
    friend_requests = friends.get_friends_open_requests(user_id)
    friend_requests_own = friends.get_own_requests(user_id)
    weekdays = {0: "SU", 1: "MA", 2: "TI", 3: "KE", 4: "TO", 5: "PE", 6: "LA"}
    user_info = users.get_user_info(user_id)
    if session["user_role"] == 1 or session["user_role"] == 0:
        all_events = events.get_all_events()
        return render_template("settings.html",
                               all_events=all_events,
                               friend_requests_own=friend_requests_own,
                               user_info=user_info,
                               days=weekdays,
                               events_with_own_level=events_with_own_level,
                               own_weekly_entries=own_weekly_entries,
                               friends=friends_list,
                               friend_requests=friend_requests)
    return render_template("settings.html",
                           friend_requests_own=friend_requests_own,
                           user_info=user_info,
                           days=weekdays,
                           events_with_own_level=events_with_own_level,
                           own_weekly_entries=own_weekly_entries,
                           friends=friends_list,
                           friend_requests=friend_requests)
Example #6
0
def change_group_description():
    users.check_csrf()
    users.require_role(1)
    if group.change_group_description(request.form["group_description"]):
        if len(request.form["group_description"]) > 400:
            return render_template("error.html", message="Kuvaus on liian pitkä, kuvauksen tulee sisältää enintään 400 merkkiä")
        return redirect("/settings")
    return render_template("error.html", message="Ryhmän kuvauksen vaihto ei onnistunut")
Example #7
0
def play(deck_id):
    users.require_role(1)

    card = decks.get_random_card(deck_id)
    return render_template("play.html",
                           deck_id=deck_id,
                           card_id=card[0],
                           question=card[1])
Example #8
0
def cancel_entry():
    users.check_csrf()
    users.require_role(2)
    entry_id = request.form["entry_id"]
    if entries.delete_own_entry(entry_id, session["user_id"]):
        return redirect("/calendar")
    return render_template("error.html",
                           message="Ilmoittautumisesi peruminen ei onnistunut")
Example #9
0
def admin_message():
    users.check_csrf()
    users.require_role(1)
    if len(request.form["admin_info"]) > 150:
        return render_template("error.html", message="viestin tallentaminen ei onnistunut, viestisi oli liian pitkä")
    if group.add_admin_message(request.form["admin_info"]):
        return redirect("/settings")
    return render_template("error.html", message="viestin tallentaminen ei onnistunut")
Example #10
0
def change_group_name():
    users.check_csrf()
    users.require_role(1)
    if group.change_group_name(request.form["name_group"]):
        if len(request.form["name_group"]) < 2 or len(request.form["name_group"]) > 30:
            return render_template("error.html", message="Nimen tulee sisältää 2-30 merkkiä")
        return redirect("/settings")
    return render_template("error.html", message="Nimenvaihto ei onnistunut")
def change_contact_info():
    users.check_csrf()
    users.require_role(2)
    user_id = session["user_id"]
    changed_contact_info = request.form["contact_info"]
    if not users.change_contact_info(user_id, changed_contact_info):
        return render_template(
            "error.html", message="Yhteystietojen päivittäminen ei onnistunut")
    return redirect("/settings")
def change_calendarview():
    users.check_csrf()
    users.require_role(2)
    events = request.form.getlist("event_pick")
    if users.update_calendarview(session["user_id"], events):
        return redirect("/settings")
    return render_template(
        "error.html",
        message="Kalenterissa näkyvien tapahtumien päivittäminen ei onnistunut"
    )
Example #13
0
def calendar_message():
    users.check_csrf()
    users.require_role(2)
    if len(request.form["comment"].strip()) > 0:
        if messages.add(session["user_id"], request.form["comment"]):
            return redirect("/calendar")
        return render_template(
            "error.html",
            message="Viestin lähetys ei onnistunut, yritä uudelleen")
    return redirect("/calendar")
Example #14
0
def change_group_password():
    users.check_csrf()
    users.require_role(1)
    if not users.check_password(session["user_id"], request.form["own_password"]):
        return render_template("error.html", message="Oma salasanasi oli virheellinen, tarkista salasana")
    if subfunctions.check_password(request.form["new_password1"], request.form["new_password2"]) != "ok":
            return render_template("error.html", message=subfunctions.check_password(request.form["new_password1"], request.form["new_password2"]))
    if group.change_group_password(request.form["new_password1"], request.form["own_password"], session["user_id"]):
        return redirect("/settings")
    return render_template("error.html", message="Uuden salasanan rekisteröinti ei onnistunut")
Example #15
0
def result():
    users.require_role(1)
    users.check_csrf()

    deck_id = request.form["deck_id"]
    card_id = request.form["card_id"]
    answer = request.form["answer"].strip()

    decks.send_answer(card_id, answer, users.user_id())
    words = decks.get_card_words(card_id)

    return render_template("result.html", deck_id=deck_id, question=words[0], answer=answer, correct=words[1])
def change_name():
    users.check_csrf()
    users.require_role(2)
    user_id = session["user_id"]
    changed_name = request.form["name"]
    if changed_name:
        if subfunctions.check_name(changed_name, user_id) != "ok":
            return render_template("error.html",
                                   message=subfunctions.check_name(
                                       changed_name, user_id))
        if not users.change_name(user_id, changed_name):
            return render_template("error.html",
                                   message="Nimen vaihtaminen ei onnistunut")
    return redirect("/settings")
Example #17
0
def remove_deck():
    users.require_role(2)

    if request.method == "GET":
        my_decks = decks.get_my_decks(users.user_id())
        return render_template("remove.html", list=my_decks)

    if request.method == "POST":
        users.check_csrf()

        if "deck" in request.form:
            deck = request.form["deck"]
            decks.remove_deck(deck, users.user_id())

        return redirect("/")
Example #18
0
def calendar():
    users.require_role(2)
    user_id = session["user_id"]
    today = datetime.date.today()

    if request.method == "GET":
        week, all_event_entries = entries.get_week(user_id, 1)
        all_own_entries = subfunctions.change_list_to_dict(
            5, all_event_entries)
        message_list = messages.get_newest(25, user_id)
        group_info = group.get_info()
        days = {0: "SU", 1: "MA", 2: "TI", 3: "KE", 4: "TO", 5: "PE", 6: "LA"}
        days_i = subfunctions.change_days_dow_to_i_dict(days, today)
        return render_template("calendar.html",
                               messages=message_list,
                               days_i=days_i,
                               all_own_entries=all_own_entries,
                               group_info=group_info,
                               days=days,
                               week=week,
                               all_event_entries=all_event_entries,
                               today=today)

    if request.method == "POST":
        users.check_csrf()
        entry = request.form["calendar_pick"].split(",")
        entry_date = datetime.datetime.strptime(request.form["date"],
                                                "%Y-%m-%d").date()
        start_time = datetime.datetime.strptime(entry[0][2:-1], "%H:%M").time()
        finish_time = datetime.datetime.strptime(entry[5][2:-2],
                                                 "%H:%M").time()
        dow = int(float(entry[2]))
        day_i = entry_date - today
        times_of_own_entries_for_day = entries.get_times_of_own_entries_for_day(
            user_id, dow, day_i.days)
        if times_of_own_entries_for_day:
            if subfunctions.check_times_one(times_of_own_entries_for_day,
                                            (start_time, finish_time)) != "ok":
                return render_template("error.html",
                                       message=subfunctions.check_times_one(
                                           times_of_own_entries_for_day,
                                           (start_time, finish_time)))
        if entries.add_entry(entry_date, user_id, entry[4], start_time,
                             finish_time) > 0:
            return redirect("/calendar")
        return render_template("error.html",
                               message="Osallistumisesi lisäys ei onnistunut")
Example #19
0
def add_deck():
    users.require_role(2)

    if request.method == "GET":
        return render_template("add.html")

    if request.method == "POST":
        users.check_csrf()

        name = request.form["name"]
        if len(name) < 1 or len(name) > 20:
            return render_template("error.html", message="Nimessä tulee olla 1-20 merkkiä")

        words = request.form["words"]
        if len(words) > 10000:
            return render_template("error.html", message="Sanalista on liian pitkä")

        deck_id = decks.add_deck(name, words, users.user_id())
        return redirect("/deck/"+str(deck_id))
Example #20
0
def review():
    users.require_role(1)
    users.check_csrf()

    deck_id = request.form["deck_id"]

    stars = int(request.form["stars"])
    if stars < 1 or stars > 5:
        return render_template("error.html", message="Virheellinen tähtimäärä")

    comment = request.form["comment"]
    if len(comment) > 1000:
        return render_template("error.html", message="Kommentti on liian pitkä")
    if comment == "":
        comment = "-"

    decks.add_review(deck_id, users.user_id(), stars, comment)

    return redirect("/deck/"+str(deck_id))
def weekly_entries():
    users.check_csrf()
    users.require_role(2)
    user_id = session["user_id"]
    if request.form["weekly_time_start"] and request.form[
            "weekly_time_end"] and request.form[
                "weekly_time_start"] < request.form["weekly_time_end"]:
        start_time = datetime.datetime.strptime(
            request.form["weekly_time_start"], "%H:%M").time()
        finish_time = datetime.datetime.strptime(
            request.form["weekly_time_end"], "%H:%M").time()
        dow = int(request.form["weekly_dow"])
        day_i = subfunctions.match_day_to_dict_week7i(dow)
        times_of_own_entries_for_week1_day = entries.get_times_of_own_entries_for_day(
            user_id, dow, day_i)
        times_of_own_entries_for_week2_day = entries.get_times_of_own_entries_for_day(
            user_id, dow, day_i + 7)
        if times_of_own_entries_for_week1_day:
            if subfunctions.check_times_one(times_of_own_entries_for_week1_day,
                                            (start_time, finish_time)) != "ok":
                return render_template("error.html",
                                       message=subfunctions.check_times_one(
                                           times_of_own_entries_for_week1_day,
                                           (start_time, finish_time)))
        if times_of_own_entries_for_week2_day:
            if subfunctions.check_times_one(times_of_own_entries_for_week2_day,
                                            (start_time, finish_time)) != "ok":
                return render_template("error.html",
                                       message=subfunctions.check_times_one(
                                           times_of_own_entries_for_week2_day,
                                           (start_time, finish_time)))
        if entries.add_weekly_entry(user_id, request.form["weekly_event"],
                                    start_time, finish_time, dow):
            return redirect("/settings")
        return render_template(
            "error.html", message="Uuden vakioajan lisääminen ei onnistunut")
    return render_template(
        "error.html",
        message=
        "Osallistumisesi lisäys ei onnistunut, aikojen valinta oli puutteellinen tai ajat olivat virheellisiä, tarkista valitsemasi ajat ja tallenna uudelleen"
    )
Example #22
0
def add_new_event():
    users.check_csrf()
    users.require_role(1)
    if events.old_events_with_level_100(5):
        return render_template("error.html", message="Uuden tapahtuman lisäys ei onnistu. Saat luotua uuden tapahtuman muuttamalla yhden käytöstä poistamasi tapahtuman kohdassa Tapahtuman muuttaminen tai poistaminen käytöstä.")
    event_info = {1:request.form["new_event_name"], 2:"", 3:0, 4:0, 5:0}
    if request.form["new_event_description"]:
        event_info[2] = request.form["new_event_description"]
    if request.form["new_event_min_participants"]:
        event_info[3] = int(request.form["new_event_min_participants"])
    if request.form["new_event_max_participants"]:
        event_info[4] = int(request.form["new_event_max_participants"])
    if request.form["new_event_level"]:
        event_info[5] = int(request.form["new_event_level"])
    if event_info[3] > event_info[4]:
        return render_template("error.html", message="Tapahtuman lisäys ei onnistunut, tarkista minimi- ja maksimiosallistujamäärät")
    event_id = events.add_new_event(event_info)
    if event_id == - 1:
        return render_template("error.html", message="Tapahtuman lisäys ei onnistunut")
    if users.add_event_for_everyone(event_id):
        return redirect("/settings")
    return render_template("error.html", message="Uuden tapahtuman rekisteröinti jäsenille ei onnistunut")
def change_password():
    users.check_csrf()
    users.require_role(2)
    user_id = session["user_id"]
    changing_password = [
        request.form["old_password"], request.form["new_password1"],
        request.form["new_password2"]
    ]
    if not users.check_password(user_id, changing_password[0]):
        return render_template(
            "error.html",
            message=
            "Vanha salasana meni väärin tai oli tyhjä, tarkista salasana")
    if subfunctions.check_password(changing_password[1],
                                   changing_password[2]) != "ok":
        return render_template("error.html",
                               message=subfunctions.check_password(
                                   changing_password[1], changing_password[2]))
    if not users.change_password(user_id, changing_password[1]):
        return render_template(
            "error.html",
            message="Uuden salasanan rekisteröinti ei onnistunut")
    return redirect("/settings")
def friends_settings():
    users.check_csrf()
    users.require_role(2)
    if request.form["friend"]:
        friend_name = request.form["friend"].strip()
        if len(friend_name) == 0:
            return render_template(
                "error.html",
                message=
                "Nimikenttä oli tyhjä, tarkista nimi ja tallenna pyyntö uudelleen"
            )
        friend_id = users.get_user_id(friend_name)
        if friend_id == -1:
            return render_template(
                "error.html",
                message=
                "Kaveria ei löytynyt antamallasi nimellä, tarkista nimi ja tallenna pyyntö uudelleen"
            )
        if not friends.add_friend_request(session["user_id"], friend_id):
            return render_template("error.html",
                                   message="Kaveripyyntö on jo lähetetty")
    if request.form.getlist("friend_asks"):
        if not friends.accept_friends(session["user_id"],
                                      request.form.getlist("friend_asks")):
            return render_template("error.html",
                                   message="Kaveripäivitys ei onnistunut")
    if request.form.getlist("friends"):
        if not friends.remove_friends(session["user_id"],
                                      request.form.getlist("friends")):
            return render_template("error.html",
                                   message="Kaveripäivitys ei onnistunut")
    if request.form.getlist("ask_cancel"):
        if not friends.cancel_friend_request(
                session["user_id"], request.form.getlist("ask_cancel")):
            return render_template("error.html",
                                   message="Kaveripäivitys ei onnistunut")
    return redirect("/settings")
Example #25
0
def show_stats():
    users.require_role(2)

    data = stats.get_full_stats(users.user_id())
    return render_template("stats.html", data=data)
Example #26
0
def plan():
    users.require_role(2)
    user_id = session["user_id"]
    event_list = events.get_events(user_id)
    today1 = datetime.date.today()

    if request.method == "GET":
        group_info = group.get_info()
        week, all_event_entries = entries.get_week(user_id, 2)
        all_own_entries = subfunctions.change_list_to_dict(
            5, all_event_entries)
        friends_plans = subfunctions.add_weekday(
            entries.friends_planning(user_id))
        today = datetime.date.today().strftime("%d.%m.")
        days = {0: "SU", 1: "MA", 2: "TI", 3: "KE", 4: "TO", 5: "PE", 6: "LA"}
        days_i = subfunctions.change_days_dow_to_i_dict(days, today1)
        return render_template("plan.html",
                               friends_plans=friends_plans,
                               all_own_entries=all_own_entries,
                               days_i=days_i,
                               group_info=group_info,
                               events=event_list,
                               days=days,
                               week=week,
                               all_event_entries=all_event_entries,
                               today=today)

    if request.method == "POST":
        users.check_csrf()
        event_indices = request.form.getlist("event_index")
        start_times = request.form.getlist("time_start")
        finish_times = request.form.getlist("time_finish")
        days_list = request.form.getlist("day")
        if len(event_indices) == len(start_times) and len(start_times) == len(
                finish_times):
            day_i = int(float(days_list[0]))
            dow = int(
                datetime.datetime.strftime(
                    today1 + datetime.timedelta(days=day_i + 7), "%w"))
            times_of_own_entries_for_day = entries.get_times_of_own_entries_for_day(
                user_id, dow, day_i + 7)
            new_entry_times_list = subfunctions.get_new_entry_times(
                start_times, finish_times)
            if not new_entry_times_list:
                return render_template(
                    "error.html",
                    message=
                    "Tapahtumien lisäys ei onnistunut, tarkista valitsemasi ajat, aikojen valitsemisessa oli puutteita"
                )
            if times_of_own_entries_for_day or len(new_entry_times_list) > 1:
                if subfunctions.check_times_many(times_of_own_entries_for_day,
                                                 new_entry_times_list) != "ok":
                    return render_template(
                        "error.html",
                        message=subfunctions.check_times_many(
                            times_of_own_entries_for_day,
                            new_entry_times_list))
            elif new_entry_times_list[0][0] >= new_entry_times_list[0][1]:
                return render_template(
                    "error.html",
                    message=
                    "Antamasi ajat olivat samat tai alkuaika oli suurempi kuin loppuaika, tarkista ajat ja tallenna uudelleen"
                )
            for entry in new_entry_times_list:
                date = today1 + datetime.timedelta(
                    days=7 + int(float(days_list[entry[2]])))
                index = entry[2]
                if entries.add_entry(date, user_id, event_list[int(
                        event_indices[index])][0], start_times[index],
                                     finish_times[index]) < 0:
                    return render_template(
                        "error.html",
                        message=
                        "Tapahtumien lisäys ei onnistunut, tallenna uudelleen")
            return redirect("/plan")
        return render_template(
            "error.html",
            message=
            "Tapahtumien lisäys ei onnistunut, tarkista valitsemasi ajat ja tallenna uudelleen"
        )
Example #27
0
def entry(day):
    users.require_role(2)
    day_i = int(float(day))
    user_id = session["user_id"]
    today = datetime.datetime.today()
    date = today + datetime.timedelta(days=day_i)

    if request.method == "GET":
        participants = entries.get_participants(session["user_id"], date)
        event_list = events.get_events(user_id)
        days = {0: "SU", 1: "MA", 2: "TI", 3: "KE", 4: "TO", 5: "PE", 6: "LA"}
        days_i = subfunctions.change_days_dow_to_i_dict(days, today)
        return render_template("entry.html",
                               participants=participants,
                               events=event_list,
                               days_i=days_i,
                               date=date,
                               day=day_i)

    if request.method == "POST":
        users.check_csrf()
        if request.form["time1"] and request.form[
                "time2"] and request.form["time1"] < request.form["time2"]:
            dow = int(datetime.datetime.strftime(date, "%w"))
            times_of_own_entries_for_day = entries.get_times_of_own_entries_for_day(
                user_id, dow, day_i)
            start_time = datetime.datetime.strptime(request.form["time1"],
                                                    "%H:%M").time()
            finish_time = datetime.datetime.strptime(request.form["time2"],
                                                     "%H:%M").time()
            if times_of_own_entries_for_day:
                if subfunctions.check_times_one(
                        times_of_own_entries_for_day,
                    (start_time, finish_time)) != "ok":
                    return render_template(
                        "error.html",
                        message=subfunctions.check_times_one(
                            times_of_own_entries_for_day,
                            (start_time, finish_time)))
        else:
            return render_template(
                "error.html",
                message=
                "Osallistumisesi lisäys ei onnistunut, alku tai loppuaika oli virheellinen tai puuttui. Tarkista ajat ja tallenna uudelleen"
            )
        extras = 0 if not request.form["extra_participants"] else request.form[
            "extra_participants"]

        entry_id = entries.add_entry_with_extras(date, user_id,
                                                 request.form["event_id"],
                                                 start_time, finish_time,
                                                 extras)
        if entry_id == -1:
            return render_template(
                "error.html",
                message=
                "Osallistumisesi lisäys ei onnistunut, tallenna uudelleen")

        if request.form["comment"]:
            content = request.form["comment"].strip()
            if len(content) > 0:
                if not messages.add_entry_comment(
                        user_id, entry_id, request.form["event_id"],
                        " [" + request.form["event_id"] + "] " + content):
                    return render_template(
                        "error.html",
                        message=
                        "Viestisi lähetys ei onnistunut, tarkista tiedot ja lähetä uudelleen"
                    )
        return redirect("/calendar")