diff --git a/src/account/serializers.py b/src/account/serializers.py index 9dded684b5756b880ca87cb6834f4f80544ad049..41b44386d7fe3aaefeee4677391bde7f70f9fdc2 100644 --- a/src/account/serializers.py +++ b/src/account/serializers.py @@ -84,3 +84,35 @@ class ProfileUpdateSerializer(serializers.ModelSerializer): pref_group=pref_group, ) profile_obj.save() + + +class ProfileDetailSerializer(serializers.ModelSerializer): + def current_user(self): + user = self.context['request'].user + return user + + first_name = serializers.SerializerMethodField() + last_name = serializers.SerializerMethodField() + email = serializers.SerializerMethodField() + + class Meta: + model = Profile + fields = [ + 'first_name', + 'last_name', + 'email', + 'nick', + 'pref_group', + ] + + def get_first_name(self): + user = self.current_user() + return user.first_name + + def get_last_name(self): + user = self.ccurrent_user() + return user.last_name + + def get_email(self): + user = self.ccurrent_user() + return user.email diff --git a/src/account/urls.py b/src/account/urls.py index 347aecb56502037b706abb58a0d724656ebffbc1..691b51e2be5134df30bb8f876d4718790f7dd65e 100644 --- a/src/account/urls.py +++ b/src/account/urls.py @@ -7,6 +7,7 @@ router = routers.DefaultRouter(trailing_slash=False) router.register(r'profiles', views.ProfileViewSet) urlpatterns = [ url(r'^profiles/create', views.ProfileCreateView.as_view()), - url(r'^profiles/update/<pk>', views.ProfileUpdateView.as_view()) + url(r'^profiles/(?P<pk>\d+)/$', views.ProfileDetailView.as_view()), + url(r'^profiles/(?P<pk>\d+)/update/$', views.ProfileUpdateView.as_view()), ] urlpatterns += router.urls diff --git a/src/account/views.py b/src/account/views.py index e4f226b956aadb5d5d20432ae99839832137c047..e87ad7134e580b81d4c6494a3b4c267ed7c2badd 100644 --- a/src/account/views.py +++ b/src/account/views.py @@ -11,7 +11,13 @@ class ProfileCreateView(generics.CreateAPIView): permission_classes = [IsAuthenticated, ] -class ProfileUpdateView(generics.RetrieveAPIView): +class ProfileDetailView(generics.RetrieveAPIView): + serializer_class = serializers.ProfileDetailSerializer + queryset = models.Profile.objects.all() + permission_classes = [IsAuthenticated, ] + + +class ProfileUpdateView(generics.RetrieveUpdateAPIView): serializer_class = serializers.ProfileUpdateSerializer queryset = models.Profile.objects.all() permission_classes = [IsAuthenticated, ]