Пример #1
0
def get_user_reviews(username):
    """
	Returns a list of books that the username has submitted a review for.
	Returns None if username hasn't submitted any reviews.
	"""

    user_id = get_user_id(username)

    books_search = db.execute(
        "SELECT DISTINCT isbn, title, author_id, year FROM books INNER JOIN reviews ON reviews.book_id = books.id WHERE user_id = :user_id",
        {
            "user_id": user_id
        }).fetchall()

    books = []
    reviews_ids = []

    for book in books_search:
        books.append(
            get_book_data(book.isbn,
                          cover_size="medium",
                          get_description=False))
        reviews_ids.append(get_user_review(book.isbn, username).id)

    return {"books": books, "reviews_ids": reviews_ids}
Пример #2
0
def course_page(course_id):
    user_id = users.get_user_id()
    if user_id == 0:
        return render_template("error.html", message="Kirjaudu sisään nähdäksesi sisältöä!")

    fail = False
    if request.method == "POST":
        if session["csrf_token"] != request.form["csrf_token"]:
            abort(403)
        update_type = request.form["update_type"]
        if update_type == "intro_update":
            if not courses.update_intro(course_id, request.form["content"]):
                fail = True
        if update_type == "material_update":
            if not coursematerials.update_material(request.form["material_id"], request.form["title"], request.form["content"]):
                fail = True
    if fail:
        return render_template("error.html", message="Kurssimateriaalin päivittäminen ei onnistunut!")
    else:
        course = courses.get_course(course_id)
        course_published = course[5]
        course_visible = course[6]
        course_owner = courses.check_for_ownership(user_id, course_id)
        coursematerial = coursematerials.get_all_coursematerials(course_id)
        course_statistics = statistics.get_course_status(user_id, course_id)
        no_material = (len(coursematerial) == 0)
        no_more_material = (coursematerials.get_amount_of_material_slots(course_id) == 10)
        return render_template("course.html", course=course, course_published=course_published, course_visible=course_visible, course_owner=course_owner,
            coursematerial=coursematerial, course_statistics=course_statistics, no_material=no_material, no_more_material=no_more_material)
Пример #3
0
def answer_to_exercises():
    user_id = users.get_user_id()
    if user_id == 0:
        return render_template("error.html", message="Kirjaudu sisään nähdäksesi sisältöä!")
    course_id = request.form["course_id"]
    user_signedup = courses.check_for_signup(user_id, course_id)
    if not user_signedup:
        return render_template("error.html", message="Ilmoittaudu ensin kurssille!")
    if session["csrf_token"] != request.form["csrf_token"]:
        abort(403)
    
    exercise_type = int(request.form["exercise_type"])

    all_answers = []
    if exercise_type == 1:
        all_quizzes = request.form.getlist("quizzes")
        for exercise_id in all_quizzes:
            all_answers.append(request.form[f"choice_{exercise_id}"])
    if exercise_type == 2:
        all_text_exercises = request.form.getlist("texts")
        for exercise_id in all_text_exercises:
            all_answers.append((exercise_id, request.form[f"answer_{exercise_id}"]))
    
    if answers.save_answers(user_id, course_id, exercise_type, all_answers):
        return redirect(f"/course/{course_id}/exercises")
    else:
        return render_template("error.html", message="Vastausten tallentaminen ei onnistunut!")
Пример #4
0
def exercise_page(id):
    user_id = users.get_user_id()
    if user_id == 0:
        return render_template("error.html", message="Kirjaudu sisään nähdäksesi sisältöä!")

    fail = False
    if request.method == "POST":
        if session["csrf_token"] != request.form["csrf_token"]:
            abort(403)
        exercise_type = int(request.form["exercise_type"])
        if exercise_type == 1:
            right_choice = request.form["right_choice"]
            wrong_choices = request.form.getlist("wrong_choice")
            if not exercises.add_quiz_exercise(id, exercise_type, int(request.form["points"]), request.form["question"],
                request.form["right_feedback"], request.form["false_feedback"], right_choice, wrong_choices):
                fail = True
        if exercise_type == 2:
            if not exercises.add_text_exercise(id, exercise_type, int(request.form["points"]), request.form["question"],
                request.form["right_text"], request.form["right_feedback"], request.form["false_feedback"]):
                fail = True
    if fail:
        return render_template("error.html", message="Tehtävän lisääminen ei onnistunut!")
    else:
        course = courses.get_course(id)
        quiz_exercises = exercises.get_all_quiz_exercises(id)
        quizzes_and_choises = []
        for quiz in quiz_exercises:
            choices = exercises.get_all_choises(quiz[0])
            quizzes_and_choises.append((quiz, choices))
        text_exercises = exercises.get_all_text_exercises(id)

        no_quizzes = (len(quizzes_and_choises) == 0)
        no_text_exercises = (len(text_exercises) == 0)
        course_visible = course[6]
        course_published = course[5]
        course_owner = courses.check_for_ownership(user_id, id)
        student_signedup = courses.check_for_signup(user_id, id)

        all_quizzes_answered = statistics.all_exercises_answered(user_id, id, 1)
        all_text_exercises_answered = statistics.all_exercises_answered(user_id, id, 2)
        course_statistics = statistics.get_course_status(user_id, id)

        correct_quiz_answers = []
        correct_text_exercise_answers = []
        all_quiz_answers = []
        all_text_exercise_answers = []
        if all_quizzes_answered:
            correct_quiz_answers = answers.get_correct_answers(user_id, id, 1)
            all_quiz_answers = answers.get_all_answers(user_id, id, 1)
        if all_text_exercises_answered:
            all_text_exercise_answers = answers.get_all_answers(user_id, id, 2)
        
        return render_template("exercises.html",
            course=course, quizzes_and_choises=quizzes_and_choises, text_exercises=text_exercises,
            no_quizzes=no_quizzes, no_text_exercises=no_text_exercises, course_visible=course_visible,
            course_published=course_published, course_owner=course_owner, student_signedup=student_signedup,
            all_quizzes_answered=all_quizzes_answered, all_text_exercises_answered=all_text_exercises_answered,
            course_statistics=course_statistics, correct_quiz_answers=correct_quiz_answers,
            all_quiz_answers=all_quiz_answers, all_text_exercise_answers=all_text_exercise_answers)
Пример #5
0
def add_review(isbn, username, rating, review):
    book_id = get_book_id(isbn)
    user_id = get_user_id(username)

    db.execute("INSERT INTO reviews (book_id, user_id, rating, reviews) VALUES (:book_id, :user_id, :rating, :review)",
               {"book_id": book_id, "user_id": user_id, "rating": rating, "review": review})

    db.commit()
Пример #6
0
def register_user():
    username_info = username.get()
    password_info = password.get()
    global reg_user_id
    u.add_user(username_info, password_info)
    reg_user_id = u.get_user_id(username_info)
    username_entry.delete(0, END)
    password_entry.delete(0, END)

    Label(register_screen, text="Registration Success", fg="green", font=11).pack()
Пример #7
0
 def __init__(self, username, business=False):
     self.username = username
     if (business):
         temp_id = businessdata.get_business_id(username)
         session["business"] = True
     else:
         temp_id = users.get_user_id(username)
         session["business"] = False
     if (temp_id):
         self.id = temp_id[0]
Пример #8
0
def hide_course(course_id):
    user_id = users.get_user_id()
    if user_id == 0:
        return render_template("error.html", message="Kirjaudu sisään nähdäksesi sisältöä!")
    course_owner = courses.check_for_ownership(user_id, course_id)
    if not course_owner:
        return render_template("error.html", message="Et ole kurssin opettaja!")

    courses.hide_course(course_id)
    return redirect("/")
Пример #9
0
def get_user_review(isbn, username):
    """
    Returns review(the first one) made by username to book(based on isbn).
    Returns None if username hasn't submitted any reviews to this particular book.
    """

    book_id = get_book_id(isbn)
    user_id = get_user_id(username)

    return db.execute("SELECT * FROM reviews WHERE (book_id = :book_id) AND (user_id = :user_id) LIMIT 1",
                      {"book_id": book_id, "user_id": user_id}).fetchone()
Пример #10
0
def signup(course_id):
    user_id = users.get_user_id()
    if user_id == 0:
        return render_template("error.html", message="Kirjaudu sisään nähdäksesi sisältöä!")
    if users.get_usertype() != 2:
        return render_template("error.html", message="Vain opiskelijat voivat ilmoittautua kursseille!")

    if courses.signup_to_course(user_id, course_id):
        return redirect("/")
    else:
        return render_template("error.html", message="Kurssille ilmoittautuminen ei onnistunut")
Пример #11
0
def add_teacher():
    if session["csrf_token"] != request.form["csrf_token"]:
        abort(403)
    if users.user_is_admin() != True:
        return redirect("/")
    username = request.form.get("username").strip()
    user_id = users.get_user_id(username)
    if user_id == 0:
        return render_template("teachers.html", error=True)
    users.add_teacher(user_id)
    return render_template("teachers.html", error=False)
Пример #12
0
def update_material(course_id, material_id):
    user_id = users.get_user_id()
    if user_id == 0:
        return render_template("error.html", message="Kirjaudu sisään nähdäksesi sisältöä!")
    course_owner = courses.check_for_ownership(user_id, course_id)
    if not course_owner:
        return render_template("error.html", message="Et ole kurssin opettaja!")

    course = courses.get_course(course_id)
    material = coursematerials.get_material(material_id)
    return render_template("updatematerial.html", course=course, material=material)
Пример #13
0
def login_sucess():
    global login_success_screen
    logoinscreendestroy()
    login_success_screen = Toplevel(main_screen)
    login_success_screen.title("Success")
    login_success_screen.geometry("250x100")

    Label(login_success_screen, text="Welcome back!", pady=5).pack()
    Button(login_success_screen, text="Surprise me...", command=home).pack()
    global user_id
    user_id = u.get_user_id(username1)
Пример #14
0
def newcourse():
    user_id = users.get_user_id()
    if user_id == 0:
        return render_template("error.html", message="Kirjaudu sisään nähdäksesi sisältöä!")
    if session["csrf_token"] != request.form["csrf_token"]:
        abort(403)
    
    coursename = request.form["coursename"]
    if courses.create_new(user_id, coursename):
        return redirect("/")
    else:
        return render_template("error.html", message="Kurssin lisääminen ei onnistunut, kurssin nimi saattaa jo olla käytössä...")
Пример #15
0
def registration():
    new_user = True
    if request.method == 'POST':
        user_name = request.form.get("user_name")
        password = request.form.get("password")
        hashed_password = common.get_hashed_password(password)
        new_user = users.register_user(user_name, hashed_password)
        if new_user:
            session['username'] = user_name
            session['user_id'] = users.get_user_id(user_name)
            return redirect("/")
    return render_template("registration.html", new_user=new_user)
Пример #16
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))
Пример #17
0
def modify_coursematerial_order(course_id, material_id, modify_type):
    user_id = users.get_user_id()
    if user_id == 0:
        return render_template("error.html", message="Kirjaudu sisään nähdäksesi sisältöä!")
    course_owner = courses.check_for_ownership(user_id, course_id)
    if not course_owner:
        return render_template("error.html", message="Et ole kurssin opettaja!")

    slotcount = coursematerials.get_amount_of_material_slots(course_id)
    if modify_type != "delete" and slotcount >= 10:
        return render_template("error.html", message="Et voi lisätä uusia osioita, maksimimäärä on 10!")
    if coursematerials.modify_material_order(course_id, material_id, modify_type):
        return redirect(f"/course/{course_id}")
    else:
        return render_template("error.html", message="Materiaalin lisääminen ei onnistunut!")
Пример #18
0
def update_passgrade():
    user_id = users.get_user_id()
    if user_id == 0:
        return render_template("error.html", message="Kirjaudu sisään nähdäksesi sisältöä!")
    course_id = request.form["course_id"]
    course_owner = courses.check_for_ownership(user_id, course_id)
    if not course_owner:
        return render_template("error.html", message="Et ole kurssin opettaja!")
    if session["csrf_token"] != request.form["csrf_token"]:
        abort(403)
    
    new_passgrade = request.form["passgrade"]
    if courses.update_passgrade(course_id, new_passgrade):
        return redirect(f"course/{course_id}")
    else:
        return render_template("error.html", message="Läpipääsyrajan päivittäminen ei onnistunut!")
Пример #19
0
 def get(self):
     self.response.headers['Content-Type'] = 'text/javascript'
     
     access_token = self.request.get('access_token', default_value = "NONE")
     
     user_id = users.get_user_id(access_token)
     if user_id == "NONE":
         self.response.out.write("Error: Invalid access token")
     users.check_in(user_id, access_token)
     json = "filler text"
     available_peeps_id_list = users.get_free_friends(user_id)
     #try:
     
     json = simplejson.dumps(users.get_json_ready_dic(available_peeps_id_list))
     #json = users.get_json_ready_dic(available_peeps_id_list)
     #json = str(available_peeps_id_list)
     
     #except:
     #json = "{'Oops. Something went wrong...'}"
     
     self.response.out.write(json)
def login():
    if request.method == 'GET':
        return render_template('landing.html',
                               messageStatus="",
                               loginStatus="")
    elif request.method == 'POST':
        username = request.form.get('username')
        password = request.form.get('password')
        if users.password_and_username_ok(username, password):
            user_id = users.get_user_id(username)
            user = User(user_id)
            login_user(user)
            user_data = users.get_user_info(user_id)
            reservations = reservation.get_reservations_for_user(user_id)

            return render_template('main.html',
                                   userData=user_data,
                                   listOfReservations=reservations)
        else:
            return render_template('landing.html',
                                   messageStatus="",
                                   loginStatus="login failed")
Пример #21
0
def index():
    user_id = users.get_user_id()
    if users.get_usertype() == 1:
        open_courses_teacher = courses.get_open_courses_teacher(user_id)
        unpublished_courses = courses.get_unpublished_courses(user_id)
        course_statistics = []
        for course in open_courses_teacher:
            student_amount = statistics.get_students(course[0])
            passed_students = statistics.get_passed_students(course[0])
            if student_amount == 0:
                pass_percent = 0
            else:
                pass_percent = int((passed_students / student_amount) * 100)
            course_stats = (course[0], [student_amount, passed_students, pass_percent])
            course_statistics.append(course_stats)
        return render_template("index.html", open_courses_teacher=open_courses_teacher, unpublished_courses=unpublished_courses, course_statistics=course_statistics)
    elif users.get_usertype() == 2:
        completed_courses = courses.get_completed_courses(user_id)
        uncompleted_courses = courses.get_uncompleted_courses(user_id)
        open_courses = courses.get_open_courses(user_id)
        return render_template("index.html", completed_courses=completed_courses, uncompleted_courses=uncompleted_courses, open_courses=open_courses)
    else:
        return render_template("index.html")
Пример #22
0
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")