def post(self): # save the goal currentGame = self.request.get("currentGame") if(currentGame): newGoal = Goal(game = currentGame, destination = self.request.get("destination"), pointValue = int(self.request.get("pointValue"))) newGoal.put() # attach the goal to the current game myGame = Game.query(Game.gameName==currentGame).fetch()[0] myGame.goals.append(newGoal) myGame.put() self.redirect(self.request.referer)
def goal_view(goal_id=None): if goal_id: # ---- Delete a goal and redirect to http ref goal = Goal.get_by_id(goal_id) if goal_id else None if not goal: flash('The goal with the id {} could not be found'.format(goal_id), 'error') else: if goal.movement.get().get_current_cycle() >= goal.cycle: flash('You can only delete goals for future cycles', 'error') else: goal.key.delete() flash("Goal has been deleted", 'info') return redirect(request.referrer or url_for('index')) else: # ---- Create a new goal and redirect http ref form = GoalForm(request.form) if form.validate_on_submit(): author = Persona.get_by_id(users.get_current_user().user_id()) if not author: flash("You user account was not found", "error") return redirect(request.referrer) movement = Movement.get_by_id(int(form.movement_id.data)) if not movement: flash("The movement '{}' was not found".format(form.movement_id.data), 'error') return redirect(request.referrer) if len(form.desc.data) > 500: # Remove non-ascii characters flash("Goals can have at most 500 characters. Your goal: {}".format( "".join(i for i in form.desc.data if ord(i) < 128)), "error") return redirect(request.referrer) goal = Goal( movement=movement.key, author=author.key, cycle=int(form.cycle.data) if form.cycle.data else None, desc=form.desc.data ) try: goal.put() goal_id = goal.key.id() flash("Goal successfully created", 'success') return redirect(request.referrer or url_for('index')) except CapabilityDisabledError: flash("Sorry, datastore is currently in read-only mode", 'error') return redirect(request.referrer or url_for('index')) else: flash("Invalid form submitted", "error") return redirect(request.referrer)
def post(self, *args, **kwargs): log.info('Posting a goal: %s' % (unicode(self.request.POST),)) try: name = self.request.get('name') latitude = float(self.request.get('latitude', None)) longitude = float(self.request.get('longitude', None)) center = db.GeoPt(latitude, longitude) radius = int(self.request.get('radius')) expires = datetime.utcfromtimestamp(int(self.request.get('expires'))) count = int(self.request.get('count', 1)) desired = self.request.get('desired', 'yes') in ['yes', '1', 'true'] and True or False goal = Goal(name=name, center=center, radius=radius, expires=expires, count=count, desired=desired, user=users.get_current_user()) goal.put() log.info('Created a new goal: %s' % (goal.key().id(),)) self.response.write(dumps({'created': str(goal.key().id())})) except Exception, e: log.exception('Error creating a goal') self.response.write(dumps({'error': unicode(e)}))
def test_goal_model(self): goal = Goal(title="Do Great things") goal_key = goal.put() self.assertEquals(len(Goal.all()), 1) g = Goal.get(goal_key.id()) self.assertEquals(g.title, "Do Great things") self.assertFalse(g.done) # Delete goal g.delete() self.assertEquals(len(Goal.all()), 1) self.assertFalse(g.enabled) # Restore goal g.restore() self.assertTrue(g.enabled) # Purge goal g.purge() self.assertEquals(len(Goal.all()), 0)