def get(self): state = LearnerState(self.session) learner_error = state.learner_error() context = dict(show_prevnext=True, boards=Board.all().order('priority'), learner_error=learner_error, state=state.as_string()) jt = self.jinja_environment().get_template('learner.djt') self.response.write(jt.render(context))
def persist_learner(self, name, board_id, date): """ Check the learner info; if it's good, persist it in the session and App Engine storage. This is a slight departure from previous MET versions b/c webapp2 sessions can't serialize datetime objects (!). """ # perform sanity checks on the name, board, and date try: if len(name) == 0: raise board = Board.all().filter("priority =", int(board_id)).get().name if len(board) == 0: raise # date can be empty (typical usage) or contain a date string # ("cheater" mode) if date and not datetime.strptime(date, "%m/%d/%Y"): raise except: self.learner_error(True) msg = "name='%s' board_id='%s' date='%s'" % (name, board_id, date) logging.error(msg) raise InvalidLearnerException(msg) # persist the learner name and board in the session (to be used by the # certificate template) self.session['learner_name'] = name self.session['learner_board'] = board # if a date is supplied, use it, otherwise make sure it's clear so the # template can supply a default if date: self.session['learner_date'] = date elif 'learner_date' in self.session: del self.session['learner_date'] # Persist the learner name, board, and a timestamp in appengine # storage. The model includes its own timestamp. comp = Completion() comp.name = name comp.board = board comp.put()