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
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'}))
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'}))