示例#1
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")
示例#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")
示例#3
0
def campaign_page(id):
    campaign_list = campaigns.get_campaigns()
    user_id = session.get("user_id", 0)
    if not campaigns.has_access(id, user_id):
        return render_template(
            "error.html",
            error="You don't have access to this campaign",
            campaigns=campaign_list
            )
    if request.method == "GET":
        campaign = campaigns.get_campaign_info(id)
        players = campaigns.get_campaign_players(id)
        chatlist = chats.get_campaign_chats(id)
        return render_template(
            "campaign.html",
            campaign=campaign,
            players=players,
            id=id,
            chatlist=chatlist,
            campaigns=campaign_list
            )
    if request.method == "POST":
        users.check_csrf(request.form["csrf_token"])
        text = request.form["text"]
        chat_id = request.form["chat_id"]
        if 0 < len(text) <= 1000:
            chats.add_message(chat_id, text)
        close = request.form.get("close", 0)
        if close:
            chats.close(chat_id)
        return redirect(request.form["route"])
示例#4
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")
示例#5
0
def new_suggestion():
    users.check_csrf()
    name = request.form["name"]
    if len(name) < 1 or len(name) > 177:
        return render_template(
            "suggestion_error.html",
            message="Elokuvan nimi pitää olla 1-177 merkkiä.")
    year = request.form["year"]
    if len(year) != 4:
        return render_template("suggestion_error.html",
                               message="Vuosiluvussa pitää olla 4 numeroa")
    if int(year) > 2021:
        return render_template(
            "suggestion_error.html",
            message="Julkaisu vuosi ei voi olla uudempi kuin 2021")
    genres = request.form["genre"]
    if genres == "":
        return render_template("suggestion_error.html",
                               message="Elokuvalla pitää olla edes yksi genre")
    description = request.form["description"]
    if description == "":
        return render_template("suggestion_error.html",
                               message="Elokuvalla pitää olla kuvaus")
    leading_roles = request.form["leading_roles"]
    if leading_roles == "":
        return render_template(
            "add_movie_error.html",
            message="Elokuvalla pitää olla edes yksi päärooli")

    if suggestions.make_suggestion(name, year, genres, description,
                                   leading_roles):
        return render_template("new_suggestion.html")
    else:
        return render_template("suggestion_error.html",
                               message="Ehdotuksen lisääminen epäonnistui")
示例#6
0
def movie_page(id):
    if request.method == "GET":
        if not movies.get_movie_info(id):
            return render_template(
                "issue.html", message="Valitettavasti elokuvaa ei löytynyt.")
        info = movies.get_movie_info(id)
        review_list = reviews.get_reviews(id)
        amount_of_reviews = reviews.get_amount(id)
        average = reviews.get_average(id)
        return render_template("movie_page.html",
                               information=info,
                               reviews=review_list,
                               amount_of_reviews=amount_of_reviews,
                               average=average,
                               id=id)
    if request.method == "POST":
        users.check_csrf()
        movie_id = request.form["movie_id"]
        grade = int(request.form["grade"])
        review = request.form["review"]
        if grade == 0 or grade == 1 or grade == 2 or grade == 3 or grade == 4 or grade == 5 or grade == 6 or grade == 7 or grade == 8 or grade == 9 or grade == 10:
            if not reviews.create_review(movie_id, grade, review):
                return render_template(
                    "review_issue.html",
                    message="Arvostelun lisäys ei onnistunut",
                    id=id)
            else:
                return redirect("/movie_page/" + str(movie_id))
        return render_template(
            "review_issue.html",
            message="Arvostelussa pitää olla ainakin arvosana.",
            id=id)
示例#7
0
def delete_review_admin():
    users.require_admin()
    users.check_csrf()
    id = int(request.form["review_id"])
    movie_id = request.form["movie_id"]
    reviews.delete_review(id)
    return redirect("/movie_page/" + str(movie_id))
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")
示例#9
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")
示例#10
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")
示例#11
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")
示例#12
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")
示例#13
0
def accept():
    users.require_admin()
    users.check_csrf()
    id = request.form["id"]
    if suggestions.suggested_movie_exists(id):
        return render_template("suggestions_issue.html",
                               message="Tämän niminen elokuva on jo olemassa.")
    suggestions.accept(id)
    return redirect("/suggestions")
示例#14
0
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")
示例#15
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")
示例#16
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")
示例#17
0
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"
    )
示例#18
0
def delete_movie_from_category():
    users.require_admin()
    users.check_csrf()
    movie_id = request.form["movie_id"]
    category_id = request.form["category_id"]
    if categories.delete_movie_in_category(movie_id, category_id):
        return redirect("/category_page/" + str(category_id))
    else:
        return render_template(
            "category_issue.html",
            message="Elokuvan poistaminen kategoriasta epäonnistui",
            id=category_id)
示例#19
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])
示例#20
0
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")
示例#21
0
def create_chat(id):
    campaign_list = campaigns.get_campaigns()
    user_id = session.get("user_id", 0)
    if not campaigns.is_creator(id, user_id):
        return render_template(
            "error.html", error="No authority", campaigns=campaign_list)
    if not campaigns.is_active(id):
        return render_template(
            "error.html",
            error="Campaign has been deleted",
            campaigns=campaign_list
            )
    campaign = campaigns.get_campaign_info(id)
    players = campaigns.get_campaign_players(id)
    if request.method == "GET":
        return render_template(
            "newchat.html",
            campaign=campaign,
            players=players,
            id=id,
            campaigns=campaign_list
            )
    if request.method == "POST":
        users.check_csrf(request.form["csrf_token"])
        title = request.form["title"]
        if len(title) < 1:
            return render_template(
                "newchat.html",
                error="Title cannot be empty",
                campaign=campaign,
                players=players,
                id=id,
                campaigns=campaign_list
                )
        if len(title) > 300:
            return render_template(
                "newchat.html",
                error="Title is too long",
                campaigns=campaign_list
                )
        private = request.form.get("private", 0)
        chat_id = chats.create_chat(id, title, private)
        chats.add_chatter(chat_id, user_id)
        chatters = request.form.getlist("chatter")
        for chatter in chatters:
            chatter_id = users.get_user_id(chatter)
            if chatter_id:
                chats.add_chatter(chat_id, chatter_id)
        return redirect("/campaign/" + str(id))
示例#22
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("/")
示例#23
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")
示例#24
0
def create_campaign():
    if session.get("role", 0) != 2:
        return render_template(
            "error.html", error="Log in as GM to create a campaign")
    campaign_list = campaigns.get_campaigns()
    if request.method == "GET":
        return render_template("newcampaign.html", campaigns=campaign_list)
    if request.method == "POST":
        users.check_csrf(request.form["csrf_token"])
        title = request.form["title"]
        password = request.form["password"]
        if len(title) < 1:
            return render_template(
                "newcampaign.html",
                error="Title cannot be empty",
                campaigns=campaign_list
                )
        if len(title) > 100:
            return render_template(
                "newcampaign.html",
                error="Title is too long",
                campaigns=campaign_list
                )
        if campaigns.is_duplicate(title, session.get("user_id", 0)):
            return render_template(
                "newcampaign.html",
                error="You cannot create two campaigns with the same title",
                campaigns=campaign_list
                )
        if len(password) < 8:
            return render_template(
                "newcampaign.html",
                error="Password is too short",
                campaigns=campaign_list
                )
        if len(password) > 32:
            return render_template(
                "newcampaign.html",
                error="Password is too long",
                campaigns=campaign_list
                )
        id = campaigns.create_campaign(title, password)
        url = "/campaign/" + str(id)
        return redirect(url)
示例#25
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))
示例#26
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))
示例#27
0
def add_movie():
    users.require_admin()
    if request.method == "GET":
        return render_template("add_movie.html")
    if request.method == "POST":
        users.check_csrf()
        name = request.form["name"]
        if len(name) < 1 or len(name) > 177:
            return render_template(
                "add_movie_error.html",
                message="Elokuvan nimi pitää olla 1-177 merkkiä.")
        if movies.check_if_movie_exists(name):
            return render_template(
                "add_movie_error.html",
                message="Tämän niminen elokuva on jo olemassa.")
        year = request.form["year"]
        if len(year) != 4:
            return render_template("add_movie_error.html",
                                   message="Vuosiluvussa pitää olla 4 numeroa")
        if int(year) > 2021:
            return render_template(
                "add_movie_error.html",
                message="Julkaisu vuosi ei voi olla uudempi kuin 2021")
        genres = request.form["genre"]
        if genres == "":
            return render_template(
                "add_movie_error.html",
                message="Elokuvalla pitää olla edes yksi genre")
        description = request.form["description"]
        if description == "":
            return render_template("add_movie_error.html",
                                   message="Elokuvalla pitää olla kuvaus")
        leading_roles = request.form["leading_roles"]
        if leading_roles == "":
            return render_template(
                "add_movie_error.html",
                message="Elokuvalla pitää olla edes yksi päärooli")

        if movies.add_movie(name, year, genres, description, leading_roles):
            return redirect("/")
        else:
            return render_template("add_movie_error.html",
                                   message="Elokuvan lisäys epäonnistui")
示例#28
0
def movie_to_category():
    users.require_admin()
    users.check_csrf()
    category_id = request.form["category_id"]
    movie_name = request.form["movie_name"]
    if categories.check_movie_in_category(movie_name, category_id):
        return render_template("category_issue.html",
                               message="Elokuva on jo tässä kategoriassa",
                               id=category_id)
    if not movies.check_if_movie_exists(movie_name):
        return render_template("category_issue.html",
                               message="Elokuvaa ei löydy",
                               id=category_id)
    elif categories.movie_to_category(category_id, movie_name):
        return redirect("/category_page/" + str(category_id))
    else:
        return render_template("category_issue.html",
                               message="Elokuvan lisääminen ei onnistunut",
                               id=category_id)
示例#29
0
def delete_campaign(id):
    user_id = session.get("user_id", 0)
    campaign_list = campaigns.get_campaigns()
    if not campaigns.is_creator(id, user_id):
        return render_template(
            "error.html", error="No authority", campaigns=campaign_list)
    if not campaigns.is_active(id):
        return render_template(
            "error.html",
            error="Campaign has already been deleted",
            campaigns=campaign_list
            )
    campaign = campaigns.get_campaign_info(id)
    players = campaigns.get_campaign_players(id)
    if request.method == "GET":
        return render_template(
            "delete.html",
            campaign=campaign,
            players=players,
            id=id,
            campaigns=campaign_list
            )
    if request.method == "POST":
        users.check_csrf(request.form["csrf_token"])
        password = request.form["password"]
        if campaigns.check_password(id, password):
            if campaigns.deactivate_campaign(id):
                return redirect("/")
            else:
                return render_template(
                    "error.html",
                    error="Campaign could not be deleted",
                    campaigns=campaign_list
                    )
        return render_template(
                "delete.html",
                error="Campaign password was incorrect",
                campaign=campaign,
                players=players,
                id=id,
                campaigns=campaign_list
                )
示例#30
0
def new_admin():
    users.require_admin
    users.check_csrf()
    username = request.form["username"]
    if len(username) <= 1 or len(username) >= 20:
        return render_template(
            "admins_issue.html",
            message="Käyttäjätunnuksessa oltava 1-20 merkkiä")
    if not users.username_exists_already(username):
        return render_template("admins_issue.html",
                               message="Käyttäjää ei löydy.")
    if users.check_if_admin(username):
        return render_template("admins_issue.html",
                               message="Kyseinen käyttäjä on jo ylläpitäjä.")
    if users.turn_user_into_admin(username):
        return redirect("/admins")
    else:
        render_template(
            "admins_issue.html",
            message="Käyttäjän muuttaminen ylläpitäjäksi epäonnistui")