diff --git a/apps/api/plane/app/views/exporter/base.py b/apps/api/plane/app/views/exporter/base.py index d3604b56f7..d735a1aaa0 100644 --- a/apps/api/plane/app/views/exporter/base.py +++ b/apps/api/plane/app/views/exporter/base.py @@ -6,7 +6,7 @@ from rest_framework.response import Response from plane.app.permissions import allow_permission, ROLE from plane.app.serializers import ExporterHistorySerializer from plane.bgtasks.export_task import issue_export_task -from plane.db.models import ExporterHistory, Project, Workspace +from plane.db.models import ExporterHistory, Project, Workspace, WorkspaceMember from plane.app.views.base import BaseAPIView @@ -66,10 +66,20 @@ class ExportIssuesEndpoint(BaseAPIView): @allow_permission(allowed_roles=[ROLE.ADMIN, ROLE.MEMBER], level="WORKSPACE") def get(self, request, slug): - exporter_history = ExporterHistory.objects.filter(workspace__slug=slug).exclude(type="issue_worklogs").select_related( - "workspace", "initiated_by" + # Get the workspace role for the current user + is_member = WorkspaceMember.objects.filter( + workspace__slug=slug, member=request.user, is_active=True, role=ROLE.MEMBER.value + ).exists() + + exporter_history = ( + ExporterHistory.objects.filter(workspace__slug=slug) + .exclude(type="issue_worklogs") + .select_related("workspace", "initiated_by") ) + if is_member: + exporter_history = exporter_history.filter(initiated_by=request.user) + if request.GET.get("per_page", False) and request.GET.get("cursor", False): return self.paginate( order_by=request.GET.get("order_by", "-created_at"),