Пример #1
0
    def post(self, board):
        """Create a new board.

        :param board: A board within the request body.

        """
        board_dict = board.as_dict()
        user_id = request.current_user_id

        if board.creator_id and board.creator_id != user_id:
            abort(400, _("You can't select the creator of a board."))
        board_dict.update({"creator_id": user_id})
        lanes = board_dict.pop('lanes') or []
        owners = board_dict.pop('owners')
        users = board_dict.pop('users')
        if not owners:
            owners = [user_id]
        if not users:
            users = []

        # We can't set due dates when creating boards at the moment.
        if 'due_dates' in board_dict:
            del board_dict['due_dates']

        created_board = boards_api.create(board_dict)
        events_api.board_created_event(created_board.id, user_id,
                                       created_board.title,
                                       created_board.description)
        for lane in lanes:
            del lane.worklist
            boards_api.add_lane(created_board, lane.as_dict(omit_unset=True))
            events_api.board_lanes_changed_event(created_board.id,
                                                 user_id,
                                                 added=serialize_lane(lane))

        edit_permission = {
            'name': 'edit_board_%d' % created_board.id,
            'codename': 'edit_board',
            'users': owners
        }
        move_permission = {
            'name': 'move_cards_%d' % created_board.id,
            'codename': 'move_cards',
            'users': users
        }
        edit = boards_api.create_permission(created_board.id, edit_permission)
        move = boards_api.create_permission(created_board.id, move_permission)
        event_owners = [{
            id: users_api.user_get(id).full_name
        } for id in owners]
        event_users = [{id: users_api.user_get(id).full_name} for id in users]
        events_api.board_permission_created_event(created_board.id, user_id,
                                                  edit.id, edit.codename,
                                                  event_owners)
        events_api.board_permission_created_event(created_board.id, user_id,
                                                  move.id, move.codename,
                                                  event_users)

        return wmodels.Board.from_db_model(created_board)
def upgrade(active_plugins=None, options=None):
    op.create_table('board_permissions',
        sa.Column('board_id', sa.Integer(), nullable=True),
        sa.Column('permission_id', sa.Integer(), nullable=True),
        sa.ForeignKeyConstraint(['board_id'], ['boards.id'], ),
        sa.ForeignKeyConstraint(['permission_id'], ['permissions.id'], )
    )
    op.create_table('worklist_permissions',
        sa.Column('worklist_id', sa.Integer(), nullable=True),
        sa.Column('permission_id', sa.Integer(), nullable=True),
        sa.ForeignKeyConstraint(['permission_id'], ['permissions.id'], ),
        sa.ForeignKeyConstraint(['worklist_id'], ['worklists.id'], )
    )

    session = api_base.get_session(in_request=False)
    for board in boards.get_all(session=session):
        edit_permission = {
            'name': 'edit_board_%d' % board.id,
            'codename': 'edit_board',
            'users': [board.creator_id]
        }
        move_permission = {
            'name': 'move_cards_%d' % board.id,
            'codename': 'move_cards',
            'users': []
        }
        print('Creating permissions for Board with id: %d' % board.id)
        boards.create_permission(board.id, edit_permission, session=session)
        boards.create_permission(board.id, move_permission, session=session)

    for worklist in worklists.get_all(session=session):
        edit_permission = {
            'name': 'edit_worklist_%d' % worklist.id,
            'codename': 'edit_worklist',
            'users': [worklist.creator_id]
        }
        move_permission = {
            'name': 'move_items_%d' % worklist.id,
            'codename': 'move_items',
            'users': []
        }
        print('Creating permissions for Worklist with id: %d' % worklist.id)
        worklists.create_permission(
            worklist.id, edit_permission, session=session)
        worklists.create_permission(
            worklist.id, move_permission, session=session)
        session.flush()

    dialect = op.get_bind().engine.dialect
    if dialect.supports_alter:
        op.drop_constraint(u'boards_ibfk_2', 'boards', type_='foreignkey')
        op.drop_column(u'boards', 'permission_id')
        op.drop_constraint(u'worklists_ibfk_2', 'worklists',
                           type_='foreignkey')
        op.drop_column(u'worklists', 'permission_id')
def upgrade(active_plugins=None, options=None):
    op.create_table('board_permissions',
        sa.Column('board_id', sa.Integer(), nullable=True),
        sa.Column('permission_id', sa.Integer(), nullable=True),
        sa.ForeignKeyConstraint(['board_id'], ['boards.id'], ),
        sa.ForeignKeyConstraint(['permission_id'], ['permissions.id'], )
    )
    op.create_table('worklist_permissions',
        sa.Column('worklist_id', sa.Integer(), nullable=True),
        sa.Column('permission_id', sa.Integer(), nullable=True),
        sa.ForeignKeyConstraint(['permission_id'], ['permissions.id'], ),
        sa.ForeignKeyConstraint(['worklist_id'], ['worklists.id'], )
    )

    session = api_base.get_session(in_request=False)
    for board in boards.get_all(session=session):
        edit_permission = {
            'name': 'edit_board_%d' % board.id,
            'codename': 'edit_board',
            'users': [board.creator_id]
        }
        move_permission = {
            'name': 'move_cards_%d' % board.id,
            'codename': 'move_cards',
            'users': []
        }
        print('Creating permissions for Board with id: %d' % board.id)
        boards.create_permission(board.id, edit_permission, session=session)
        boards.create_permission(board.id, move_permission, session=session)

    for worklist in worklists.get_all(session=session):
        edit_permission = {
            'name': 'edit_worklist_%d' % worklist.id,
            'codename': 'edit_worklist',
            'users': [worklist.creator_id]
        }
        move_permission = {
            'name': 'move_items_%d' % worklist.id,
            'codename': 'move_items',
            'users': []
        }
        print('Creating permissions for Worklist with id: %d' % worklist.id)
        worklists.create_permission(
            worklist.id, edit_permission, session=session)
        worklists.create_permission(
            worklist.id, move_permission, session=session)
        session.flush()

    op.drop_constraint(u'boards_ibfk_2', 'boards', type_='foreignkey')
    op.drop_column(u'boards', 'permission_id')
    op.drop_constraint(u'worklists_ibfk_2', 'worklists', type_='foreignkey')
    op.drop_column(u'worklists', 'permission_id')
Пример #4
0
    def post(self, board):
        """Create a new board.

        :param board: A board within the request body.

        """
        board_dict = board.as_dict()
        user_id = request.current_user_id

        if board.creator_id and board.creator_id != user_id:
            abort(400, _("You can't select the creator of a board."))
        board_dict.update({"creator_id": user_id})
        lanes = board_dict.pop('lanes')
        owners = board_dict.pop('owners')
        users = board_dict.pop('users')
        if not owners:
            owners = [user_id]
        if not users:
            users = []

        # We can't set due dates when creating boards at the moment.
        if 'due_dates' in board_dict:
            del board_dict['due_dates']

        created_board = boards_api.create(board_dict)
        for lane in lanes:
            boards_api.add_lane(created_board, lane.as_dict())

        edit_permission = {
            'name': 'edit_board_%d' % created_board.id,
            'codename': 'edit_board',
            'users': owners
        }
        move_permission = {
            'name': 'move_cards_%d' % created_board.id,
            'codename': 'move_cards',
            'users': users
        }
        boards_api.create_permission(created_board.id, edit_permission)
        boards_api.create_permission(created_board.id, move_permission)

        return wmodels.Board.from_db_model(created_board)
Пример #5
0
    def post(self, board):
        """Create a new board.

        :param board: A board within the request body.

        """
        board_dict = board.as_dict()
        user_id = request.current_user_id

        if board.creator_id and board.creator_id != user_id:
            abort(400, _("You can't select the creator of a board."))
        board_dict.update({"creator_id": user_id})
        lanes = board_dict.pop('lanes')
        owners = board_dict.pop('owners')
        users = board_dict.pop('users')
        if not owners:
            owners = [user_id]
        if not users:
            users = []

        # We can't set due dates when creating boards at the moment.
        if 'due_dates' in board_dict:
            del board_dict['due_dates']

        created_board = boards_api.create(board_dict)
        for lane in lanes:
            boards_api.add_lane(created_board, lane.as_dict())

        edit_permission = {
            'name': 'edit_board_%d' % created_board.id,
            'codename': 'edit_board',
            'users': owners
        }
        move_permission = {
            'name': 'move_cards_%d' % created_board.id,
            'codename': 'move_cards',
            'users': users
        }
        boards_api.create_permission(created_board.id, edit_permission)
        boards_api.create_permission(created_board.id, move_permission)

        return wmodels.Board.from_db_model(created_board)
Пример #6
0
    def post(self, board_id, permission):
        """Add a new permission to the board.

        :param board_id: The ID of the board.
        :param permission: The dict to use to create the permission.

        """
        if boards_api.editable(boards_api.get(board_id),
                               request.current_user_id):
            return boards_api.create_permission(board_id)
        else:
            raise exc.NotFound(_("Board %s not found") % board_id)
Пример #7
0
    def post(self, board_id, permission):
        """Add a new permission to the board.

        :param board_id: The ID of the board.
        :param permission: The dict to use to create the permission.

        """
        if boards_api.editable(boards_api.get(board_id),
                               request.current_user_id):
            return boards_api.create_permission(board_id)
        else:
            raise exc.NotFound(_("Board %s not found") % board_id)
Пример #8
0
    def post(self, board_id, permission):
        """Add a new permission to the board.

        :param board_id: The ID of the board.
        :param permission: The dict to use to create the permission.

        """
        user_id = request.current_user_id
        if boards_api.editable(boards_api.get(board_id), user_id):
            created = boards_api.create_permission(board_id, permission)

            users = [{user.id: user.full_name} for user in created.users]
            events_api.board_permission_created_event(board_id, user_id,
                                                      created.id,
                                                      created.codename, users)

            return created
        else:
            raise exc.NotFound(_("Board %s not found") % board_id)
Пример #9
0
    def post(self, board_id, permission):
        """Add a new permission to the board.

        :param board_id: The ID of the board.
        :param permission: The dict to use to create the permission.

        """
        user_id = request.current_user_id
        if boards_api.editable(boards_api.get(board_id), user_id):
            created = boards_api.create_permission(board_id, permission)

            users = [{user.id: user.full_name} for user in created.users]
            events_api.board_permission_created_event(board_id,
                                                      user_id,
                                                      created.id,
                                                      created.codename,
                                                      users)

            return created
        else:
            raise exc.NotFound(_("Board %s not found") % board_id)
Пример #10
0
    def post(self, board):
        """Create a new board.

        :param board: A board within the request body.

        """
        board_dict = board.as_dict()
        user_id = request.current_user_id

        if board.creator_id and board.creator_id != user_id:
            abort(400, _("You can't select the creator of a board."))
        board_dict.update({"creator_id": user_id})
        lanes = board_dict.pop('lanes') or []
        owners = board_dict.pop('owners')
        users = board_dict.pop('users')
        if not owners:
            owners = [user_id]
        if not users:
            users = []

        # We can't set due dates when creating boards at the moment.
        if 'due_dates' in board_dict:
            del board_dict['due_dates']

        created_board = boards_api.create(board_dict)
        events_api.board_created_event(created_board.id,
                                       user_id,
                                       created_board.title,
                                       created_board.description)
        for lane in lanes:
            del lane.worklist
            boards_api.add_lane(created_board, lane.as_dict(omit_unset=True))
            events_api.board_lanes_changed_event(created_board.id,
                                                 user_id,
                                                 added=serialize_lane(lane))

        edit_permission = {
            'name': 'edit_board_%d' % created_board.id,
            'codename': 'edit_board',
            'users': owners
        }
        move_permission = {
            'name': 'move_cards_%d' % created_board.id,
            'codename': 'move_cards',
            'users': users
        }
        edit = boards_api.create_permission(created_board.id, edit_permission)
        move = boards_api.create_permission(created_board.id, move_permission)
        event_owners = [{id: users_api.user_get(id).full_name}
                        for id in owners]
        event_users = [{id: users_api.user_get(id).full_name}
                       for id in users]
        events_api.board_permission_created_event(created_board.id,
                                                  user_id,
                                                  edit.id,
                                                  edit.codename,
                                                  event_owners)
        events_api.board_permission_created_event(created_board.id,
                                                  user_id,
                                                  move.id,
                                                  move.codename,
                                                  event_users)

        return wmodels.Board.from_db_model(created_board)