def editQuestionDescription(quesID): form = QuestionForm() q = QuestionMethods(quesID) if request.method == 'POST': q.editQuestion(form.short_description.data, form.long_description.data) return redirect(url_for('viewQuestion', quesID=quesID)) ques = q.getQuestion() '''if request.method == 'GET':
def viewTagQuestion(tag): quesID = TagQuestion(tag) l = [] for q in quesID.getQuestions(): qq = QuestionMethods(q) l.append(qq.getQuestion()) return render_template('tag.html', title='HoverSpace | Tag Questions', tags=tag, result=l)
def post_answer(self): ansID = ANSWERS_COLLECTION.insert_one({ 'postedBy': self.postedBy, 'quesID': self.quesID, 'ansText': self.ansText, 'timestamp': self.timestamp, 'quesID': self.quesID, 'commentID': [], 'votes': 0, 'flaggedBy': [], 'flag': 'False'}).inserted_id usr = User(self.postedBy) usr.update_answers(str(ansID)) ques = QuestionMethods(self.quesID) ques.insert_answers(str(ansID)) return ansID
def viewQuestion(quesID): form = AnswerForm() if request.method == 'POST': username = current_user.get_id() ans_obj = Answers(username, quesID, form.ans_text.data) ansID = ans_obj.post_answer() ques_obj = QuestionMethods(quesID) ques = ques_obj.getQuestion() ansmet_obj = AnswerMethods(quesID) ans = ansmet_obj.get_answers(quesID) return render_template('question.html', question=ques, answers=ans, form=form)
def updateVotes(quesID): rd = (request.data).decode('utf-8') data = json.loads(rd) voteType = data['voteType'] print(voteType) usr = User(current_user.get_id()) status = usr.voteQues(quesID, voteType) print(status) ques_obj = QuestionMethods(quesID) votesCount = ques_obj.updateVotes(status['votesChange']) postedBy = (ques_obj.getQuestion())['postedBy'] usr = User(postedBy) usr.update_karma(status['votesChange']) print(status['type'], votesCount) return json.dumps({'type': status['type'], 'count': votesCount})
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)
def setQuesFlag(quesID): usr = current_user.get_id() ques_obj = QuestionMethods(quesID) postedBy = (ques_obj.getQuestion())['postedBy'] if usr == postedBy: return json.dumps({ 'flag': 'notAllowed', 'message': 'You cannot flag your own question' }) fl = ques_obj.addFlaggedBy(usr, postedBy) if fl == 'flagged': return json.dumps({ 'flag': 'flagged', 'message': 'You have marked this question inappropiate' }) elif fl == 'alreadyFlagged': ques_obj.removeFlag(usr) return json.dumps({'flag': 'flagRemoved', 'message': 'Flag removed'}) else: return json.dumps({ 'flag': 'quesRemoved', 'message': 'This question has been marked inappropiate by more than 10 users, so it is removed' })
def setAcceptedAns(quesID, ansID): usr = current_user.get_id() ques_obj = QuestionMethods(quesID) postedBy = (ques_obj.getQuestion())['postedBy'] if usr != postedBy: return json.dumps({ 'status': 'notAllowed', 'message': 'You are not allowed to set this answer as accepted.' }) if str(ques_obj.getAcceptedAns()) == ansID: ques_obj.removeAcceptedAns() return json.dumps({ 'status': 'removed', 'message': 'Accepted answer removed' }) else: ques_obj.setAcceptedAns(ansID) return json.dumps({ 'status': 'set', 'message': 'You have marked this answer as accepted' })