schema.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from typing import Optional
  2. from ninja import Field, ModelSchema
  3. from glitchtip.api.schema import CamelSchema
  4. from .models import IssueEvent
  5. class IssueEventSchema(CamelSchema, ModelSchema):
  6. id: str = Field(validation_alias="id.hex")
  7. event_id: str
  8. project_id: int = Field(validation_alias="issue.project_id")
  9. group_id: int = Field(validation_alias="issue_id")
  10. dist: Optional[str] = None
  11. message: Optional[str] = Field(validation_alias="data.message", default=None)
  12. culprit: Optional[str] = Field(validation_alias="data.culprit", default=None)
  13. title: Optional[str] = Field(validation_alias="data.title", default=None)
  14. platform: Optional[str] = Field(validation_alias="data.platform", default=None)
  15. type: str = Field(validation_alias="get_type_display")
  16. metadata: dict[str, str] = Field(
  17. validation_alias="data.metadata", default_factory=dict
  18. )
  19. tags: list[dict[str, Optional[str]]] = []
  20. class Config:
  21. model = IssueEvent
  22. model_fields = ["id", "type", "date_created", "date_received"]
  23. populate_by_name = True
  24. class IssueEventDetailSchema(IssueEventSchema):
  25. user_report: list = [] # TODO
  26. next_event_id: Optional[str] = None
  27. previous_event_id: Optional[str] = None
  28. @staticmethod
  29. def resolve_previous_event_id(obj):
  30. if event_id := obj.previous:
  31. return event_id.hex
  32. @staticmethod
  33. def resolve_next_event_id(obj):
  34. if event_id := obj.next:
  35. return event_id.hex