def delete(self, id): """Archive this board. :param id: The ID of the board to be archived. """ board = boards_api.get(id) user_id = request.current_user_id if not boards_api.editable(board, user_id): raise exc.NotFound(_("Board %s not found") % id) boards_api.update(id, {"archived": True}) for lane in board.lanes: worklists_api.update(lane.worklist.id, {"archived": True})
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 delete(self, id): """Archive this board. :param id: The ID of the board to be archived. """ board = boards_api.get(id) user_id = request.current_user_id if not boards_api.editable(board, user_id): raise exc.NotFound(_("Board %s not found") % 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(board) updated = boards_api.update(id, {"archived": True}) post_timeline_events(original, updated) for lane in board.lanes: original = copy.deepcopy(worklists_api.get(lane.worklist.id)) worklists_api.update(lane.worklist.id, {"archived": True}) if not original.archived: events_api.worklist_details_changed_event( lane.worklist.id, user_id, 'archived', original.archived, True)
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 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)