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