* refactor: folder structure for urls * chore: deleted the urls file * chore: proper naming for urls * chore: reset password url * dev: create refresh token endpoint and endpoint to get settings for user * dev: workspace member me serializer * dev: remove extra fields from project list and retrieve endpoints * dev: update the project list endpoint with member details and deploy boolean * dev: enable user favorite project endpoint and remove is_favorite from project list * dev: analytics refactoring * dev: revert is_favorite settings * dev: create new serializer for project list and add pagination from projects * dev: fix analytics api * dev: module and cycle * dev: update error message, fix module analytics and add null check for labels * dev: member serializer * dev: dynamic base serializer * dev: remove view issues endpoint * dev: url pattern updates * dev: add comments to delete this file * dev: last workspace id * dev: analytics export * dev: export analytics validation * dev: update python runtime * dev: update notification endpoints * dev: cycle and validation fix * dev: issue activity validation when creating updating and deleting issue and comments * dev: update issue activity logging for link and reactions * dev: update module issue activity logging * dev: update module issue activity --------- Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
113 lines
3.5 KiB
Python
113 lines
3.5 KiB
Python
# Third party imports
|
|
from rest_framework.response import Response
|
|
from rest_framework import status
|
|
|
|
from sentry_sdk import capture_exception
|
|
|
|
# Module imports
|
|
from plane.api.serializers import (
|
|
UserSerializer,
|
|
IssueActivitySerializer,
|
|
UserMeSerializer,
|
|
UserMeSettingsSerializer,
|
|
)
|
|
|
|
from plane.api.views.base import BaseViewSet, BaseAPIView
|
|
from plane.db.models import (
|
|
User,
|
|
Workspace,
|
|
WorkspaceMemberInvite,
|
|
Issue,
|
|
IssueActivity,
|
|
WorkspaceMember,
|
|
)
|
|
from plane.utils.paginator import BasePaginator
|
|
|
|
|
|
class UserEndpoint(BaseViewSet):
|
|
serializer_class = UserSerializer
|
|
model = User
|
|
|
|
def get_object(self):
|
|
return self.request.user
|
|
|
|
def retrieve(self, request):
|
|
try:
|
|
serialized_data = UserMeSerializer(request.user).data
|
|
return Response(
|
|
serialized_data,
|
|
status=status.HTTP_200_OK,
|
|
)
|
|
except Exception as e:
|
|
capture_exception(e)
|
|
return Response(
|
|
{"error": "Something went wrong please try again later"},
|
|
status=status.HTTP_400_BAD_REQUEST,
|
|
)
|
|
|
|
def retrieve_user_settings(self, request):
|
|
try:
|
|
serialized_data = UserMeSettingsSerializer(request.user).data
|
|
return Response(serialized_data, status=status.HTTP_200_OK)
|
|
except Exception as e:
|
|
capture_exception(e)
|
|
return Response(
|
|
{"error": "Something went wrong please try again later"},
|
|
status=status.HTTP_400_BAD_REQUEST,
|
|
)
|
|
|
|
|
|
class UpdateUserOnBoardedEndpoint(BaseAPIView):
|
|
def patch(self, request):
|
|
try:
|
|
user = User.objects.get(pk=request.user.id)
|
|
user.is_onboarded = request.data.get("is_onboarded", False)
|
|
user.save()
|
|
return Response(
|
|
{"message": "Updated successfully"}, status=status.HTTP_200_OK
|
|
)
|
|
except Exception as e:
|
|
capture_exception(e)
|
|
return Response(
|
|
{"error": "Something went wrong please try again later"},
|
|
status=status.HTTP_400_BAD_REQUEST,
|
|
)
|
|
|
|
|
|
class UpdateUserTourCompletedEndpoint(BaseAPIView):
|
|
def patch(self, request):
|
|
try:
|
|
user = User.objects.get(pk=request.user.id)
|
|
user.is_tour_completed = request.data.get("is_tour_completed", False)
|
|
user.save()
|
|
return Response(
|
|
{"message": "Updated successfully"}, status=status.HTTP_200_OK
|
|
)
|
|
except Exception as e:
|
|
capture_exception(e)
|
|
return Response(
|
|
{"error": "Something went wrong please try again later"},
|
|
status=status.HTTP_400_BAD_REQUEST,
|
|
)
|
|
|
|
|
|
class UserActivityEndpoint(BaseAPIView, BasePaginator):
|
|
def get(self, request, slug):
|
|
try:
|
|
queryset = IssueActivity.objects.filter(
|
|
actor=request.user, workspace__slug=slug
|
|
).select_related("actor", "workspace", "issue", "project")
|
|
|
|
return self.paginate(
|
|
request=request,
|
|
queryset=queryset,
|
|
on_results=lambda issue_activities: IssueActivitySerializer(
|
|
issue_activities, many=True
|
|
).data,
|
|
)
|
|
except Exception as e:
|
|
capture_exception(e)
|
|
return Response(
|
|
{"error": "Something went wrong please try again later"},
|
|
status=status.HTTP_400_BAD_REQUEST,
|
|
)
|