Users Api

exception api.users.exceptions.AlreadyFollowingUserAPIException(detail=None, code=None)[source]

Bases: APIException

API Exception to be raised when a user attempts to follow a user that they are already following.

default_code = 'already_following_user'
default_detail = 'You are already following this user.'
status_code = 400
exception api.users.exceptions.NotFollowingUserAPIException(detail=None, code=None)[source]

Bases: APIException

API Exception to be raised when a user attempts to unfollow a user that they are not following.

default_code = 'not_following_user'
default_detail = "You are not following to this user, so you can't unsubscribe from them."
status_code = 400
class api.users.serializers.AccessRefreshTokensDTOSerializer(*args, **kwargs)[source]

Bases: DataclassSerializer

class api.users.serializers.AuthorCommentSerializer(*args, **kwargs)[source]

Bases: ModelSerializer

Author serializer for comment

class api.users.serializers.CategorySerializer(*args, **kwargs)[source]

Bases: ModelSerializer

class api.users.serializers.ConfirmEmailSerializer(*args, **kwargs)[source]

Bases: BaseUserActivationSerializer

to_internal_value(data)[source]

Dict of native values <- Dict of primitive datatypes.

validate(attrs: Dict) Dict[source]
class api.users.serializers.ConfirmPasswordSerializer(*args, **kwargs)[source]

Bases: ConfirmEmailSerializer, UserChangePasswordSerializer

validate(attrs: Dict) Dict[source]
class api.users.serializers.CreateTokenDocsBodySerializer(*args, **kwargs)[source]

Bases: Serializer

class api.users.serializers.CreateTokenDocsResponseSerializer(*args, **kwargs)[source]

Bases: Serializer

class api.users.serializers.CustomTokenObtainPairSerializer(*args, **kwargs)[source]

Bases: TokenObtainPairSerializer

class api.users.serializers.CustomTokenRefreshSerializer(*args, **kwargs)[source]

Bases: TokenRefreshSerializer

class api.users.serializers.ExtendedUserSerializer(*args, **kwargs)[source]

Bases: UserSerializer

class api.users.serializers.FollowingAndFollowersUserSerializer(*args, **kwargs)[source]

Bases: UserSerializer

class api.users.serializers.FollowingUserSerializer(*args, **kwargs)[source]

Bases: UserSerializer

class api.users.serializers.ProfileSerializer(*args, **kwargs)[source]

Bases: ModelSerializer

class api.users.serializers.RefreshTokenDocsBodySerializer(*args, **kwargs)[source]

Bases: Serializer

class api.users.serializers.RefreshTokenDocsResponseSerializer(*args, **kwargs)[source]

Bases: Serializer

class api.users.serializers.ResendUserActivationCodeSerializer(*args, **kwargs)[source]

Bases: EmailValidationMixin, Serializer

validate_email(value: str) str[source]
class api.users.serializers.SenderNotificationSerializer(*args, **kwargs)[source]

Bases: ModelSerializer

Serializer for sender

class api.users.serializers.UserActivationSerializer(*args, **kwargs)[source]

Bases: BaseUserActivationSerializer

to_internal_value(data)[source]

Dict of native values <- Dict of primitive datatypes.

validate(attrs: Dict) Dict[source]
class api.users.serializers.UserChangePasswordSerializer(*args, **kwargs)[source]

Bases: PasswordMatchValidationMixin, Serializer

validate_password(value)[source]
class api.users.serializers.UserResetPassword(*args, **kwargs)[source]

Bases: EmailValidationMixin, Serializer

class api.users.serializers.UserSerializer(*args, **kwargs)[source]

Bases: PasswordMatchValidationMixin, ModelSerializer

__init__(*args: Any, **kwargs: Any) None[source]
get_fields()[source]

Return the dict of field names -> field instances that should be used for self.fields when instantiating the serializer.

to_representation(instance)[source]

Object instance -> Dict of primitive datatypes.

update(instance, validated_data)[source]
validate_password(value)[source]
class api.users.views.FollowersAPIViewSet(**kwargs)[source]

Bases: GenericViewSet

basename = None
description = None
detail = None
filter_backends = [<class 'rest_framework.filters.SearchFilter'>]
follow(request, pk=None)[source]
followers_list(request, pk=None)[source]
following_list(request, pk=None)[source]
get_object() User | None[source]

Returns the object the view is displaying.

You may want to override this if you need to provide non-standard queryset lookups. Eg if objects are referenced using multiple keyword arguments in the url conf.

http_method_names = ['get', 'post']
list(request, return_followers: bool = True, *args, **kwargs)[source]
name = None
permission_classes = [<class 'rest_framework.permissions.IsAuthenticatedOrReadOnly'>]
queryset = NotDeletedQuerySet
search_fields = ['username', 'first_name', 'last_name']
serializer_class

alias of UserSerializer

service

alias of UsersService

subtag = 'followers'
suffix = None
tags = ['Users [authorized]']
unfollow(request, pk=None)[source]
class api.users.views.InterestsListAPIView(**kwargs)[source]

Bases: ListAPIView

View with interests list

get(request, *args, **kwargs)[source]
http_method_names = ['get']
queryset = QuerySet
serializer_class

alias of CategorySerializer

tags = ['Users [unauthorized]']
class api.users.views.TokenViewSet(**kwargs)[source]

Bases: CustomViewSet

handle_token_response(serializer_class)[source]
http_method_names = ['post']
obtain(request)[source]
permission_classes = [<class 'rest_framework.permissions.AllowAny'>]
refresh(request)[source]
tags = ['Token']
class api.users.views.UsersAuthorizedViewSet(**kwargs)[source]

Bases: CustomModelViewSet

basename = None
description = None
detail = None
export_data(request)[source]
filter_backends = [<class 'api.users.filters.UserElasticsearchFilter'>]
get_object() AbstractBaseUser | AnonymousUser | None[source]

Returns the object the view is displaying.

You may want to override this if you need to provide non-standard queryset lookups. Eg if objects are referenced using multiple keyword arguments in the url conf.

get_queryset() QuerySet[source]

Get the list of items for this view. This must be an iterable, and may be a queryset. Defaults to using self.queryset.

This method should always be used rather than accessing self.queryset directly, as self.queryset gets evaluated only once, and those results are cached for all subsequent requests.

You may want to override this if you need to provide different querysets depending on the incoming request.

(Eg. return a list of items that is specific to the user)

http_method_names = ['post', 'get', 'put', 'patch', 'delete']
list(request: Request, *args: Any, **kwargs: Any) Response[source]
name = None
pagination_class

alias of SearchPagination

password_change(request: Request)[source]
perform_destroy(instance: User) None[source]
permission_classes = [<class 'rest_framework.permissions.IsAuthenticatedOrReadOnly'>]
serializer_class

alias of ExtendedUserSerializer

service

alias of UsersService

suffix = None
tags = ['Users [authorized]']
class api.users.views.UsersUnauthorizedViewSet(**kwargs)[source]

Bases: CustomViewSet

ViewSet with actions for unauthorized users

activate(request, *args: Tuple[Any], **kwargs: Dict)[source]
basename = None
confirm_email(request, *args: Tuple[Any], **kwargs: Dict)[source]
confirm_password(request, *args: Tuple[Any], **kwargs: Dict)[source]
description = None
detail = None
http_method_names = ['post']
name = None
permission_classes = [<class 'rest_framework.permissions.AllowAny'>]
resend_activation_code(request, *args: Tuple[Any], **kwargs: Dict)[source]
reset_password(request, *args: Tuple[Any], **kwargs: Dict)[source]
service

alias of UsersService

signup(request: Request, *args: Tuple[Any], **kwargs: Dict) Response[source]
suffix = None
tags = ['Users [unauthorized]']
class api.users.filters.UserElasticsearchFilter[source]

Bases: BaseFilterBackend

Filter for performing user search using Elasticsearch. Executes search on username, first_name, and last_name with different weights.

construct_query(search_param)[source]

Constructs a combined Elasticsearch query from various parts.

Parameters:

search_param – The search parameter entered by the user.

Returns:

A combined Elasticsearch query.

filter_queryset(request, queryset, view)[source]

Filters a QuerySet based on the search parameters in the request.

Parameters:
  • request – HTTP request object.

  • queryset – Initial QuerySet.

  • view – The view that calls this method.

Returns:

Updated QuerySet.