mirror of
https://github.com/pinry/pinry.git
synced 2026-07-08 10:01:55 +02:00
Feature: Add new public user-api and user-profile card in front-end
This commit is contained in:
@@ -6,6 +6,21 @@ from rest_framework.exceptions import ValidationError
|
||||
from users.models import User
|
||||
|
||||
|
||||
class PublicUserSerializer(serializers.HyperlinkedModelSerializer):
|
||||
class Meta:
|
||||
model = User
|
||||
fields = (
|
||||
'username',
|
||||
'gravatar',
|
||||
settings.DRF_URL_FIELD_NAME,
|
||||
)
|
||||
extra_kwargs = {
|
||||
settings.DRF_URL_FIELD_NAME: {
|
||||
"view_name": "public-users:user-detail",
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
class UserSerializer(serializers.HyperlinkedModelSerializer):
|
||||
class Meta:
|
||||
model = User
|
||||
|
||||
@@ -7,6 +7,7 @@ from django.contrib.auth.decorators import login_required
|
||||
from django.http import HttpResponseRedirect, HttpResponseBadRequest, HttpResponse
|
||||
from django.urls import reverse
|
||||
from django.utils.functional import lazy
|
||||
from django_filters.rest_framework import DjangoFilterBackend
|
||||
from rest_framework import mixins, routers
|
||||
from rest_framework.permissions import BasePermission
|
||||
from rest_framework.renderers import JSONRenderer
|
||||
@@ -20,6 +21,21 @@ def reverse_lazy(name=None, *args):
|
||||
return lazy(reverse, str)(name, args=args)
|
||||
|
||||
|
||||
class PublicUserViewSet(
|
||||
mixins.RetrieveModelMixin,
|
||||
mixins.ListModelMixin,
|
||||
GenericViewSet,
|
||||
):
|
||||
serializer_class = UserSerializer
|
||||
filter_backends = (DjangoFilterBackend, )
|
||||
filter_fields = ("username", )
|
||||
pagination_class = None
|
||||
|
||||
def get_queryset(self):
|
||||
username = self.request.GET.get("username", "")
|
||||
return User.objects.filter(username=username)
|
||||
|
||||
|
||||
class UserViewSet(
|
||||
mixins.RetrieveModelMixin,
|
||||
mixins.ListModelMixin,
|
||||
@@ -87,3 +103,4 @@ def logout_user(request):
|
||||
|
||||
drf_router = routers.DefaultRouter()
|
||||
drf_router.register(r'users', UserViewSet, basename="user")
|
||||
drf_router.register(r'public-users', PublicUserViewSet, basename="public-user")
|
||||
|
||||
Reference in New Issue
Block a user