def put(self, quiz_id): session = authorize(request.headers["Authorization"]) put_request = Quiz.quiz_from_dict(put_parser.parse_args()) criteria = { "createdBy": session.get('user').get('login'), "_id": int(quiz_id) } quiz = Quiz.quiz_from_dict(mongo.db.quiz.find_one_or_404(criteria)) for qst in put_request.questions: self.add_question(qst, quiz) return {"message": "modified % s" % quiz_id}, 200
def post(self, quiz_id, contact_group=None): session = authorize(request.headers["Authorization"]) if contact_group is None: contact_group = "default" contacts = self.get_contacts(contact_group, session.get("user").get("login")) if contacts is None: return {"message": "no contact to send"}, 400 criteria = {"createdBy": session.get('user').get('login'), "_id": int(quiz_id)} quiz = Quiz.quiz_from_dict(mongo.db.quiz.find_one_or_404(criteria)) for contact in contacts: c = Contact.contact_from_dict(contact) p = Publication() p._id = get_id("publication") p.creationDate = datetime.now() p.hash = hashlib.sha256("%d.%s" % (p._id, str(p.creationDate))).hexdigest() p.by = session.get('user').get('login') p.quiz = quiz p.to = c mongo.db.publications.insert(p.format()) self.send_email(quiz.title, p.hash, c.email, c.language) return {"message": "quiz %s published to %d contacts" % (quiz.title, len(contacts))}, 200
def patch(self, quiz_id): session = authorize(request.headers["Authorization"]) patch_request = Quiz.quiz_from_dict( patch_parser.parse_args()).format_patch() if len(patch_request) == 0: abort(400) criteria = { "createdBy": session.get('user').get('login'), "_id": int(quiz_id) } mongo.db.quiz.find_one_or_404(criteria) mongo.db.quiz.update(criteria, {"$set": patch_request}) return {"message": "modified % s" % quiz_id}, 200
def post(self): session = authorize(request.headers["Authorization"]) quiz_input = creation_parser.parse_args() quiz = Quiz.quiz_from_dict(quiz_input) quiz.creationDate = datetime.now() quiz.createdBy = session.get('user').get('login') """ we create the quiz first """ quiz._id = int(get_id("quiz")) print "\n", quiz.format() mongo.db.quiz.insert(quiz.format()) """ we create questions as objects and we embbed them into the quiz""" for qst in quiz.questions: self.add_question(qst, quiz) return {"quiz_id": "%s" % (quiz._id)}, 201
def get_single_quiz(self, quiz_id): res = mongo.db.quiz.find_one_or_404({"_id": int(quiz_id)}) quiz = Quiz.quiz_from_dict(res) return quiz