def get_queryset()

in backend/code_review_backend/issues/api.py [0:0]


    def get_queryset(self):
        qs = Issue.objects.all().only("id", "hash").prefetch_related("revisions")

        errors = defaultdict(list)
        repo_slug = self.kwargs["repo_slug"]
        filters = {}
        try:
            repo = Repository.objects.get(slug=repo_slug)
        except Repository.DoesNotExist:
            repo = None
            errors["repo_slug"].append(
                "invalid repo_slug path argument - No repository match this slug"
            )
        else:
            filters["revisions__head_repository"] = repo

        # Always filter by path when the parameter is set
        if path := self.request.query_params.get("path"):
            filters["path"] = path

        date_revision = None
        if date := self.request.query_params.get("date"):
            try:
                date = datetime.strptime(date, "%Y-%m-%d") + timedelta(days=1)
            except ValueError:
                errors["date"].append("invalid date - should be YYYY-MM-DD")
            else:
                # Look for a revision matching this date, going back to 2 days maximum
                date_revision = (
                    Revision.objects.filter(
                        head_repository=repo,
                        created__gte=date - timedelta(2),
                        created__lt=date,
                    )
                    .order_by("created")
                    .last()
                )

        rev_changeset = self.request.query_params.get("revision_changeset")
        if rev_changeset is not None and len(rev_changeset) != 40:
            errors["revision_changeset"].append(
                "invalid revision_changeset - should be the mercurial hash on the head repository"
            )

        if errors:
            raise ValidationError(errors)

        # Only use the revision filter in case some issues are found
        if (
            rev_changeset
            and qs.filter(revisions__head_changeset=rev_changeset).exists()
        ):
            filters["revisions__head_changeset"] = rev_changeset
        elif rev_changeset and not date_revision:
            qs = Issue.objects.none()
        # Defaults to filtering by the revision closest to the given date
        elif date_revision:
            filters["revisions"] = date_revision

        return qs.filter(**filters).order_by("created").distinct()