def update_question(question_id): error = False request_json = request.get_json() try: question = Question.query.filter( Question.id == question_id).one_or_none() except: abort(422) if question: question.question = request_json['question'] question.answer = request_json['answer'] question.category = request_json['category'] question.difficulty = request_json['difficulty'] try: question.update() except: abort(422) else: try: question = Question(request_json['question'], request_json['answer'], request_json['category'], request_json['difficulty']) question.id = question_id question.insert() except: abort(422) return jsonify({"success": True, "question": question.format()})
def test_delete_question(self): # Question for delete try: q = Question(question='q', answer='a', category=1, difficulty=2) q.id = 30 q.insert() except: pass res = self.client().delete('/questions/30') self.assertEqual(res.status_code, 200)
def test_delete_question_success(self): ''' test for successful deletion of a question''' deleted_item = Question.query.get(20).format() cloned_item = Question(deleted_item['question'], deleted_item['answer'], deleted_item['category'], deleted_item['difficulty']) res = self.client().delete('/questions/20') data = res.get_json() deleted_not_found = Question.query.get(20) self.assertEqual(deleted_not_found, None) self.assertEqual(res.status_code, 200) self.assertTrue(data['success']) self.assertEqual(data['deleted_question'], 20) # restore deleted item cloned_item.id = 20 cloned_item.insert()
def fetchQuestions(self, start, count): query = ( "SELECT id, owner_id, content, c_time FROM questions ORDER BY c_time DESC LIMIT %s OFFSET %s;" ) cursor = self.db.cursor() ret = [] cursor.execute(query, (int(count), int(start))) for (id, owner_id, content, c_time) in cursor: question = Question() question.id = id question.owner_id = owner_id question.content = content question.create_time = c_time ret.append(question) cursor.close() return ret
def api_post_a_question(): try: data = json.loads(request.data) except json.decoder.JSONDecodeError as e: raise e abort(400, f'json required, got: {request.data}') search = data.get('searchTerm') if search: found_questions = Question.query.filter( Question.question.ilike(f'%{search}%')) questions = [question.format() for question in found_questions] total_questions = len(questions) body = { 'success': True, 'categories': Category.format_all(), 'total_questions': total_questions, 'current_category': "ALL", 'questions': questions, 'page': 1 } else: if not all([data.get(key) for key in Question.required_keys()]): abort( 422, f'Requires Fields: {",".join(Question.required_keys())}') question = Question(question=data.get('question'), answer=data.get('answer'), category=data.get('category'), difficulty=data.get('difficulty')) if data.get('id'): question.id = data.get('id') try: question.insert() except Exception as e: if '(psycopg2.errors.UniqueViolation)' in str(e): abort(422, f"id={data.get('id')} already exists.") else: abort(500) body = {'success': True, 'question': question.format()} return jsonify(body)
def save_question(self): text = self.lineEditQuestionText.text() answer1 = self.lineEditAnswer1.text() answer2 = self.lineEditAnswer2.text() answer3 = self.lineEditAnswer3.text() answer4 = self.lineEditAnswer4.text() correct_answer = self.lineEditCorrectAnswer.text() question = Question(text=text, answers=[answer1, answer2, answer3, answer4], correct_answer=correct_answer) if self.selected_question: question.id = self.selected_question.id if question.id: self.db_manager.update_question(question) else: self.db_manager.insert_question(question)