Models API
This module contains the data models used throughout IssueDB.
Enumerations
Priority
- class issuedb.models.Priority[source]
Priority levels for issues.
- LOW = "low"
- MEDIUM = "medium"
- HIGH = "high"
- CRITICAL = "critical"
- classmethod from_string(value: str) Priority[source]
Create Priority from string value.
- Parameters:
value – Priority string (case-insensitive)
- Returns:
Priority enum value
- Raises:
ValueError – If value is not a valid priority
Example:
from issuedb.models import Priority p = Priority.from_string("high") assert p == Priority.HIGH p = Priority.from_string("HIGH") # Case insensitive assert p == Priority.HIGH
Status
- class issuedb.models.Status[source]
Status levels for issues.
- OPEN = "open"
- IN_PROGRESS = "in-progress"
- CLOSED = "closed"
- classmethod from_string(value: str) Status[source]
Create Status from string value.
- Parameters:
value – Status string (case-insensitive)
- Returns:
Status enum value
- Raises:
ValueError – If value is not a valid status
Data Classes
Issue
- class issuedb.models.Issue[source]
Represents an issue in the tracking system.
- created_at: datetime
Creation timestamp. Default: current time.
- updated_at: datetime
Last update timestamp. Default: current time.
- to_dict() dict[source]
Convert issue to dictionary for JSON serialization.
- Returns:
Dictionary with all issue fields
Example:
issue = Issue(id=1, title="Fix bug", priority=Priority.HIGH) d = issue.to_dict() # {'id': 1, 'title': 'Fix bug', 'priority': 'high', ...}
- classmethod from_dict(data: dict) Issue[source]
Create Issue from dictionary.
- Parameters:
data – Dictionary with issue fields
- Returns:
Issue instance
Example:
data = {'title': 'New issue', 'priority': 'high'} issue = Issue.from_dict(data) assert issue.title == 'New issue' assert issue.priority == Priority.HIGH
Comment
AuditLog
Usage Examples
Creating Issues Programmatically
from issuedb.models import Issue, Priority, Status
# Create a new issue
issue = Issue(
title="Implement feature X",
description="Detailed description here",
priority=Priority.HIGH,
status=Status.OPEN
)
# Convert to dict for JSON
issue_dict = issue.to_dict()
# Create from dict (e.g., from JSON input)
data = {
'title': 'Another issue',
'priority': 'critical',
'status': 'in-progress'
}
issue2 = Issue.from_dict(data)
Working with Priorities
from issuedb.models import Priority
# Parse from user input
user_input = "HIGH"
try:
priority = Priority.from_string(user_input)
except ValueError as e:
print(f"Invalid priority: {e}")
# Sort issues by priority
issues = [...] # List of Issue objects
sorted_issues = sorted(issues, key=lambda i: i.priority.to_int(), reverse=True)