filters.py 929 B

1234567891011121314151617181920212223242526
  1. from django_filters import rest_framework as filters
  2. from glitchtip.filters import StartEndRelativeIsoDateTimeRangeFilter
  3. from projects.models import Project
  4. from .models import Issue
  5. class IssueFilter(filters.FilterSet):
  6. created = StartEndRelativeIsoDateTimeRangeFilter(
  7. field_name="created", label="Issue created",
  8. )
  9. project = filters.ModelMultipleChoiceFilter(queryset=Project.objects.all())
  10. class Meta:
  11. model = Issue
  12. fields = ["project", "created"]
  13. def filter_queryset(self, queryset):
  14. queryset = super().filter_queryset(queryset)
  15. # This exists because OSS did it this way, the astute observer will note
  16. # it could just as well be done in query
  17. environments = self.request.query_params.getlist("environment")
  18. if environments:
  19. queryset = queryset.filter(tags__environment__has_any_keys=environments)
  20. return queryset