Ejemplo n.º 1
0
 def removeAnsVote(self, ansID):
     USERS_COLLECTION.find_one_and_update(
         {'_id': self.username}, {'$pull': {
             'voted_ans': {
                 'ansID': ansID
             }
         }})
Ejemplo n.º 2
0
 def __init__(self,
              username,
              email=None,
              firstname=None,
              lastname=None,
              password=None,
              db=False):
     self.username = username
     self.email = email
     self.firstname = firstname
     self.lastname = lastname
     self.password = password
     if db:
         USERS_COLLECTION.insert_one({
             '_id':
             self.username,
             'email':
             self.email,
             'firstname':
             self.firstname,
             'lastname':
             self.lastname,
             'password':
             generate_password_hash(self.password),
             'quesPosted': [],
             'ansPosted': [],
             'bookmarks': [],
             'karma':
             0,
             'voted_ques': [],
             'voted_ans': [],
             'commentPosted': []
         })
Ejemplo n.º 3
0
 def updateQuesVote(self, quesID, vote):
     USERS_COLLECTION.find_one_and_update(
         {
             '_id': self.username,
             'voted_ques.quesID': quesID
         }, {'$set': {
             'voted_ques.$.vote': vote
         }})
Ejemplo n.º 4
0
 def updateAnsVote(self, ansID, vote):
     USERS_COLLECTION.find_one_and_update(
         {
             '_id': self.username,
             'voted_ans.ansID': ansID
         }, {'$set': {
             'voted_ans.$.vote': vote
         }})
Ejemplo n.º 5
0
 def removeQuesVote(self, quesID):
     USERS_COLLECTION.find_one_and_update(
         {'_id': self.username},
         {'$pull': {
             'voted_ques': {
                 'quesID': quesID
             }
         }})
Ejemplo n.º 6
0
 def addQuesVote(self, quesID, vote):
     USERS_COLLECTION.find_one_and_update(
         {'_id': self.username},
         {'$addToSet': {
             'voted_ques': {
                 'quesID': quesID,
                 'vote': vote
             }
         }})
Ejemplo n.º 7
0
 def addAnsVote(self, ansID, vote):
     USERS_COLLECTION.find_one_and_update(
         {'_id': self.username},
         {'$addToSet': {
             'voted_ans': {
                 'ansID': ansID,
                 'vote': vote
             }
         }})
Ejemplo n.º 8
0
 def setBookmark(self, quesID):
     bookmarked = (USERS_COLLECTION.find_one({'_id':
                                              self.username}))['bookmarks']
     if quesID in bookmarked:
         USERS_COLLECTION.update_one({'_id': self.username},
                                     {'$pull': {
                                         'bookmarks': quesID
                                     }})
         return False
     else:
         USERS_COLLECTION.find_one_and_update(
             {'_id': self.username}, {'$addToSet': {
                 'bookmarks': quesID
             }})
         return True
Ejemplo n.º 9
0
def profile(userID):
    user = USERS_COLLECTION.find_one({'_id': userID})
    quesPosted = user['quesPosted']
    for i in range(len(quesPosted)):
        quesPosted[i] = ObjectId(quesPosted[i])

    bookmarks = []
    bques = user['bookmarks']
    for i in range(0, len(bques)):
        bques[i] = ObjectId(bques[i])
    for q in QUESTIONS_COLLECTION.find({'_id': {'$in': bques}}):
        bookmarks.append(q)

    ques = []
    for q in QUESTIONS_COLLECTION.find({'_id': {'$in': quesPosted}}):
        ques.append(q)
    data = {
        'userID': user['_id'],
        'fname': user['firstname'],
        'lname': user['lastname'],
        'email': user['email'],
        'karma': user['karma'],
        'quesPosted': ques
    }
    return render_template('profile.html',
                           title='HoverSpace | Profile',
                           data=data,
                           bookmarks=bookmarks)
Ejemplo n.º 10
0
def signup():
    form = SignUpForm()
    if request.method == 'POST' and form.validate_on_submit():
        user = USERS_COLLECTION.find_one( {'email': form.email.data} )
        if user:
            flash("You have already signed up from this email id", category='error')
        else:
            user = USERS_COLLECTION.find_one( {'_id': form.username.data} )
            if user:
                flash("That username has already been taken", category='error')
            else:
                user_obj = User(form.username.data, form.email.data, form.firstname.data,
                        form.lastname.data, form.password.data, db=True)
                flash("SignUp successfull!", category='success')
                return redirect(url_for('login'))
    return render_template('signup.html', title='HoverSpace | Signup', form=form)
Ejemplo n.º 11
0
 def alreadyVotedAns(self, ansID):
     try:
         voted_ans = list()
         voted_ans = (USERS_COLLECTION.find_one({'_id': self.username
                                                 }))['voted_ans']
         for ans in voted_ans:
             if ans['ansID'] == ansID:
                 return True
         return False
     except:
         return False
Ejemplo n.º 12
0
def login():
    form = LoginForm()
    if request.method == 'POST' and form.validate_on_submit():
        user = USERS_COLLECTION.find_one({"_id": form.username.data})
        if user and User.validate_login(user['password'], form.password.data):
            user_obj = User(user['_id'])
            login_user(user_obj, remember=True)
            flash("Logged in successfully!", category='success')
            return redirect(url_for('home'))
        flash("Wrong username or password!", category='error')
    return render_template('login.html', title='HoverSpace | Login', form=form)
Ejemplo n.º 13
0
 def voteAns(self, ansID, voteType):
     fl = False
     status = {'votesChange': None, 'type': None}
     voteChange = 0
     vote = None
     try:
         voted_ans = list()
         voted_ans = (USERS_COLLECTION.find_one({'_id': self.username
                                                 }))['voted_ans']
         for ans in voted_ans:
             if ans['ansID'] == ansID:
                 if ans['vote'] == 1:
                     if voteType == 'up':
                         self.removeAnsVote(ansID)
                         voteChange = -1
                     else:
                         self.updateAnsVote(ansID, -1)
                         voteChange = -2
                         vote = "downvote"
                 else:
                     if voteType == 'up':
                         self.updateAnsVote(ansID, 1)
                         voteChange = 2
                         vote = "upvote"
                     else:
                         self.removeAnsVote(ansID)
                         voteChange = 1
                 fl = True
         if not fl:
             if voteType == "up":
                 self.addAnsVote(ansID, 1)
                 voteChange = 1
                 vote = "upvote"
             else:
                 self.addAnsVote(ansID, -1)
                 voteChange = -1
                 vote = "downvote"
         status = {'votesChange': voteChange, 'type': vote}
         return status
     except:
         print("voteQues except")
         status = {'votesChange': voteChange, 'type': vote}
         return status
Ejemplo n.º 14
0
def home():
    form = SearchForm()
    if request.method == "POST":
        l = []
        for selected in srch.search(form.srch_term.data):
            q = QuestionMethods(selected)
            l.append(q.getQuestion())
        return render_template('search.html',
                               title='HoverSpace | Search',
                               result=l)
    questions = QUESTIONS_COLLECTION.find({
        'flag': 'False'
    }).sort('timestamp', pymongo.DESCENDING)
    feed = list()
    for record in questions:
        try:
            story = {
                'short_description': record['short_description'],
                'long_description': record['long_description'],
                'ques_url': url_for('viewQuestion', quesID=str(record['_id'])),
                'postedBy': record['postedBy'],
                'ansCount': len(record['ansID']),
                'votes': record['votes'],
                'timestamp': record['timestamp']
            }
            if record['accepted_ans']:
                story['answer'] = ANSWERS_COLLECTION.find_one(
                    {'_id': ObjectId(record['accepted_ans'])})
            feed.append(story)
            topcontributors = USERS_COLLECTION.find().sort(
                'karma', pymongo.DESCENDING).limit(10)
            tags = []
            for tag in TAGS_COLLECTION.find():
                tags.append(tag['_id'])
        except KeyError:
            pass
    return render_template('home.html',
                           title='HoverSpace | Home',
                           feed=feed,
                           form=form,
                           tags=tags,
                           topcontributors=topcontributors)
Ejemplo n.º 15
0
 def update_comments(self, commentID):
     USERS_COLLECTION.find_one_and_update(
         {'_id': self.username},
         {'$addToSet': {
             'commentPosted': commentID
         }})
Ejemplo n.º 16
0
def load_user(username):
    u = USERS_COLLECTION.find_one({"_id": username})
    if not u:
        return None
    return User(u['_id'])
Ejemplo n.º 17
0
 def update_answers(self, ansID):
     USERS_COLLECTION.find_one_and_update({'_id': self.username}, {'$addToSet': {'ansPosted': ansID}})
Ejemplo n.º 18
0
 def update_questions(self, quesID):
     USERS_COLLECTION.find_one_and_update({'_id': self.username}, {'$addToSet': {'quesPosted': quesID}})
Ejemplo n.º 19
0
 def update_karma(self, karma):
     USERS_COLLECTION.find_one_and_update({'_id': self.username},
                                          {'$inc': {
                                              'karma': karma
                                          }})