CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-jira

Python library for interacting with JIRA via REST APIs.

Pending
Overview
Eval results
Files

filters-dashboards.mddocs/

Filters & Dashboards

Manage saved JQL filters and dashboard operations for organizing and sharing JIRA queries and visualizations.

Capabilities

Filter Management

Create, retrieve, and manage JQL filters for saved searches.

def filter(self, id: str) -> Filter:
    """
    Get a filter by ID.
    
    Parameters:
    - id: Filter ID
    
    Returns:
    Filter object
    """

def favourite_filters(self) -> list[Filter]:
    """
    Get list of current user's favorite filters.
    
    Returns:
    List of Filter objects marked as favorites
    """

def create_filter(
    self,
    name: str = None,
    description: str = None,
    jql: str = None,
    favourite: bool = None
) -> Filter:
    """
    Create a new filter.
    
    Parameters:
    - name: Filter name
    - description: Filter description
    - jql: JQL query string
    - favourite: Whether to mark as favorite
    
    Returns:
    Created Filter object
    """

def update_filter(
    self,
    filter_id: str,
    name: str = None,
    description: str = None,
    jql: str = None,
    favourite: bool = None
) -> Filter:
    """
    Update an existing filter.
    
    Parameters:
    - filter_id: ID of filter to update
    - name: New filter name
    - description: New filter description
    - jql: New JQL query string
    - favourite: Whether to mark as favorite
    
    Returns:
    Updated Filter object
    """

Usage examples:

# Get a specific filter
filter_obj = jira.filter('12345')
print(f"Filter: {filter_obj.name}")
print(f"JQL: {filter_obj.jql}")
print(f"Owner: {filter_obj.owner.displayName}")

# Get user's favorite filters
favorites = jira.favourite_filters()
for filter_obj in favorites:
    print(f"Favorite: {filter_obj.name} - {filter_obj.jql}")

# Create a new filter
new_filter = jira.create_filter(
    name="My High Priority Issues",
    description="All high priority issues assigned to me",
    jql="assignee = currentUser() AND priority = High",
    favourite=True
)
print(f"Created filter: {new_filter.id}")

# Update an existing filter
updated_filter = jira.update_filter(
    filter_id=new_filter.id,
    name="My Critical Issues",
    jql="assignee = currentUser() AND priority in (High, Highest)"
)

Dashboard Management

Retrieve and manage JIRA dashboards for visualizing project data.

def dashboards(
    self,
    filter: str = None,
    startAt: int = 0,
    maxResults: int = 20
) -> list[Dashboard]:
    """
    Get dashboards visible to current user.
    
    Parameters:
    - filter: Dashboard name filter
    - startAt: Starting index for pagination
    - maxResults: Maximum number of results
    
    Returns:
    List of Dashboard objects
    """

def dashboard(self, id: str) -> Dashboard:
    """
    Get a specific dashboard by ID.
    
    Parameters:
    - id: Dashboard ID
    
    Returns:
    Dashboard object
    """

Usage examples:

# Get all dashboards
dashboards = jira.dashboards()
for dashboard in dashboards:
    print(f"Dashboard: {dashboard.name}")
    print(f"URL: {dashboard.view_url}")

# Search for specific dashboards
project_dashboards = jira.dashboards(filter="Project")
for dashboard in project_dashboards:
    print(f"Project dashboard: {dashboard.name}")

# Get specific dashboard details
dashboard = jira.dashboard('12345')
print(f"Dashboard: {dashboard.name}")
print(f"Owner: {dashboard.owner.displayName}")
print(f"Favorite: {dashboard.favourite}")

Filter Properties

Common properties available on Filter objects:

filter_obj = jira.filter('12345')

# Basic properties
print(f"ID: {filter_obj.id}")
print(f"Name: {filter_obj.name}")
print(f"Description: {filter_obj.description}")
print(f"JQL: {filter_obj.jql}")
print(f"Favorite: {filter_obj.favourite}")

# Owner information
print(f"Owner: {filter_obj.owner.displayName}")
print(f"Owner Key: {filter_obj.owner.key}")

# URLs
print(f"View URL: {filter_obj.viewUrl}")
print(f"Search URL: {filter_obj.searchUrl}")

# Sharing and permissions
print(f"Share Permissions: {filter_obj.sharePermissions}")
print(f"Editable: {filter_obj.editable}")

# Subscription information (if available)
if hasattr(filter_obj, 'subscriptions'):
    print(f"Subscriptions: {len(filter_obj.subscriptions)}")

Dashboard Properties

Common properties available on Dashboard objects:

dashboard = jira.dashboard('12345')

# Basic properties
print(f"ID: {dashboard.id}")
print(f"Name: {dashboard.name}")
print(f"Favorite: {dashboard.favourite}")

# Owner information
print(f"Owner: {dashboard.owner.displayName}")

# URLs
print(f"View URL: {dashboard.view_url}")

# Share permissions
print(f"Share Permissions: {dashboard.sharePermissions}")
print(f"Editable: {dashboard.editable}")

Advanced Filter Usage

Common patterns for working with filters:

# Create filter for team's work
team_filter = jira.create_filter(
    name="Team Sprint Work",
    description="Current sprint issues for development team",
    jql='''
    project = PROJ AND
    sprint in openSprints() AND
    assignee in (john.doe, jane.smith, bob.jones) AND
    status != Done
    ORDER BY priority DESC, created ASC
    ''',
    favourite=True
)

# Use filter to get issues
issues = jira.search_issues(team_filter.jql)
print(f"Found {len(issues)} issues in current sprint")

# Update filter to add more conditions
jira.update_filter(
    filter_id=team_filter.id,
    jql=team_filter.jql + " AND labels not in (blocked, on-hold)"
)

# Share filter with team (requires additional permissions)
# This would typically be done through the JIRA UI or additional API calls

Dashboard Integration

Using dashboards with filters:

# Get user's dashboards
my_dashboards = jira.dashboards()
for dashboard in my_dashboards:
    print(f"Dashboard: {dashboard.name}")
    
    # Note: Gadget configuration and data would require
    # additional API calls to the gadget endpoints
    if dashboard.favourite:
        print(f"  ⭐ Favorite dashboard")

# Find dashboards containing specific filters
filter_name = "My Team Issues"
for dashboard in my_dashboards:
    # In practice, you'd need to examine dashboard gadgets
    # to find which filters they use
    print(f"Checking dashboard: {dashboard.name}")

Best Practices

When working with filters and dashboards:

# Always check if filter exists before creating
def get_or_create_filter(jira_client, name, jql):
    """Get existing filter or create new one."""
    favorites = jira_client.favourite_filters()
    for filter_obj in favorites:
        if filter_obj.name == name:
            return filter_obj
    
    # Create new filter if not found
    return jira_client.create_filter(
        name=name,
        jql=jql,
        favourite=True
    )

# Use descriptive names and JQL
team_filter = get_or_create_filter(
    jira,
    "Backend Team - Current Sprint",
    '''
    project = BACKEND AND
    sprint in openSprints() AND
    component in ("API", "Database", "Services")
    ORDER BY priority DESC
    '''
)

# Validate JQL before creating filters
try:
    test_results = jira.search_issues(jql_query, maxResults=1)
    filter_obj = jira.create_filter(name="Test Filter", jql=jql_query)
except Exception as e:
    print(f"Invalid JQL: {e}")

Install with Tessl CLI

npx tessl i tessl/pypi-jira

docs

administration.md

agile-boards.md

client-setup.md

comments-attachments.md

filters-dashboards.md

index.md

issue-management.md

project-management.md

remote-links.md

service-desk.md

system-operations.md

user-management.md

worklogs.md

tile.json