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)
Beispiel #2
0
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)
Beispiel #3
0
    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)}))
Beispiel #4
0
 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)