示例#1
0
    def update(self,dict):
        #encapsulate repeated properties
        dict = shg_utils.encapsulate_dict(dict,RepeatedTask())

        for k,v in self.definitions.iteritems():
            if k in dict:
                if type(dict[k]) == type([]):
                    for i in dict[k]:
                        assert i in v, "Incorrect value : {0}".format(i)
                else:
                    assert dict[k] in v, "Incorrect value : {0}".format(dict[k])

        if 'reminders' in dict:
            assert len(dict['reminders']) <= 4, 'Sorry, a maximum of 10 reminders'
            #make sure we only have one of each...

            dict['reminders'] = set(dict['reminders'])
            new_r = []
            for r in dict['reminders']:
                if parse_time(r) != None:
                    new_r.append(r)
            if len(new_r) ==0:
                dict['no_reminder'] = True
            dict['reminders'] = new_r

        assert dict['due_date'].year >= 2012,'Due date must be after 2012'

        self.populate(**dict)
        self.put()

        return True
示例#2
0
    def post_create(self):

        dict = self.request.POST
        dict['created_by'] = self.request.session.user._get_id()
        dict['house_id'] = self.request.session.user.house_id

        if self.request.route.name == 'tasks':

            rt = RepeatedTask.create(dict)

            hse = house.House.get_by_id(self.request.session.user.house_id)
            hse.add_house_event(user_id = self.request.session.user._get_id(),
                            desc = 'created a task named {0}'.format(dict['name']),
                            points = 0,
                            reference=rt.key)

            return self.json_response(json.dumps({'success':'Task created','redirect':'/tasks'}))
        elif self.request.route.name == 'standing':
            st = StandingTask()
            dict = shg_utils.encapsulate_dict(self.request.POST,StandingTask)
            st.populate(**dict)
            st.put()

            self.request.session.user.house.add_house_event(
            user_id=self.request.session.user._get_id(),
            desc="created standing task '"+ st.name + "'",
            points=0,
            reference=None)



            return self.json_response(json.dumps({'success':'Task created','redirect':'/standing'}))
示例#3
0
    def post_edit(self):

        dict = self.request.POST
        id = dict.pop('id')

        if self.request.route.name == 'tasks':

            if self.task.update(dict):
                self.task.update_events()
                return self.json_response(json.dumps({'success':'Task updated','redirect':'/tasks'}))
            else:
                return self.json_response(json.dumps({'failure':'Unable to update task'}))
        elif self.request.route.name == 'standing':
            dict = shg_utils.encapsulate_dict(dict,StandingTask)
            self.task.populate(**dict)
            self.task.put()

            return self.json_response(json.dumps({'success':'Task updated','redirect':'/standing'}))