def topic_list(project_id, page): project = Project.query.get(project_id) if not current_user.in_team(project.team_id): abort(404) pagination = Topic.query.filter_by(project_id=project.id, is_comment=0).order_by("topic.updated_at desc").paginate( page, 20) return render_template('project/topic_list.html', project=project, pagination=pagination)
def project_files(project_id, page): project = Project.query.get(project_id) if not current_user.in_team(project.team_id): abort(404) items_per_page = 40 files = Attachment.query.filter_by(project_id=project_id).order_by('created_at desc') \ .paginate(page, items_per_page) return render_template('project/files.html', project=project, files=files)
def todolist_create(project_id): project = Project.query.get(project_id) if not current_user.in_team(project.team_id): abort(404) form = TodolistForm(current_user, project_id) if form.validate_on_submit(): flash(u'%s 创建成功' % form.todolist.name) return redirect(url_for("todolist_show", list_id=form.todolist.id)) return render_template('project/todolist_create.html', form=form, project=project)
def project_todos(project_id): project = Project.query.get(project_id) if not current_user.in_team(project.team_id): abort(404) team_users = project.team.users todolists = Todolist.query.filter_by(project_id=project_id, has_finished=0).order_by('created_at asc').all() title = u'所有任务' done_lists = Todolist.query.filter_by(project_id=project_id, has_finished=1).order_by('created_at desc').all() return render_template('project/todos.html', project=project, todolists=todolists, todolists_json=str(todolists), team_users=team_users, title=title, done_lists=done_lists)
def project_todo_status(project_id, status, page): project = Project.query.get(project_id) if not current_user.in_team(project.team_id): abort(404) items_per_page = 40 todos = None if status.lower() == 'completed': todos = Todo.query.filter_by(project_id=project_id, done=1).order_by('finished_at desc') \ .paginate(page, items_per_page) return render_template('project/completed_todos.html', todos=todos, project=project, status=status)
def project_index(project_id): topics = Topic.query.filter_by(project_id=project_id, is_comment=0).order_by('updated_at desc')[0:3] project = Project.query.get(project_id) if not current_user.in_team(project.team_id): abort(404) team_users = project.team.users undone_lists = Todolist.query.filter_by(project_id=project_id, has_finished=0).order_by('created_at asc').all() done_lists = Todolist.query.filter_by(project_id=project_id, has_finished=1).order_by('created_at desc').all() return render_template('project/index.html', topics=topics, project=project, todolists=undone_lists, done_lists=done_lists, todolists_json=str(undone_lists), team_users=team_users)
def todolist_show(list_id): todolist = Todolist.query.get(list_id) if not current_user.in_team(todolist.project.team_id): abort(404) project = todolist.project team_users = project.team.users todolists = [todolist] title = todolist.name return render_template('project/todos.html', project=project, todolists=todolists, todolists_json=str(todolists), team_users=team_users, title=title, is_done=True, todolist=todolist)
def team_setting(team_id): team = Team.query.get(team_id) if not current_user.in_team(team_id): abort(404) form = TeamForm(user=current_user, team_id=team.id, name=team.name) if form.validate_on_submit(): if form.team.status == 0: return redirect(url_for('team_show', team_id=form.team.id)) else: flash(u'团队已删除') return redirect(url_for('team_index')) return render_template('team/form.html', form=form, team=team)
def topic_create(project_id): project = Project.query.get(project_id) if not current_user.in_team(project.team_id): abort(404) form = TopicForm(current_user, project, request.form.getlist('attachment')) if form.validate_on_submit(): topic = form.saveTopic() if topic is not None: flash(u'保存成功') return redirect(url_for('topic_detail', topic_id=topic.id)) else: flash(u'保存失败,请联系管理员', 'error') return render_template('project/topic_create.html', project=project, form=form)
def project_feed(project_id, page): project = Project.query.get(project_id) if not current_user.in_team(project.team_id): abort(404) items_per_page = 40 query = request.args.get('query') if query == 'done': feeds = Feed.query.filter_by(project_id=project_id, operation='done').order_by('created_at desc') \ .paginate(page, items_per_page) else: feeds = Feed.query.filter_by(project_id=project_id).order_by('created_at desc') \ .paginate(page, items_per_page) return render_template('project/progress.html', project=project, feeds=feeds, query=query)
def invite_member(team_id): if not current_user.in_team(team_id): abort(404) team = Team.query.get(team_id) if request.method == 'POST': invite_code = InviteCode() invite_code.created_at = int(time.time()) invite_code.team_id = team_id invite_code.code = hashlib.md5(str(uuid.uuid1())).hexdigest() invite_code.used = 0 db.session.add(invite_code) db.session.commit() return redirect(url_for('invite_member', team_id=team_id)) team_codes = InviteCode.query.filter_by(team_id=team_id, used=0) return render_template('team/invite.html', team=team, team_codes=team_codes)
def todo_show(todo_id, page): todo = Todo.query.get(todo_id) if not current_user.in_team(todo.project.team_id): abort(404) form = TodoCommentForm(current_user, todo, request.form.getlist('attachment')) items_per_page = 10 if form.validate_on_submit(): comment = form.saveTopic() if comment is not None: flash(u'保存成功') pagination = Topic.query.filter_by(class_type='todo', is_comment=1, class_id=todo.id).order_by( "topic.created_at asc").paginate(page, items_per_page) return redirect( url_for('todo_show', todo_id=todo_id, page=pagination.pages, _anchor='comment%i' % comment.id)) else: flash(u'保存失败,请联系管理员', 'error') team_users = todo.project.team.users pagination = Topic.query.filter_by(class_type='todo', is_comment=1, class_id=todo.id).order_by( "topic.created_at asc").paginate(page, items_per_page) return render_template('project/todo.html', todo=todo, form=form, pagination=pagination, team_users=team_users)
def team_show(team_id): if not current_user.in_team(team_id): abort(404) team = Team.query.get(team_id) return render_template('team/show.html', team=team)