def put(self, request): request_data = normalise_request_data(request.data) normalize_list_value_in_request_data(list_name='categories', request_data=request_data) serializer = CreateCommunitySerializer(data=request_data) serializer.is_valid(raise_exception=True) data = serializer.validated_data name = data.get('name') type = data.get('type') title = data.get('title') description = data.get('description') rules = data.get('rules') avatar = data.get('avatar') cover = data.get('cover') color = data.get('color') user_adjective = data.get('user_adjective') users_adjective = data.get('users_adjective') categories = data.get('categories') invites_enabled = data.get('invites_enabled') user = request.user with transaction.atomic(): community = user.create_community(name=name, title=title, description=description, rules=rules, avatar=avatar, cover=cover , type=type, color=color, categories_names=categories, users_adjective=users_adjective, user_adjective=user_adjective, invites_enabled=invites_enabled) response_serializer = CommunitiesCommunitySerializer(community, context={"request": request}) return Response(response_serializer.data, status=status.HTTP_201_CREATED)
def patch(self, request, community_name): request_data = normalise_request_data(request.data) normalize_list_value_in_request_data(list_name='categories', request_data=request_data) request_data['community_name'] = community_name serializer = UpdateCommunitySerializer(data=request_data) serializer.is_valid(raise_exception=True) data = serializer.validated_data name = data.get('name') type = data.get('type') color = data.get('color') title = data.get('title') description = data.get('description') rules = data.get('rules') user_adjective = data.get('user_adjective') users_adjective = data.get('users_adjective') categories = data.get('categories') invites_enabled = data.get('invites_enabled') user = request.user with transaction.atomic(): community = user.update_community_with_name(community_name, name=name, type=type, title=title, description=description, color=color, rules=rules, user_adjective=user_adjective, users_adjective=users_adjective, categories_names=categories, invites_enabled=invites_enabled) response_serializer = GetCommunityCommunitySerializer(community, context={"request": request}) return Response(response_serializer.data, status=status.HTTP_200_OK)
def put(self, request): request_data = request.data.dict() normalize_list_value_in_request_data('circle_id', request_data) serializer = CreatePostSerializer(data=request_data, context={"request": request}) serializer.is_valid(raise_exception=True) data = serializer.validated_data text = data.get('text') image = data.get('image') video = data.get('video') circles_ids = data.get('circle_id') is_draft = data.get('is_draft') user = request.user with transaction.atomic(): if circles_ids: post = user.create_encircled_post(text=text, circles_ids=circles_ids, image=image, video=video, is_draft=is_draft) else: post = user.create_public_post(text=text, image=image, video=video, is_draft=is_draft) post_serializer = AuthenticatedUserPostSerializer( post, context={"request": request}) return Response(post_serializer.data, status=status.HTTP_201_CREATED)
def get(self, request, community_name): query_params = request.query_params.dict() query_params['community_name'] = community_name normalize_list_value_in_request_data(request_data=query_params, list_name='exclude') serializer = SearchCommunityMembersSerializer(data=query_params) serializer.is_valid(raise_exception=True) data = serializer.validated_data count = data.get('count', 10) query = data.get('query') exclude = data.get('exclude') user = request.user members = user.search_community_with_name_members( community_name=community_name, query=query, exclude_keywords=exclude)[:count] response_serializer = GetCommunityMembersMemberSerializer( members, many=True, context={"request": request}) return Response(response_serializer.data, status=status.HTTP_200_OK)
def get(self, request, community_name): query_params = request.query_params.dict() normalize_list_value_in_request_data(request_data=query_params, list_name='types') normalize_list_value_in_request_data(request_data=query_params, list_name='statuses') query_params['community_name'] = community_name serializer = GetCommunityModeratedObjectsSerializer(data=query_params) serializer.is_valid(raise_exception=True) data = serializer.validated_data community_name = data.get('community_name') count = data.get('count', 10) max_id = data.get('max_id') types = data.get('types') verified = data.get('verified') statuses = data.get('statuses') user = request.user moderated_objects = user.get_community_moderated_objects( community_name=community_name, max_id=max_id, verified=verified, types=types, statuses=statuses).order_by('-id')[:count] response_serializer = ModeratedObjectSerializer( moderated_objects, many=True, context={"request": request}) return Response(response_serializer.data, status=status.HTTP_200_OK)
def get(self, request): user = request.user query_params = request.query_params.dict() normalize_list_value_in_request_data('types', query_params) serializer = UnreadNotificationsCountSerializer(data=query_params) serializer.is_valid(raise_exception=True) data = serializer.validated_data max_id = data.get('max_id') types = data.get('types') notifications = user.get_unread_notifications(max_id=max_id, types=types) return Response({'count': notifications.count()}, status=status.HTTP_200_OK)
def get_posts_for_authenticated_user(self, request): query_params = request.query_params.dict() normalize_list_value_in_request_data('circle_id', query_params) normalize_list_value_in_request_data('list_id', query_params) serializer = GetPostsSerializer(data=query_params) serializer.is_valid(raise_exception=True) data = serializer.validated_data circles_ids = data.get('circle_id') lists_ids = data.get('list_id') max_id = data.get('max_id') min_id = data.get('min_id') count = data.get('count', 10) username = data.get('username') user = request.user if username: if username == user.username: posts = user.get_posts(max_id=max_id) elif not user.is_connected_with_user_with_username(username): User = get_user_model() posts = User.get_public_posts_for_user_with_username( max_id=max_id, min_id=min_id, username=username) else: posts = user.get_posts_for_user_with_username(username, max_id=max_id) else: posts = user.get_timeline_posts(circles_ids=circles_ids, lists_ids=lists_ids, max_id=max_id, min_id=min_id, count=count) posts = posts.order_by('-id')[:count] post_serializer_data = AuthenticatedUserPostSerializer(posts, many=True, context={ "request": request }).data return Response(post_serializer_data, status=status.HTTP_200_OK)
def get(self, request): user = request.user query_params = request.query_params.dict() normalize_list_value_in_request_data('types', query_params) serializer = GetNotificationsSerializer(data=query_params) serializer.is_valid(raise_exception=True) data = serializer.validated_data count = data.get('count', 10) max_id = data.get('max_id') types = data.get('types') notifications = user.get_notifications(max_id=max_id, types=types).order_by('-created')[:count] response_serializer = GetNotificationsNotificationSerializer(notifications, many=True, context={"request": request}) return Response(response_serializer.data, status=status.HTTP_200_OK)