Exemplo n.º 1
0
    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))