Exemple #1
0
 def get(self):
     id = get_user_id()
     #just loops and prints every question from query
     review = models.get_oldest_questions(True, False,
                                          models.getUser(id).username)
     submitted = models.get_oldest_questions(False, False,
                                             models.getUser(id).username)
     is_admin = 0
     if users.is_current_user_admin():
         is_admin = 1
     if id is not None:
         q = models.check_if_user_exists(id)
         if q == None:
             page_params = {
                 'upload_url': blobstore.create_upload_url('/profile'),
                 'user_email': get_user_email(),
                 'login_url': users.create_login_url(),
                 'logout_url': users.create_logout_url('/'),
                 'user_id': get_user_id(),
                 'profile': models.getUser(id),
                 'admin': is_admin
             }
             render_template(self, 'createProfile.html', page_params)
             return
     page_params = {
         'user_email': get_user_email(),
         'login_url': users.create_login_url(),
         'logout_url': users.create_logout_url('/'),
         'user_id': id,
         'review': review,
         'submitted': submitted,
         'admin': is_admin
     }
     render_template(self, 'viewDatabase.html', page_params)
Exemple #2
0
 def get(self):
     id = get_user_id()
     is_admin = 0
     if users.is_current_user_admin():
         is_admin = 1
     if id is not None:
         q = models.check_if_user_exists(id)
         if q == None:
             page_params = {
                 'upload_url': blobstore.create_upload_url('/profile'),
                 'user_email': get_user_email(),
                 'login_url': users.create_login_url(),
                 'logout_url': users.create_logout_url('/'),
                 'user_id': get_user_id(),
                 'profile': models.getUser(id),
                 'admin': is_admin
             }
             render_template(self, 'createProfile.html' ,page_params)
             return
     newList = models.getCategoryList()
     page_params = {
         'catList': newList,
         'upload_urlQ': blobstore.create_upload_url('/NewQuestion'),
         'user_email': get_user_email(),
         'login_url': users.create_login_url(),
         'logout_url': users.create_logout_url('/'),
         'user_id': id,
         'admin' : is_admin
     }
     render_template(self, 'newQuestionSubmit.html', page_params)
Exemple #3
0
def create_user():
    # Check if user is already logged in
    if "logged_in" in session and "user" in session:
        return redirect(url_for("home"))
    username = request.form.get("username")
    password = request.form.get("password")
    public_key = request.form.get("public_key")
    user_data = request.form.get("user_data")

    # Validate entered username and password
    error = None
    if None in [username, password, public_key, user_data]:
        error = "Request missing a field!"
    if len(username) == 0 or len(username) > 32:
        error = "Invalid username. Must be nonempty and contain at most 32 characters."
    if len([c for c in username if c.lower() not in VALID_USERNAME_CHARS]) > 0:
        error = "Invalid username. Must contain only letters (a-z), numbers (0-9), dashes (-), underscores (_)."
    if len(password) < 8 or len(password) > 128:
        error = "Invalid password. Must be at least 8 characters and at most 128 characters."
    if models.check_if_user_exists(username):
        error = "Username already taken."

    if error is not None:
        return jsonify(error=error)

    id = models.add_user_to_db(username, password, public_key, user_data)
    if id is None:
        return jsonify(error="Unexpected error.")

    session["logged_in"] = True
    session["user"] = models.find_user_by_name(username).to_dict()
    return jsonify(error=None)
Exemple #4
0
 def get(self):
     id = get_user_id()
     jAson = models.getAllUserScores()
     userList = json.dumps(jAson)
     is_admin = 0
     if users.is_current_user_admin():
         is_admin = 1
     if id is not None:
         q = models.check_if_user_exists(id)
         if q == None:
             page_params = {
                 'upload_url': blobstore.create_upload_url('/profile'),
                 'user_email': get_user_email(),
                 'login_url': users.create_login_url(),
                 'logout_url': users.create_logout_url('/'),
                 'user_id': get_user_id(),
                 'profile': models.getUser(id),
                 'admin': is_admin
             }
             render_template(self, 'createProfile.html' ,page_params)
             return
     newList = models.getCategoryList()
     page_params = {
         'category': 'ALL',
         'catList': newList,
         'user_id': get_user_id(),
         'list': jAson,
         'user_email': get_user_email(),
         'login_url': users.create_login_url(),
         'logout_url': users.create_logout_url('/'),
         'admin': is_admin,
         }
     render_template(self, 'leaderboard.html', page_params)
Exemple #5
0
 def get(self):
     id = get_user_id()
     trueList = models.getCategoryList(True)
     falseList = models.getCategoryList(False)
     is_admin = 0
     if users.is_current_user_admin():
         is_admin = 1
     if id is not None:
         q = models.check_if_user_exists(id)
         if q == None:
             page_params = {
                 'upload_url': blobstore.create_upload_url('/profile'),
                 'user_email': get_user_email(),
                 'login_url': users.create_login_url(),
                 'logout_url': users.create_logout_url('/'),
                 'user_id': get_user_id(),
                 'profile': models.getUser(id),
                 'admin': is_admin
             }
             render_template(self, 'createProfile.html' ,page_params)
             return
     page_params = {
         'user_id': get_user_id(),
         'trueCatList': trueList,
         'falseCatList': falseList,
         'user_email': get_user_email(),
         'login_url': users.create_login_url(),
         'logout_url': users.create_logout_url('/'),
         'admin': is_admin,
         }
     render_template(self, 'reviewCategories.html', page_params)
Exemple #6
0
 def get(self):
     id = get_user_id()
     jAson = models.getAllUserScores()
     userList = json.dumps(jAson)
     is_admin = 0
     if users.is_current_user_admin():
         is_admin = 1
     if id is not None:
         q = models.check_if_user_exists(id)
         if q == None:
             page_params = {
                 'upload_url': blobstore.create_upload_url('/profile'),
                 'user_email': get_user_email(),
                 'login_url': users.create_login_url(),
                 'logout_url': users.create_logout_url('/'),
                 'user_id': get_user_id(),
                 'profile': models.getUser(id),
                 'admin': is_admin
             }
             render_template(self, 'createProfile.html', page_params)
             return
     newList = models.getCategoryList()
     page_params = {
         'category': 'ALL',
         'catList': newList,
         'user_id': get_user_id(),
         'list': jAson,
         'user_email': get_user_email(),
         'login_url': users.create_login_url(),
         'logout_url': users.create_logout_url('/'),
         'admin': is_admin,
     }
     render_template(self, 'leaderboard.html', page_params)
Exemple #7
0
 def get(self):
     id = get_user_id()
     trueList = models.getCategoryList(True)
     falseList = models.getCategoryList(False)
     is_admin = 0
     if users.is_current_user_admin():
         is_admin = 1
     if id is not None:
         q = models.check_if_user_exists(id)
         if q == None:
             page_params = {
                 'upload_url': blobstore.create_upload_url('/profile'),
                 'user_email': get_user_email(),
                 'login_url': users.create_login_url(),
                 'logout_url': users.create_logout_url('/'),
                 'user_id': get_user_id(),
                 'profile': models.getUser(id),
                 'admin': is_admin
             }
             render_template(self, 'createProfile.html', page_params)
             return
     page_params = {
         'user_id': get_user_id(),
         'trueCatList': trueList,
         'falseCatList': falseList,
         'user_email': get_user_email(),
         'login_url': users.create_login_url(),
         'logout_url': users.create_logout_url('/'),
         'admin': is_admin,
     }
     render_template(self, 'reviewCategories.html', page_params)
Exemple #8
0
 def get(self):
     id = get_user_id()
     #just loops and prints every question from query
     review = models.get_oldest_questions(True,False)
     is_admin = 0
     if users.is_current_user_admin():
         is_admin = 1
     if id is not None:
         q = models.check_if_user_exists(id)
         if q == None:
             page_params = {
                 'upload_url': blobstore.create_upload_url('/profile'),
                 'user_email': get_user_email(),
                 'login_url': users.create_login_url(),
                 'logout_url': users.create_logout_url('/'),
                 'user_id': get_user_id(),
                 'profile': models.getUser(id),
                 'admin': is_admin
             }
             render_template(self, 'createProfile.html' ,page_params)
             return
     page_params = {
         'user_email': get_user_email(),
         'login_url': users.create_login_url(),
         'logout_url': users.create_logout_url('/'),
         'user_id': id,
         'review': review,
         'admin' : is_admin
     }
     render_template(self, 'viewDatabase.html', page_params)
Exemple #9
0
 def get(self):
     questionID = self.request.get('id')
     id = get_user_id()
     review = models.getQuestionFromURL(questionID)
     is_admin = 0
     if users.is_current_user_admin():
         is_admin = 1
     if id is not None:
         q = models.check_if_user_exists(id)
         if q == None:
             page_params = {
                 'upload_url': blobstore.create_upload_url('/profile'),
                 'user_email': get_user_email(),
                 'login_url': users.create_login_url(),
                 'logout_url': users.create_logout_url('/'),
                 'user_id': get_user_id(),
                 'profile': models.getUser(id),
                 'admin': is_admin
             }
             render_template(self, 'createProfile.html' ,page_params)
             return
     page_params = {
         'upload_urlQE': blobstore.create_upload_url('/ReviewQuestion?id=' + questionID),
         'user_email': get_user_email(),
         'login_url': users.create_login_url(),
         'logout_url': users.create_logout_url('/'),
         'user_id': id,
         'review': review,
         'admin' : is_admin
     }
     render_template(self, 'questionReview.html', page_params)
Exemple #10
0
    def get(self):
        id = get_user_id()
        #just loops and prints every question from query
        review = models.get_oldest_questions(True, False, None)
        is_admin = 0
        if users.is_current_user_admin():
            is_admin = 1
        #else:
        # If not admin, redirect to your questions
        # NOTE: non-admins can now view this page
        #return self.redirect("/ReviewMyQuestions")

        if id is not None:
            q = models.check_if_user_exists(id)
            if q == None:
                page_params = {
                    'upload_url': blobstore.create_upload_url('/profile'),
                    'user_email': get_user_email(),
                    'login_url': users.create_login_url(),
                    'logout_url': users.create_logout_url('/'),
                    'user_id': get_user_id(),
                    'profile': models.getUser(id),
                    'admin': is_admin
                }
                render_template(self, 'createProfile.html', page_params)
                return
        page_params = {
            'user_email': get_user_email(),
            'login_url': users.create_login_url(),
            'logout_url': users.create_logout_url('/'),
            'user_id': id,
            'review': review,
            'admin': is_admin
        }
        render_template(self, 'viewDatabase.html', page_params)
Exemple #11
0
 def get(self):
     id = get_user_id()
     is_admin = 0
     if users.is_current_user_admin():
         is_admin = 1
     if id is not None:
         q = models.check_if_user_exists(id)
         if q == None:
             page_params = {
                 'upload_url': blobstore.create_upload_url('/profile'),
                 'user_email': get_user_email(),
                 'login_url': users.create_login_url(),
                 'logout_url': users.create_logout_url('/'),
                 'user_id': get_user_id(),
                 'profile': models.getUser(id),
                 'admin': is_admin
             }
             render_template(self, 'createProfile.html', page_params)
             return
     newList = models.getCategoryList()
     page_params = {
         'catList': newList,
         'upload_urlQ': blobstore.create_upload_url('/NewQuestion'),
         'user_email': get_user_email(),
         'login_url': users.create_login_url(),
         'logout_url': users.create_logout_url('/'),
         'user_id': id,
         'admin': is_admin
     }
     render_template(self, 'submitQuestion.html', page_params)
Exemple #12
0
    def get(self):
        id = get_user_id()
        is_admin = 0
        if users.is_current_user_admin():
            is_admin = 1
        if id is not None:
            q = models.check_if_user_exists(id)
            if q == None:
                page_params = {
                    'upload_url': blobstore.create_upload_url('/profile'),
                    'user_email': get_user_email(),
                    'login_url': users.create_login_url(),
                    'logout_url': users.create_logout_url('/'),
                    'user_id': get_user_id(),
                    'profile': models.getUser(id),
                    'admin': is_admin
                }
                render_template(self, 'createProfile.html', page_params)
                return
        category = self.request.get('category') + ':' + self.request.get(
            'subcategory')
        number = self.request.get('number')
        mine = self.request.get('mine')
        timed = self.request.get('timed')
        if mine == 'mine':
            questions = models.getQuestionsCatUsr(category, int(number),
                                                  models.getUser(id).username)
        else:
            questions = models.getQuestionsCat(category, int(number))

        if questions is None:
            num = 0
            jList = []
        else:
            num = len(questions)
            qList = []
            for q in questions:
                #exclude removes the properties we do no need to have passed to the html from the question object
                temp = q.to_dict(exclude=[
                    'category', 'creator', 'accepted', 'up_voters',
                    'down_voters', 'create_date'
                ])
                qList.append(temp)
            jList = json.dumps(qList, default=obj_dict)

        page_params = {
            'user_id': get_user_id(),
            'num': num,
            'question_list': jList,
            'timed': timed,
            'user_email': get_user_email(),
            'login_url': users.create_login_url(),
            'logout_url': users.create_logout_url('/'),
            'admin': is_admin,
        }
        render_template(self, 'quiz.html', page_params)
Exemple #13
0
def get_public_key():

    sender_public_key = current_user().public_key
    receiver_username = request.args.get('receiver-username', '')
    # Make sure that the receiver exists
    if not models.check_if_user_exists(receiver_username):
        return jsonify(error="This user does not exist.")
    # Find receiver user
    receiver = models.find_user_by_name(receiver_username)
    return jsonify(sender_public_key=sender_public_key,
                   receiver_public_key=receiver.public_key)
Exemple #14
0
def get_public_key():
    # Check if user is logged in
    if "logged_in" in session and "user" in session:
        sender_public_key = session["user"]["public_key"]
    else:
        return jsonify(error="Unauthorized request.")

    receiver_username = request.args.get("receiver_username", "")
    if not models.check_if_user_exists(receiver_username):
        return jsonify(error="This user does not exist.")
    receiver = models.find_user_by_name(receiver_username)
    return jsonify(sender_public_key=sender_public_key,
                   receiver_public_key=receiver.public_key)
Exemple #15
0
def get_public_key():
    # Check if user is logged in
    if 'logged_in' in session and 'user' in session:
        sender_public_key = session['user']['public_key']
    else:
        # User is not logged in, return error message
        return jsonify(error="Unauthorized request.")
    # Get receiver_username from request
    receiver_username = request.args.get('receiver_username', '')
    # Make sure that the receiver exists
    if not models.check_if_user_exists(receiver_username):
        return jsonify(error="This user does not exist.")
    # Find receiver user
    receiver = models.find_user_by_name(receiver_username)
    return jsonify(sender_public_key=sender_public_key,
                   receiver_public_key=receiver.public_key)
Exemple #16
0
    def get(self):
        id = get_user_id()
        is_admin = 0
        if users.is_current_user_admin():
            is_admin = 1
        if id is not None:
            q = models.check_if_user_exists(id)
            if q == None:
                page_params = {
                    'upload_url': blobstore.create_upload_url('/profile'),
                    'user_email': get_user_email(),
                    'login_url': users.create_login_url(),
                    'logout_url': users.create_logout_url('/'),
                    'user_id': get_user_id(),
                    'profile': models.getUser(id),
                    'admin': is_admin
                }
                render_template(self, 'createProfile.html' ,page_params)
                return
        category = self.request.get('category')
        number = self.request.get('number')
        questions = models.getQuestionsCat(category,int(number))
        if questions is None:
            num = 0
            jList = []
        else:
            num = len(questions)
            qList = []
            for q in questions:
                #exclude removes the properties we do no need to have passed to the html from the question object
                temp = q.to_dict(exclude=['category','creator','accepted','up_voters','down_voters','create_date'])
                qList.append(temp)
            jList = json.dumps(qList, default=obj_dict)

        page_params = {
            'user_id': get_user_id(),
            'num': num,
            'question_list' : jList,
            'user_email': get_user_email(),
            'login_url': users.create_login_url(),
            'logout_url': users.create_logout_url('/'),
            'admin': is_admin,
            }
        render_template(self, 'answerQuestionsCat.html', page_params)
Exemple #17
0
def create_user():
    req = request.get_json(force=True)
    username = req.get("username", None)
    password = req.get("password", None)
    public_key = req.get("public_key", None)
    user_data = req.get("user_data", None)

    # Validate entered username and password
    error = None
    if None in [username, password, public_key, user_data]:
        error = "Request missing a field!"
    if len(username) == 0 or len(username) > 32:
        error = "Invalid username. Must be nonempty and contain at most 32 characters."
    if len([c for c in username if c.lower() not in VALID_USERNAME_CHARS]) > 0:
        error = "Invalid username. Must contain only letters (a-z), numbers (0-9), dashes (-), underscores (_)."
    if len(password) < 8 or len(password) > 128:
        error = "Invalid password. Must be at least 8 characters and at most 128 characters."
    if models.check_if_user_exists(username):
        error = "Username already taken."

    # Invalid username or password
    if error is not None:
        return jsonify(error=error)
    # Add new user to database
    id = models.add_user_to_db(username, password, public_key, user_data)
    if id is None:
        # Database error
        return jsonify(error="Unexpected error.")

    # Return new user data
    user_saved = models.find_user_by_name(username).to_dict()
    user = guard.authenticate(username, password)
    return jsonify(
        token=guard.encode_jwt_token(user),
        id=id,
        username=username,
        public_key=public_key,
        user_data=user_data,
    )
Exemple #18
0
    def get(self):
        if not get_user_email(
        ):  #stops from creating a profile if not logged in
            self.redirect("/")
            return
        id = self.request.get("id")
        is_admin = 0
        if users.is_current_user_admin():
            is_admin = 1
        if id is not None:
            q = models.check_if_user_exists(id)
            if q == None:
                page_params = {
                    'upload_url': blobstore.create_upload_url('/profile'),
                    'user_email': get_user_email(),
                    'login_url': users.create_login_url(),
                    'logout_url': users.create_logout_url('/'),
                    'user_id': get_user_id(),
                    'profile': models.getUser(id),
                    'admin': is_admin
                }
                render_template(self, 'createProfile.html', page_params)
                return
        user = models.getUser(id)

        categoryScores = models.getCatUserScore(get_user_id())
        page_params = {
            'upload_url': blobstore.create_upload_url('/profile'),
            'user_email': get_user_email(),
            'login_url': users.create_login_url(),
            'logout_url': users.create_logout_url('/'),
            'user_id': get_user_id(),
            'profile': user,
            'numScores': len(categoryScores),
            'categoryScores': categoryScores,
            'admin': is_admin,
        }
        render_template(self, 'profile.html', page_params)
Exemple #19
0
 def get(self):
     questionID = self.request.get('id')
     id = get_user_id()
     review = models.getQuestionFromURL(questionID)
     is_admin = 0
     if users.is_current_user_admin():
         is_admin = 1
     if id is not None:
         q = models.check_if_user_exists(id)
         if q == None:
             page_params = {
                 'upload_url': blobstore.create_upload_url('/profile'),
                 'user_email': get_user_email(),
                 'login_url': users.create_login_url(),
                 'logout_url': users.create_logout_url('/'),
                 'user_id': get_user_id(),
                 'profile': models.getUser(id),
                 'admin': is_admin
             }
             render_template(self, 'createProfile.html', page_params)
             return
     page_params = {
         'upload_urlQE':
         blobstore.create_upload_url('/ReviewQuestion?id=' + questionID),
         'user_email':
         get_user_email(),
         'login_url':
         users.create_login_url(),
         'logout_url':
         users.create_logout_url('/'),
         'user_id':
         id,
         'review':
         review,
         'admin':
         is_admin
     }
     render_template(self, 'reviewQuestion.html', page_params)
Exemple #20
0
 def get(self):
     if not users.is_current_user_admin(): #stops from running this if user is not admin
         self.redirect("/")
         return
     if (len(models.get_oldest_questions(True,False)) > 3):
         self.redirect("/")
         return
     models.populateQuestions()
     models.populateAnswers()
     #models.createAnswer(get_user_id(),'1','2')
     id = get_user_id()
     is_admin = 0
     if users.is_current_user_admin():
         is_admin = 1
     q = models.check_if_user_exists(id)
     page_params = {
         'user_email': get_user_email(),
         'login_url': users.create_login_url(),
         'logout_url': users.create_logout_url('/'),
         'user_id': id,
         'admin' : is_admin
     }
     render_template(self, 'index.html', page_params)
Exemple #21
0
def create_user():
    # Check if user is already logged in
    if 'logged_in' in session and 'user' in session:
        # If so, redirect to home page
        return redirect(url_for('home'))
    username = request.form.get('username')
    password = request.form.get('password')
    public_key = request.form.get('public_key')
    user_data = request.form.get('user_data')

    # Validate entered username and password
    error = None
    if None in [username, password, public_key, user_data]:
        error = "Request missing a field!"
    if len(username) == 0 or len(username) > 32:
        error = "Invalid username. Must be nonempty and contain at most 32 characters."
    if len([c for c in username if c.lower() not in VALID_USERNAME_CHARS]) > 0:
        error = "Invalid username. Must contain only letters (a-z), numbers (0-9), dashes (-), underscores (_)."
    if len(password) < 8 or len(password) > 128:
        error = "Invalid password. Must be at least 8 characters and at most 128 characters."
    if models.check_if_user_exists(username):
        error = "Username already taken."

    # Invalid username or password
    if error is not None:
        return jsonify(error=error)

    # Add new user to database
    id = models.add_user_to_db(username, password, public_key, user_data)
    if id is None:
        # Database error
        return jsonify(error="Unexpected error.")

    # Redirect new user to home page
    session['logged_in'] = True
    session['user'] = models.find_user_by_name(username).to_dict()
    return jsonify(error=None)
Exemple #22
0
    def get(self):
        if not get_user_email(): #stops from creating a profile if not logged in
            self.redirect("/")
            return
        id = self.request.get("id")
        is_admin = 0
        if users.is_current_user_admin():
            is_admin = 1
        if id is not None:
            q = models.check_if_user_exists(id)
            if q == None:
                page_params = {
                    'upload_url': blobstore.create_upload_url('/profile'),
                    'user_email': get_user_email(),
                    'login_url': users.create_login_url(),
                    'logout_url': users.create_logout_url('/'),
                    'user_id': get_user_id(),
                    'profile': models.getUser(id),
                    'admin': is_admin
                }
                render_template(self, 'createProfile.html' ,page_params)
                return
        user = models.getUser(id)

        categoryScores = models.getCatUserScore(get_user_id())
        page_params = {
            'upload_url': blobstore.create_upload_url('/profile'),
            'user_email': get_user_email(),
            'login_url': users.create_login_url(),
            'logout_url': users.create_logout_url('/'),
            'user_id': get_user_id(),
            'profile': user,
            'numScores': len(categoryScores),
            'categoryScores':categoryScores,
            'admin': is_admin,
        }
        render_template(self, 'profile.html', page_params)
Exemple #23
0
 def get(self):
     if not users.is_current_user_admin(
     ):  #stops from running this if user is not admin
         self.redirect("/")
         return
     if (len(models.get_oldest_questions(True, False, None)) > 3):
         self.redirect("/")
         return
     models.populateQuestions()
     models.populateAnswers()
     #models.createAnswer(get_user_id(),'1','2')
     id = get_user_id()
     is_admin = 0
     if users.is_current_user_admin():
         is_admin = 1
     q = models.check_if_user_exists(id)
     page_params = {
         'user_email': get_user_email(),
         'login_url': users.create_login_url(),
         'logout_url': users.create_logout_url('/'),
         'user_id': id,
         'admin': is_admin
     }
     render_template(self, 'index.html', page_params)