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 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")
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"])
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")
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")
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)
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")
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")
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")
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_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")
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")
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 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")
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")
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" )
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)
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")
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))
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("/")
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")
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)
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))
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 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")
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)
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 )
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")