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 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 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 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)
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 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])
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_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" )
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 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 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 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 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" )
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")
def show_stats(): users.require_role(2) data = stats.get_full_stats(users.user_id()) return render_template("stats.html", data=data)
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" )
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")