Esempio n. 1
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)
Esempio n. 2
0
 def updateVotes(self, vote):
     QUESTIONS_COLLECTION.find_one_and_update(
         {'_id': ObjectId(self.quesID)}, {'$inc': {
             'votes': vote
         }})
     votes = (QUESTIONS_COLLECTION.find_one({'_id': ObjectId(self.quesID)
                                             }))['votes']
     return votes
Esempio n. 3
0
 def editQuestion(self, short_desc, long_desc):
     QUESTIONS_COLLECTION.find_one_and_update(
         {'_id': ObjectId(self.quesID)}, {
             '$set': {
                 'short_description': short_desc,
                 'long_description': long_desc
             }
         })
Esempio n. 4
0
 def setAcceptedAns(self, ansID, username):
     usr = (QUESTIONS_COLLECTION.find_one({'_id': ObjectId(self.quesID)
                                           }))['postedBy']
     if username == usr:
         QUESTIONS_COLLECTION.find_one_and_update(
             {'_id': ObjectId(self.quesID)},
             {'$set': {
                 'accepted_ans': ansID
             }})
Esempio n. 5
0
def postQuestion():
    form = QuestionForm()
    if request.method == 'POST':
        try:
            username = current_user.get_id()
            question = QUESTIONS_COLLECTION.find_one(
                {'short_description': form.short_description.data})
            if question:
                flash("This question has already been asked", category='error')
                return render_template('post-a-question.html',
                                       title='HoverSpace | Post a Question',
                                       form=form)
            tags = request.form.getlist('tag')
            ques_obj = Question(username, form.short_description.data,
                                form.long_description.data, tags)
            quesID = ques_obj.postQuestion()
            tag_obj = TagMethods(quesID, tags)
            tag_obj.addQuestion()
            srch.add_string(quesID, form.short_description.data)
            flash("Your question has been successfully posted.",
                  category='success')
            return redirect(url_for('viewQuestion', quesID=quesID))
        except KeyError:
            return redirect(url_for('login'))
    return render_template('post-a-question.html',
                           title='HoverSpace | Post a Question',
                           form=form,
                           choices=tag_choices)
Esempio n. 6
0
 def get_answers(self, quesID):
     answers = []
     try:
         ans_obj = (QUESTIONS_COLLECTION.find_one({'_id': ObjectId(quesID)}))['ansID']
         for answer in ans_obj:
             answers.append(ANSWERS_COLLECTION.find_one({'_id': ObjectId(answer)}))
     except TypeError:
         answers = []
     return answers
Esempio n. 7
0
 def addFlaggedBy(self, userID, postedBy):
     ques_obj = QUESTIONS_COLLECTION.find_one(
         {'_id': ObjectId(self.quesID)})
     flags = ques_obj['flaggedBy']
     votes = ques_obj['votes']
     if userID in flags:
         return "alreadyFlagged"
     QUESTIONS_COLLECTION.find_one_and_update(
         {'_id': ObjectId(self.quesID)},
         {'$addToSet': {
             'flaggedBy': userID
         }})
     if (len(flags) >= 10):
         flag = "True"
         self.setFlag(postedBy, votes, flag)
         usr = User(postedBy)
         usr.update_karma(-votes)
         return "quesRemoved"
     return "flagged"
Esempio n. 8
0
 def post_question(self):
     quesID = QUESTIONS_COLLECTION.insert_one({
         'short_description': self.short_description,
         'long_description': self.long_description,
         'posetdBy': self.posetdBy,
         'timestamp': self.timestamp,
         'ansID': []
     }).inserted_id
     usr = User(self.posetdBy)
     usr.update_questions(str(quesID))
     return quesID
Esempio n. 9
0
def home():
    question = QUESTIONS_COLLECTION.find()
    answer = list()
    for record in question:
        try:
            for ansID in record['ansID']:
                for ans in ANSWERS_COLLECTION.find({'_id': ObjectId(ansID)}):
                    answer.append(record['short_description'])
                    answer.append(record['long_description'])
                    answer.append(ans['ansText'])
                break
        except KeyError:
            pass
    return render_template('home.html', title='HoverSpace | Home', short_description=answer)
Esempio n. 10
0
 def postQuestion(self):
     quesID = QUESTIONS_COLLECTION.insert_one({
         'postedBy': self.postedBy,
         'short_description': self.short_description,
         'long_description': self.long_description,
         'timestamp': self.timestamp,
         'ansID': [],
         'commentID': [],
         'votes': 0,
         'accepted_ans': None,
         'flag': False
     }).inserted_id
     usr = User(self.postedBy)
     usr.update_questions(str(quesID))
     return quesID
Esempio n. 11
0
def post_question():
    form = QuestionForm()
    if request.method == 'POST':
        try:
            username = current_user.get_id()
            question = QUESTIONS_COLLECTION.find_one( {'short_description': form.short_description.data} )
            if question:
                flash("This queston has already been asked", category='error')
                return render_template('post-a-question.html', title='HoverSpace | Post a Question', form=form)
            ques_obj = Question(username, form.short_description.data, form.long_description.data)
            quesID = ques_obj.post_question()
            flash("Your question has been successfully posted.", category='success')
            #print(quesID)
            return redirect(url_for('view_question', quesID=quesID))
        except KeyError:
            return redirect(url_for('login'))
    return render_template('post-a-question.html', title='HoverSpace | Post a Question', form=form)
Esempio n. 12
0
def home():
    questions = QUESTIONS_COLLECTION.find().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']))
            }
            if record['accepted_ans']:
                story['answer'] = ANSWERS_COLLECTION.find_one(
                    {'_id': ObjectId(accepted_ans)})
            feed.append(story)
        except KeyError:
            pass
    return render_template('home.html', title='HoverSpace | Home', feed=feed)
Esempio n. 13
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)
Esempio n. 14
0
 def removeAcceptedAns(self):
     QUESTIONS_COLLECTION.find_one_and_update(
         {'_id': ObjectId(self.quesID)}, {'$set': {
             'accepted_ans': None
         }})
Esempio n. 15
0
 def setFlag(self, flag):
     QUESTIONS_COLLECTION.find_one_and_update(
         {'_id': ObjectId(self.quesID)}, {'$set': {
             'flag': flag
         }})
Esempio n. 16
0
 def getAcceptedAns(self):
     return (QUESTIONS_COLLECTION.find_one({'_id': ObjectId(self.quesID)
                                            }))['accepted_ans']
Esempio n. 17
0
 def update_comments(self, commentID):
     QUESTIONS_COLLECTION.find_one_and_update(
         {'_id': ObjectId(self.quesID)},
         {'$addToSet': {
             'commentID': commentID
         }})
Esempio n. 18
0
 def add_all(self):
     for entry in QUESTIONS_COLLECTION.find():
         self.add_string(str(entry['_id']), entry['short_description'])
Esempio n. 19
0
 def insert_answers(self, ansID):
     QUESTIONS_COLLECTION.find_one_and_update(
         {'_id': ObjectId(self.quesID)}, {'$addToSet': {
             'ansID': ansID
         }})
Esempio n. 20
0
 def getQuestion(self):
     ques_dict = QUESTIONS_COLLECTION.find_one(
         {'_id': ObjectId(self.quesID)})
     return ques_dict
Esempio n. 21
0
 def getFlag(self):
     return (QUESTIONS_COLLECTION.find_one({'_id':
                                            ObjectId(self.quesID)}))['flag']
Esempio n. 22
0
 def setAcceptedAns(self, ansID):
     QUESTIONS_COLLECTION.find_one_and_update(
         {'_id': ObjectId(self.quesID)},
         {'$set': {
             'accepted_ans': ObjectId(ansID)
         }})
Esempio n. 23
0
 def removeFlag(self, userID):
     QUESTIONS_COLLECTION.find_one_and_update(
         {'_id': ObjectId(self.quesID)}, {'$pull': {
             'flaggedBy': userID
         }})