Example #1
0
 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)
Example #2
0
    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,
        )
Example #3
0
    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)