in backend/code_review_backend/issues/api.py [0:0]
def get_queryset(self):
repo = self.kwargs["repository"]
queryset = (
Issue.objects.filter(issue_links__revision__head_repository__slug=repo)
.filter(analyzer=self.kwargs["analyzer"])
.filter(analyzer_check=self.kwargs["check"])
.annotate(publishable=Q(issue_links__in_patch=True) & Q(level=LEVEL_ERROR))
.prefetch_related(
"issue_links__diff__repository",
Prefetch(
"issue_links__diff__revision",
queryset=Revision.objects.select_related(
"base_repository", "head_repository"
),
),
)
# List of diffs for each link of this issue
.prefetch_related("diffs")
.order_by("-created")
)
# Display only publishable issues by default
publishable = self.request.query_params.get("publishable", "true").lower()
_filter = Q(issue_links__in_patch=True) | Q(level=LEVEL_ERROR)
if publishable == "true":
queryset = queryset.filter(_filter)
elif publishable == "false":
queryset = queryset.exclude(_filter)
elif publishable != "all":
raise APIException(detail="publishable can only be true, false or all")
# Filter issues by date
since = self.request.query_params.get("since")
if since is not None:
try:
since = datetime.strptime(since, "%Y-%m-%d").date()
except ValueError:
raise APIException(detail="invalid since date - should be YYYY-MM-DD")
queryset = queryset.filter(created__gte=since)
return queryset.distinct()