def put(self, id, board): """Modify this board. :param id: The ID of the board. :param board: The new board within the request body. """ user_id = request.current_user_id if not boards_api.editable(boards_api.get(id), user_id): raise exc.NotFound(_("Board %s not found") % id) board_dict = board.as_dict(omit_unset=True) update_lanes(board_dict, id) # This is not how we add due dates. if 'due_dates' in board_dict: del board_dict['due_dates'] updated_board = boards_api.update(id, board_dict) if boards_api.visible(updated_board, user_id): board_model = wmodels.Board.from_db_model(updated_board) board_model.resolve_lanes(updated_board) board_model.resolve_permissions(updated_board) return board_model else: raise exc.NotFound(_("Board %s not found") % id)
def get_one(self, id): """Retrieve details about one board. :param id: The ID of the board. """ board = boards_api.get(id) user_id = request.current_user_id story_cache = { story.id: story for story in stories_api.story_get_all(board_id=id, current_user=user_id) } task_cache = { task.id: task for task in tasks_api.task_get_all(board_id=id, current_user=user_id) } if boards_api.visible(board, user_id): board_model = wmodels.Board.from_db_model(board) board_model.resolve_lanes(board, story_cache, task_cache) board_model.resolve_due_dates(board) board_model.resolve_permissions(board) return board_model else: raise exc.NotFound(_("Board %s not found") % id)
def get(self, board_id): """Get board permissions for the current user. :param board_id: The ID of the board. """ board = boards_api.get(board_id) if boards_api.visible(board, request.current_user_id): return boards_api.get_permissions(board, request.current_user_id) else: raise exc.NotFound(_("Board %s not found") % board_id)
def get_one(self, id): """Retrieve details about one board. :param id: The ID of the board. """ board = boards_api.get(id) user_id = request.current_user_id if boards_api.visible(board, user_id): board_model = wmodels.Board.from_db_model(board) board_model.resolve_lanes(board) board_model.resolve_due_dates(board) board_model.resolve_permissions(board) return board_model else: raise exc.NotFound(_("Board %s not found") % id)
def put(self, id, board): """Modify this board. :param id: The ID of the board. :param board: The new board within the request body. """ user_id = request.current_user_id original = boards_api.get(id) if not boards_api.editable(original, user_id): raise exc.NotFound(_("Board %s not found") % id) story_cache = { story.id: story for story in stories_api.story_get_all(board_id=id, current_user=user_id) } task_cache = { task.id: task for task in tasks_api.task_get_all(board_id=id, current_user=user_id) } # We use copy here because we only need to check changes # to the related objects, just the board's own attributes. # Also, deepcopy trips up on the lanes' backrefs. original = copy.copy(original) board_dict = board.as_dict(omit_unset=True) update_lanes(board_dict, id) # This is not how we add due dates. if 'due_dates' in board_dict: del board_dict['due_dates'] updated_board = boards_api.update(id, board_dict) post_timeline_events(original, updated_board) if boards_api.visible(updated_board, user_id): board_model = wmodels.Board.from_db_model(updated_board) board_model.resolve_lanes(updated_board, story_cache, task_cache) board_model.resolve_permissions(updated_board) return board_model else: raise exc.NotFound(_("Board %s not found") % id)
def get_one(self, id): """Retrieve details about one board. :param id: The ID of the board. """ board = boards_api.get(id) user_id = request.current_user_id story_cache = {story.id: story for story in stories_api.story_get_all( board_id=id, current_user=user_id)} task_cache = {task.id: task for task in tasks_api.task_get_all( board_id=id, current_user=user_id)} if boards_api.visible(board, user_id): board_model = wmodels.Board.from_db_model(board) board_model.resolve_lanes(board, story_cache, task_cache) board_model.resolve_due_dates(board) board_model.resolve_permissions(board) return board_model else: raise exc.NotFound(_("Board %s not found") % id)
def put(self, id, board): """Modify this board. :param id: The ID of the board. :param board: The new board within the request body. """ user_id = request.current_user_id original = boards_api.get(id) if not boards_api.editable(original, user_id): raise exc.NotFound(_("Board %s not found") % id) story_cache = {story.id: story for story in stories_api.story_get_all( board_id=id, current_user=user_id)} task_cache = {task.id: task for task in tasks_api.task_get_all( board_id=id, current_user=user_id)} # We use copy here because we only need to check changes # to the related objects, just the board's own attributes. # Also, deepcopy trips up on the lanes' backrefs. original = copy.copy(original) board_dict = board.as_dict(omit_unset=True) update_lanes(board_dict, id) # This is not how we add due dates. if 'due_dates' in board_dict: del board_dict['due_dates'] updated_board = boards_api.update(id, board_dict) post_timeline_events(original, updated_board) if boards_api.visible(updated_board, user_id): board_model = wmodels.Board.from_db_model(updated_board) board_model.resolve_lanes(updated_board, story_cache, task_cache) board_model.resolve_permissions(updated_board) return board_model else: raise exc.NotFound(_("Board %s not found") % id)
def get_all(self, title=None, creator_id=None, project_id=None, archived=False, user_id=None, story_id=None, task_id=None, sort_field='id', sort_dir='asc'): """Retrieve definitions of all of the boards. :param title: A string to filter the title by. :param creator_id: Filter boards by their creator. :param project_id: Filter boards by project ID. :param archived: Filter boards by whether they are archived or not. :param story_id: Filter boards by whether they contain a story. :param task_id: Filter boards by whether they contain a task. :param sort_field: The name of the field to sort on. :param sort_dir: Sort direction for results (asc, desc). """ boards = boards_api.get_all(title=title, creator_id=creator_id, user_id=user_id, project_id=project_id, story_id=story_id, task_id=task_id, sort_field=sort_field, sort_dir=sort_dir) visible_boards = [] user_id = request.current_user_id for board in boards: if boards_api.visible(board, user_id) and\ board.archived == archived: board_model = wmodels.Board.from_db_model(board) board_model.resolve_lanes(board, resolve_items=False) board_model.resolve_permissions(board) visible_boards.append(board_model) # Apply the query response headers response.headers['X-Total'] = str(len(visible_boards)) return visible_boards