def feedback(self): """Provide a feedback for a status. Overrides the older feedback if there was any. """ req = json.loads(self.request.body) try: qid = int(req.get('qid', '')) sid = int(req.get('sid', '')) score = int(req.get('score', '')) if score < -1 or score > 1: self.abort(400, detail='Invalid score.') uid = self.user_session['user_id'] q = Query.get_by_id(qid) if q is None: raise ValueError() f = Feedback.gql('WHERE uid = :1 AND qid = :2 AND sid = :3', uid, qid, sid).get() if f is None: f = Feedback(uid=uid, qid=qid, sid=sid) f.score = score f.put() self.write({'message': 'success'}) except ValueError: self.abort(400, detail='Please specify valid query ID and status ID.')
def scores(self): """Retrieves previously provided feedback for a query.""" qid = int(self.request.get('qid')) uid = self.user_session['user_id'] fs = Feedback.gql('WHERE uid = :1 AND qid = :2', uid, qid).fetch() self.write({'items': [f.to_dict() for f in fs]})