class SurveySubmissionCollectionHandler (HardenedHandler): def get_(self, user): survey = self.lookupKey(param='survey') self.genericGetCollection( ndb.gql("SELECT __key__ FROM SurveySubmission WHERE survey = :1 ORDER BY position", survey)) def post_(self, user): submission = SurveySubmission() submission.populateFromRequest(self.request.Params) submission.Put() self.jsonReply(submission.hashify()) SurveySubmission.collectionHandler(SurveySubmissionCollectionHandler) class SurveyAnswerHandler (HardenedHandler): def get_(self, user, key): self.genericIndividualPost(user, key) def post_(self, user, key): self.genericIndividualPost(user, key) SurveyAnswer.individualHandler(SurveyAnswerHandler) @ndb.transactional def recordAnswer(summary_key, answer): summary = summary_key.get() summary.survey_question = answer.survey_question