Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
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)
Пример #5
0
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)
Пример #6
0
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)
Пример #7
0
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)
Пример #8
0
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)
Пример #9
0
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)
Пример #10
0
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)
Пример #11
0
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)
Пример #12
0
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)
Пример #13
0
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)