def unprocess(): try: data = {"userID": "phunguyen"} model = Test(data) return str(Test.RI() + "s") except Exception as e: raise UnprocessableEntity("RC_400", message=str(e))
def isvote_isunvote_question(questionID): try: query = {"userID": session.get("userID"), "questionID": questionID} return isVote_or_isUnvote(module, VoteQuestion, UnvoteQuestion, query) except Exception as e: raise UnprocessableEntity("RC_400", message=str(e))
def isvote_isunvote_comment(commentID): try: query = {"userID": session.get("userID"), "commentID": commentID} return isVote_or_isUnvote(module, VoteComment, UnvoteComment, query) except Exception as e: raise UnprocessableEntity("RC_400", message=str(e))
def logout(): try: session.clear() data_response = {"status": 200, "description": "ok"} return make_resource_response("resource", data_response) except Exception as e: raise UnprocessableEntity('RC_400', message=str(e))
def delete_item(self, _id): model = self.Model(self.return_query(_id)) done = model.delete() if done: return Response(status=204) else: raise UnprocessableEntity('RC_400', message='Delete fail')
def test(): try: data = request.json model = Test(data) resp = model.save() return make_resource_response("resource", resp) except Exception as e: raise UnprocessableEntity("RC_400", message=str(e))
def comment_vote(commentID): try: data = request.json data["commentID"] = commentID query = {"commentID": commentID} return vote_or_unvote(module, VoteComment, data, query, "comment") except Exception as e: raise UnprocessableEntity("RC_400", message=str(e))
def delete_item(self, ID): done = self.data.delete_one(self.resource, ID) if done: resp = {"status": 204, "description": "ok"} return make_resource_response("resource", resp) else: raise UnprocessableEntity( 'RC_400', message="Delete fail, you don't have permission")
def update_item(self, _id): try: data = request.json or request.form.to_dict() data.update(self.return_query(_id)) model = self.Model(data) model.save() return make_resource_response(self.resource, model.to_primitive()) except Exception as e: raise UnprocessableEntity('RC_400', message=e.to_primitive())
def question_unvote(questionID): try: data = request.json data["questionID"] = questionID query = {"questionID": questionID} return vote_or_unvote(module, UnvoteQuestion, data, query, "question") except Exception as e: raise UnprocessableEntity("RC_400", message=str(e))
def replies(commentID): try: data = request.json module.data.update("comment", {"commentID": commentID}, {"$set": data}) resp = module.data.find_one("comment", commentID) return make_resource_response("comment", resp) except Exception as e: raise UnprocessableEntity("RC_400", str(e))
def create(self): try: data = request.json or request.form.to_dict() if session.get("AUTH_FIELD"): data["user"] = session.get("username") model = self.Model(data) model.save() return make_resource_response(self.resource, model.to_primitive()) except Exception as e: raise UnprocessableEntity('RC_400', message=e.to_primitive())
def views(questionID): try: query = {"questionID": questionID} update = {"$inc": {"views": 1}} module.data.find_one_and_update("question", query, update) resp = module.data.find_one("question", questionID) return make_resource_response("views", resp) except Exception as e: raise UnprocessableEntity("RC_400", message=str(e))
def get_item(self, _id): try: dt = self.data.find_one(self.resource, _id) if dt: return make_resource_response(self.resource, data=dt) else: return NotFoundException('RG_404', message='Resource not found', data=dt) except Exception as e: raise UnprocessableEntity('RC_400', message=e.to_primitive())
def create(self): try: data = request.json or request.form.to_dict() if session.get("AUTH_FIELD") and self.resource != "category": data["userID"] = session.get("userID") model = self.Model(data) resp = model.save() return make_resource_response(self.resource, resp) except Exception as e: raise UnprocessableEntity('RC_400', message=str(e))
def update_item(self, ID): try: data = request.json or request.form.to_dict() data['_updated'] = datetime.datetime.now() + \ datetime.timedelta(hours=7) query = self.return_query(ID) if session.get("AUTH_FIELD") and self.resource != "user": query["userID"] = session.get("userID") self.data.find_one_and_update(self.resource, query, {'$set': data}) resp = self.data.find_one(self.resource, ID) return make_resource_response(self.resource, resp) except Exception as e: raise UnprocessableEntity('RC_400', message=str(e))
def comments(): try: data = request.json # check image and store in folder data = save_image_base64(module, data) # data["userID"] = session.get("userID") model = Comment(data) resp = model.save() module.data.update("question", {"questionID": data["questionID"]}, {"$inc": { "comments": 1 }}) return make_resource_response("comment", resp) except Exception as e: raise UnprocessableEntity("RC_400", str(e))
def get_aggregate(self): try: pipeline = [{ "$match": {} }, { "$project": { "_id": 0, "_updated": 0, "_etag": 0, "_created": 0 } }] data = self.data.aggregate(self.resource, pipeline) return make_resource_response("resource", list(data)) except Exception as e: raise UnprocessableEntity('RC_400', message=str(e))
def topuser(): try: pipeline = [{ "$project": { "topVote": { "$subtract": ["$votes", "$unvotes"] } } }, { "$sort": { "topVote": -1 } }, { "$limit": 6 }] data = module.data.aggregate(User.RI(), pipeline) return make_resource_response("user", list(data)) except Exception as e: raise UnprocessableEntity("RC_400", message=str(e))
def register(): try: # data = request.json or request.form.to_dict() data = request.json query = {"email": data.get("email")} if module.data.check_exist(User.RI(), query): return make_error(200, description="email is exist") model = User(data) model.save() data_response = { "status": 200, "description": "ok", "userID": data["userID"], "isSuccess": True } return make_resource_response("resource", data_response) except Exception as e: raise UnprocessableEntity('RC_400', message=str(e))
def login(): try: dt = request.json or request.form.to_dict() if not module.data.check_exist(User.RI(), {"email": dt.get("email")}): return make_error(200, description="Email is wrong") if not module.data.check_exist(User.RI(), {"password": dt.get("password")}): return make_error(200, description="password is wrong") session["userID"] = module.data.db.user.find_one( {"email": dt.get("email")})["userID"] session.permanent = True logger.warning("Session %r", session) data_response = { "status": 200, "description": "ok", "userID": session["userID"], "isSuccess": True } return make_resource_response("resource", data_response) except Exception as e: raise UnprocessableEntity('RC_400', message=str(e))