[WEB-4999] feat: implement flexible data export utility with CSV, JSON, and XLSX support (#7884)
* feat: implement flexible data export utility with CSV, JSON, and XLSX support - Introduced Exporter class for handling various data formats. - Added formatters for CSV, JSON, and XLSX exports. - Created schemas for defining export fields and their transformations. - Implemented IssueExportSchema for exporting issue data with nested attributes. - Enhanced issue export task to utilize the new exporter system for better data handling. * feat: enhance issue export functionality with new relations and context handling - Updated issue export task to utilize new IssueRelation model for better relationship management. - Refactored Exporter class to accept QuerySets directly, improving performance and flexibility. - Enhanced IssueExportSchema to include parent issues and relations in the export. - Improved documentation for exporting multiple projects and filtering fields during export. * feat: enhance export functionality with field filtering and context support - Updated Exporter class to merge fields into options for formatting. - Modified formatters to filter fields based on specified options. - Enhanced ExportSchema to support optional field selection during serialization. - Improved documentation for the serialize method to clarify field filtering capabilities. * fixed type
This commit is contained in:
parent
9dc14d8d67
commit
4168127803
9 changed files with 1333 additions and 374 deletions
|
|
@ -273,6 +273,21 @@ class IssueRelationChoices(models.TextChoices):
|
|||
IMPLEMENTED_BY = "implemented_by", "Implemented By"
|
||||
|
||||
|
||||
# Bidirectional relation pairs: (forward, reverse)
|
||||
# Defined after class to avoid enum metaclass conflicts
|
||||
IssueRelationChoices._RELATION_PAIRS = (
|
||||
("blocked_by", "blocking"),
|
||||
("relates_to", "relates_to"), # symmetric
|
||||
("duplicate", "duplicate"), # symmetric
|
||||
("start_before", "start_after"),
|
||||
("finish_before", "finish_after"),
|
||||
("implemented_by", "implements"),
|
||||
)
|
||||
|
||||
# Generate reverse mapping from pairs
|
||||
IssueRelationChoices._REVERSE_MAPPING = {forward: reverse for forward, reverse in IssueRelationChoices._RELATION_PAIRS}
|
||||
|
||||
|
||||
class IssueRelation(ProjectBaseModel):
|
||||
issue = models.ForeignKey(Issue, related_name="issue_relation", on_delete=models.CASCADE)
|
||||
related_issue = models.ForeignKey(Issue, related_name="issue_related", on_delete=models.CASCADE)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue