def resolve_count_in_board(self, due_date, board): self.count = 0 for lane in board.lanes: for card in worklists_api.get_visible_items( lane.worklist, current_user=request.current_user_id): if card.display_due_date == due_date.id: self.count += 1
def get(self, worklist_id): """Get items inside a worklist. Example:: curl https://my.example.org/api/v1/worklists/49/items :param worklist_id: The ID of the worklist. """ worklist = worklists_api.get(worklist_id) user_id = request.current_user_id if not worklist or not worklists_api.visible(worklist, user_id): raise exc.NotFound(_("Worklist %s not found") % worklist_id) if worklist.automatic: return [ wmodels.WorklistItem(**item) for item in worklists_api.filter_items(worklist) ] if worklist.items is None: return [] worklist.items.order_by(models.WorklistItem.list_position) visible_items = worklists_api.get_visible_items( worklist, current_user=request.current_user_id) return [ wmodels.WorklistItem.from_db_model(item) for item in visible_items ]
def get(self, worklist_id): """Get items inside a worklist. :param worklist_id: The ID of the worklist. """ worklist = worklists_api.get(worklist_id) user_id = request.current_user_id if not worklist or not worklists_api.visible(worklist, user_id): raise exc.NotFound(_("Worklist %s not found") % worklist_id) if worklist.automatic: return [wmodels.WorklistItem(**item) for item in worklists_api.filter_items(worklist)] if worklist.items is None: return [] worklist.items.sort(key=lambda i: i.list_position) visible_items = worklists_api.get_visible_items( worklist, current_user=request.current_user_id) return [ wmodels.WorklistItem.from_db_model(item) for item in visible_items ]
def get(self, worklist_id): """Get items inside a worklist. Example:: curl https://my.example.org/api/v1/worklists/49/items :param worklist_id: The ID of the worklist. """ worklist = worklists_api.get(worklist_id) user_id = request.current_user_id if not worklist or not worklists_api.visible(worklist, user_id): raise exc.NotFound(_("Worklist %s not found") % worklist_id) if worklist.automatic: return [wmodels.WorklistItem(**item) for item in worklists_api.filter_items(worklist)] if worklist.items is None: return [] worklist.items.order_by(models.WorklistItem.list_position) visible_items = worklists_api.get_visible_items( worklist, current_user=request.current_user_id) return [ wmodels.WorklistItem.from_db_model(item) for item in visible_items ]
def resolve_list(self, lane, resolve_items=True): """Resolve the worklist which represents the lane.""" self.worklist = Worklist.from_db_model(lane.worklist) self.worklist.resolve_permissions(lane.worklist) self.worklist.resolve_filters(lane.worklist) if resolve_items: self.worklist.resolve_items(lane.worklist) else: items = worklists_api.get_visible_items( lane.worklist, current_user=request.current_user_id) self.worklist.items = [WorklistItem.from_db_model(item) for item in items]
def resolve_list(self, lane, resolve_items=True): """Resolve the worklist which represents the lane.""" self.worklist = Worklist.from_db_model(lane.worklist) self.worklist.resolve_permissions(lane.worklist) self.worklist.resolve_filters(lane.worklist) if resolve_items: self.worklist.resolve_items(lane.worklist) else: items = worklists_api.get_visible_items( lane.worklist, current_user=request.current_user_id) self.worklist.items = [ WorklistItem.from_db_model(item) for item in items ]
def get(self, worklist_id): """Get items inside a worklist. :param worklist_id: The ID of the worklist. """ worklist = worklists_api.get(worklist_id) user_id = request.current_user_id if not worklist or not worklists_api.visible(worklist, user_id): raise exc.NotFound(_("Worklist %s not found") % worklist_id) if worklist.automatic: return [wmodels.WorklistItem(**item) for item in worklists_api.filter_items(worklist)] if worklist.items is None: return [] worklist.items.sort(key=lambda i: i.list_position) visible_items = worklists_api.get_visible_items(worklist, current_user=request.current_user_id) return [wmodels.WorklistItem.from_db_model(item) for item in visible_items]
def get_all(self, title=None, creator_id=None, project_id=None, archived=False, user_id=None, story_id=None, task_id=None, hide_lanes=True, sort_field='id', sort_dir='asc', item_type=None, board_id=None, subscriber_id=None, offset=None, limit=None): """Retrieve definitions of all of the worklists. Example:: curl https://my.example.org/api/v1/worklists :param title: A string to filter the title by. :param creator_id: Filter worklists by their creator. :param project_id: Filter worklists by project ID. :param archived: Filter worklists by whether they are archived or not. :param user_id: Filter worklists by the users with permissions. :param story_id: Filter worklists by whether they contain a story. :param task_id: Filter worklists by whether they contain a task. :param hide_lanes: If true, don't return worklists which are lanes in a board. :param sort_field: The name of the field to sort on. :param sort_dir: Sort direction for results (asc, desc). :param item_type: Used when filtering by story_id. If item_type is 'story' then only return worklists that contain the story, if item_type is 'task' then only return worklists that contain tasks from the story, otherwise return worklists that contain the story or tasks from the story. :param board_id: Get all worklists in the board with this id. Other filters are not applied. :param subscriber_id: Filter worklists by whether a user is subscribed. :param offset: Offset at which to begin the results. :param limit: Maximum number of results to return. """ current_user = request.current_user_id # If a non existent story/task is requested, there is no point trying # to find worklists which contain it if story_id: story = stories_api.story_get(story_id, current_user=current_user) if story is None: response.headers['X-Total'] = '0' return [] if task_id: task = tasks_api.task_get(task_id, current_user=current_user) if task is None: response.headers['X-Total'] = '0' return [] worklists = worklists_api.get_all(title=title, creator_id=creator_id, project_id=project_id, archived=archived, board_id=board_id, user_id=user_id, story_id=story_id, task_id=task_id, subscriber_id=subscriber_id, sort_field=sort_field, sort_dir=sort_dir, offset=offset, limit=limit, current_user=current_user, hide_lanes=hide_lanes, item_type=item_type) count = worklists_api.get_count(title=title, creator_id=creator_id, project_id=project_id, archived=archived, board_id=board_id, user_id=user_id, story_id=story_id, task_id=task_id, subscriber_id=subscriber_id, current_user=current_user, hide_lanes=hide_lanes, item_type=item_type) visible_worklists = [] for worklist in worklists: worklist_model = wmodels.Worklist.from_db_model(worklist) worklist_model.resolve_permissions(worklist) visible_items = worklists_api.get_visible_items( worklist, request.current_user_id) worklist_model.items = [ wmodels.WorklistItem.from_db_model(item) for item in visible_items ] visible_worklists.append(worklist_model) # Apply the query response headers response.headers['X-Total'] = str(count) if limit is not None: response.headers['X-Limit'] = str(limit) if offset is not None: response.headers['X-Offset'] = str(offset) return visible_worklists