def comment(self, id, *args, **kwargs): comment = request.params["text"].strip() if not len(comment): return Response("") c.task = safe_get(Task, id, check_live=True) c.comment = Comment(text=h.html2safehtml(comment), user=c.username, task=c.task) return Response(c.comment.text)
def change_field(self, id, *args, **kwargs): field = request.params["field"] task = safe_get(Task, id, check_live=True) newfield = self.form_result[field] # special case for deadline -- converts a datetime to a date. old = getattr(task, field) if field == "deadline" and old and isinstance(old, datetime.datetime): old = old.date() # special case for status if only two statuses are present. elif field == "status": if not task.task_list.hasFeature("custom_status"): assert newfield in ("true", "false"), "Bad status %s on task %s" % (newfield, id) if newfield == "true": newfield = task.task_list.getDoneStatus() else: newfield = task.task_list.getNotDoneStatus() else: newfield = task.task_list.getStatusByName(newfield) assert newfield, "Nonexistent status on task %d" % id # special case for owner elif field == "owner": if not _assignment_permitted(newfield): raise httpexceptions.HTTPForbidden if newfield == "--": newfield = None # find out if the old taskrow wants us to render its replacement a particular way is_preview = self.form_result.get("is_preview", None) is_flat = self.form_result.get("is_flat", None) editable_title = self.form_result.get("editable_title", None) depth = self.form_result.get("depth", 0) columnOrder = self.form_result.get("columnOrder", None) if isinstance(newfield, basestring): newfield = h.html2safehtml(newfield) if not old == newfield: setattr(task, field, newfield) c.task = task c.depth = depth if columnOrder: c.permalink = columnOrder return render( "task/task_item_row.myt", fragment=True, atask=c.task, is_preview=is_preview, is_flat=is_flat, editable_title=editable_title, )
def update(self, id, *args, **kwargs): assert self.form_result['member_level'] >= self.form_result['other_level'] c.tasklist = safe_get(TaskList, id, check_live=True) p = dict(self.form_result) if "feature_custom_status" not in p and "statuses" in p: del p['statuses'] if 'text' in p: p['text'] = html2safehtml(p['text']) c.tasklist.set(**p) set_features(p) self._setup_roles(p, c.tasklist) return Response.redirect_to(action='show',id=c.tasklist.id)