diff --git a/users/admin.py b/users/admin.py index b18747a2..b9be154c 100644 --- a/users/admin.py +++ b/users/admin.py @@ -12,7 +12,7 @@ class CustomUserAdmin(admin.ModelAdmin): { "fields": ( "user_type", - "onboarding_stage", + # "onboarding_stage", ) }, ), diff --git a/users/migrations/0032_alter_customuser_onboarding_stage.py b/users/migrations/0032_alter_customuser_onboarding_stage.py new file mode 100644 index 00000000..ac2108df --- /dev/null +++ b/users/migrations/0032_alter_customuser_onboarding_stage.py @@ -0,0 +1,25 @@ +# Generated by Django 4.1.3 on 2023-04-14 11:41 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("users", "0031_alter_customuser_onboarding_stage"), + ] + + operations = [ + migrations.AlterField( + model_name="customuser", + name="onboarding_stage", + field=models.PositiveSmallIntegerField( + blank=True, + default=None, + editable=False, + help_text="null(пустое) - онбординг пройден, 1, 2 и 3 - номера стадий онбординга", + null=True, + verbose_name="Стадия онбординга", + ), + ), + ] diff --git a/users/models.py b/users/models.py index 90a362e7..351ec2d3 100644 --- a/users/models.py +++ b/users/models.py @@ -87,6 +87,7 @@ class CustomUser(AbstractUser): null=True, blank=True, default=None, + editable=False, verbose_name="Стадия онбординга", help_text="null(пустое) - онбординг пройден, 1, 2 и 3 - номера стадий онбординга", ) diff --git a/users/urls.py b/users/urls.py index 51601873..21aa9419 100644 --- a/users/urls.py +++ b/users/urls.py @@ -16,6 +16,7 @@ LogoutView, LikedProjectList, RegisteredEventsList, + SetUserOnboardingStage, ) app_name = "users" @@ -30,6 +31,7 @@ path("users/roles/", UserAdditionalRolesView.as_view()), path("users/types/", UserTypesView.as_view()), path("users//", UserDetail.as_view()), + path("users//set_onboarding_stage/", SetUserOnboardingStage.as_view()), path("users/reset-password/", EmailResetPassword.as_view()), path("users/current/", CurrentUser.as_view()), path("users/current/events/", RegisteredEventsList.as_view()), diff --git a/users/views.py b/users/views.py index d110fde4..3f847059 100644 --- a/users/views.py +++ b/users/views.py @@ -17,6 +17,7 @@ UpdateAPIView, ) from rest_framework.permissions import AllowAny, IsAuthenticated +from rest_framework.request import Request from rest_framework.response import Response from rest_framework.views import APIView from rest_framework_simplejwt.tokens import RefreshToken, TokenError @@ -339,3 +340,23 @@ class RegisteredEventsList(ListAPIView): def get_queryset(self): events = Event.objects.filter(registered_users__pk=self.request.user.pk) return events + + +class SetUserOnboardingStage(APIView): + def put(self, request: Request, pk): + try: + request.user.onboarding_stage = request.data["onboarding_stage"] + request.user.save() + # print(request.user.pk, pk) + if request.user.pk != pk: + return Response( + status=status.HTTP_403_FORBIDDEN, + data={"error": "You cannot edit other users!"}, + ) + serialized_user = UserListSerializer(request.user) + data = serialized_user.data + return Response(status=status.HTTP_200_OK, data=data) + except Exception: + return Response( + status=status.HTTP_400_BAD_REQUEST, data={"error": "Something went wrong"} + )