def get(self, *args, **kwargs): tid = kwargs.get('tid') mode = kwargs.get('mode') if not tid: raise HTTPError(404) p_users = Auth.find_project_users(pid=self.pid) self.p_users = [{'id': auth.user_id, 'name': auth.user_name} for auth in p_users] self.json_p_users = json.dumps(self.p_users) task = Task.get(id=tid) if not mode: # 任务详细信息 # get comment task_comments = Comment.find(task_id=task.id, order_by='created') # get change log task_logs = TaskLog.find(task_id=task.id, order_by='created desc') # focus focus = TaskFocus.check_focus(task_id=task.id, user_id=self.user.id) return self.render('task.html', task=task, auth=self.auth, logs=task_logs, comments=task_comments, focus=focus) if mode == 'solve': # 标记解决任务 if not task.is_done: task.status = Task._status_solved task.save() TaskLog.new( task_id=task.id, desc=json.dumps([]), note=u'标记为解决', updater_id=self.user.id, updater_name=self.user.name, ) return self.redirect('/%s/%s/%s' % (self.pid, 'task', task.id)) if mode == 'edit': # 编辑任务 # 用户列表去除已经分配的用户 users = [u for u in self.p_users if u['id'] not in task.assigned_ids] json_p_users = json.dumps(users) task_data = task.dictify() task_data['assigneds'] = json.dumps(task.assigned_users) return self.render( 'task-new.html', task=task_data, auth=self.auth, json_users=json_p_users, statuses=self.statuses, types=self.types, priorities=self.priorities, errors={}, update=True) if mode == 'focus': # 关注任务 TaskFocus.focus( task=task, user=self.user, pid=self.pid, pname=self.auth.project_name, ) return self.redirect('/%s/%s/%s' % (self.pid, 'task', task.id))
def post(self, *args, **kwargs): tid = kwargs.get('tid') if not tid: raise HTTPError(404) task = Task.get(id=tid) form = CommentForm(self.request.arguments) # set form data form.from_user_id.data = self.user.id form.from_user_name.data = self.user.name form.to_user_id.data = task.creator_id form.to_user_name.data = task.creator_name form.task_id.data = task.id form.task_title.data = task.title # 分析content 识别链接, 识别@ # 链接 <a>url</a> content, at_users = analyse_content(form.content.data) print '****************content: ', repr(content) form.type.data = Comment._type_at if at_users else Comment._type_reply form.content.data = content if form.validate(): comment = Comment.new(**form.data) # 评论消息 自己回复自己或者自己@自己不发消息 if int(self.user.id) != int(task.creator_id): Message.set( user_id=task.creator_id, from_user=self.user, task=task, pid=self.pid, pname=self.auth.project_name, type='apply', content=content, ) # @消息 for name in at_users: user = User.get(name=name, status=User._status_ok) if user and user.id != int(self.user.id): Message.set( user_id=user.id, from_user=self.user, task=task, pid=self.pid, pname=self.auth.project_name, type='@', content=content, ) return self.redirect('/%s/task/%s' % (self.pid, task.id)) else: return self.render('comment.html', errors=form.errors, auth=self.auth, task=task)
def get(self, *args, **kwargs): tid = kwargs.get('tid') mode = kwargs.get('mode') if not tid: raise HTTPError(404) p_users = Auth.find_project_users(pid=self.pid) self.p_users = [{ 'id': auth.user_id, 'name': auth.user_name } for auth in p_users] self.json_p_users = json.dumps(self.p_users) task = Task.get(id=tid) if not mode: # 任务详细信息 # get comment task_comments = Comment.find(task_id=task.id, order_by='created') # get change log task_logs = TaskLog.find(task_id=task.id, order_by='created desc') # focus focus = TaskFocus.check_focus(task_id=task.id, user_id=self.user.id) return self.render('task.html', task=task, auth=self.auth, logs=task_logs, comments=task_comments, focus=focus) if mode == 'solve': # 标记解决任务 if not task.is_done: task.status = Task._status_solved task.save() TaskLog.new( task_id=task.id, desc=json.dumps([]), note=u'标记为解决', updater_id=self.user.id, updater_name=self.user.name, ) return self.redirect('/%s/%s/%s' % (self.pid, 'task', task.id)) if mode == 'edit': # 编辑任务 # 用户列表去除已经分配的用户 users = [ u for u in self.p_users if u['id'] not in task.assigned_ids ] json_p_users = json.dumps(users) task_data = task.dictify() task_data['assigneds'] = json.dumps(task.assigned_users) return self.render('task-new.html', task=task_data, auth=self.auth, json_users=json_p_users, statuses=self.statuses, types=self.types, priorities=self.priorities, errors={}, update=True) if mode == 'focus': # 关注任务 TaskFocus.focus( task=task, user=self.user, pid=self.pid, pname=self.auth.project_name, ) return self.redirect('/%s/%s/%s' % (self.pid, 'task', task.id))