def post_(self, user):
        answer = SurveyAnswer()
        answer.populateFromRequest(self.request.Params)
        answer.Put()

        summary = SurveyAnswerSummary.get_or_insert("%s" % answer.year, parent=answer.survey_question)

        if user:
            recordAnswer(summary.key, answer)

        self.jsonReply(answer.hashify())
        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
    summary.year = answer.year
    if answer.yesno_answer is not None or (answer.free_text_answer is not None and len(answer.free_text_answer) > 0):
        summary.answer_count = summary.answer_count + 1
    if answer.yesno_answer is not None:
        if answer.yesno_answer:
            summary.yes_count = summary.yes_count + 1
        else:
            summary.no_count = summary.no_count + 1
    summary.put()