def post(self): error_list = [] profile = get_profile() key = self.request.get('key') if key and (key != 'None'): b_key = ndb.Key(urlsafe=key) bike = b_key.get() if bike: if b_key.parent() != profile.key: error_list.append('Attempt to edit bike not owned by user') else: error_list.append('Bike not found') else: bike = Bike(parent=profile.key) if len(error_list) > 0: logging.info('%s' % error_list) self.redirect('user/errorPage') else: form_data = BikeForm(self.request.POST, bike) form_data.bikeType.choices = [(bikeType.key.urlsafe(), bikeType.name) for bikeType in BikeType.query().fetch()] logging.info('%s' % form_data.bikeType.data) if form_data.validate(): # Save and redirect to bike overview page form_data.bikeType.data = ndb.Key( urlsafe=form_data.bikeType.data) # translate urlsafe key string to actual key form_data.populate_obj(bike) bike.put() self.redirect('/user/bikeoverview') else: # back to form for editing template = jinjaEnvironment.get_template('template/bikeentry.html') template_values = make_user_links(self.request.uri) template_values['menu'] = make_menu(page='user/bikeentry') template_values['submitValue'] = 'Fix' template_values['form'] = form_data template_values['key'] = key self.response.out.write(template.render(template_values))