def post(self, request, community_name): request_data = normalise_request_data(request.data) request_data['community_name'] = community_name serializer = InviteCommunityMemberSerializer(data=request_data) serializer.is_valid(raise_exception=True) data = serializer.validated_data username = data.get('username') user = request.user with transaction.atomic(): community_invite = user.invite_user_with_username_to_community_with_name( username=username, community_name=community_name) response_serializer = InviteUserSerializer( community_invite.invited_user, context={ "request": request, 'communities_names': [community_name] }) 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 _prepare_request_data_for_validation(request_data): request_data_copy = normalise_request_data(request_data) lists_ids = request_data_copy.get('lists_ids', None) if isinstance(lists_ids, str): lists_ids = lists_ids.split(',') request_data_copy['lists_ids'] = lists_ids return request_data_copy
def _prepare_request_data_for_validation(request_data): request_data_copy = normalise_request_data(request_data) circles_ids = request_data_copy.get('circles_ids', None) if isinstance(circles_ids, str): circles_ids = circles_ids.split(',') request_data_copy['circles_ids'] = circles_ids return request_data_copy
def patch(self, request, list_id): request_data = normalise_request_data(request.data) request_data['list_id'] = list_id nomalize_usernames_in_request_data(request_data) serializer = UpdateListSerializer(data=request_data) serializer.is_valid(raise_exception=True) data = serializer.validated_data list_id = data.get('list_id') emoji_id = data.get('emoji_id') usernames = data.get('usernames') name = data.get('name') user = request.user with transaction.atomic(): list = user.update_list_with_id(list_id, emoji_id=emoji_id, usernames=usernames, name=name) response_serializer = GetListListSerializer( list, context={"request": request}) return Response(response_serializer.data, status=status.HTTP_200_OK)
def patch(self, request, circle_id): request_data = normalise_request_data(request.data) request_data['circle_id'] = circle_id nomalize_usernames_in_request_data(request_data) serializer = UpdateCircleSerializer(data=request_data) serializer.is_valid(raise_exception=True) data = serializer.validated_data circle_id = data.get('circle_id') color = data.get('color') usernames = data.get('usernames') name = data.get('name') user = request.user with transaction.atomic(): circle = user.update_circle_with_id(circle_id, color=color, usernames=usernames, name=name) response_serializer = GetCircleCircleSerializer( circle, context={"request": request}) return Response(response_serializer.data, status=status.HTTP_200_OK)
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 delete(self, request, community_name): request_data = normalise_request_data(request.data) request_data['community_name'] = community_name serializer = TopPostCommunityExclusionSerializer(data=request_data) serializer.is_valid(raise_exception=True) user = request.user with transaction.atomic(): user.remove_exclusion_for_community_with_name_from_top_posts(community_name) return ApiMessageResponse(_('Community exclusion removed'), status=status.HTTP_202_ACCEPTED)
def delete(self, request, community_name): request_data = normalise_request_data(request.data) request_data['community_name'] = community_name serializer = FavoriteCommunitySerializer(data=request_data) serializer.is_valid(raise_exception=True) user = request.user with transaction.atomic(): community = user.unfavorite_community_with_name(community_name) response_serializer = FavoriteCommunityCommunitySerializer(community, context={"request": request}) return Response(response_serializer.data, status=status.HTTP_200_OK)
def put(self, request, user_username): request_data = normalise_request_data(request.data) request_data['username'] = user_username serializer = GetUserSerializer(data=request_data) serializer.is_valid(raise_exception=True) data = serializer.validated_data username = data.get('username') user = request.user with transaction.atomic(): user = user.enable_new_post_notifications_for_user_with_username(username=username) response_serializer = SubscribeToUserNewPostNotificationsUserSerializer(user, context={"request": request}) return Response(response_serializer.data, status=status.HTTP_201_CREATED)
def delete(self, request, community_name): request_data = normalise_request_data(request.data) request_data['community_name'] = community_name serializer = SubscribeToCommunityNotificationsSerializer(data=request_data) serializer.is_valid(raise_exception=True) data = serializer.validated_data community_name = data.get('community_name') user = request.user with transaction.atomic(): community = user.disable_new_post_notifications_for_community_with_name(community_name=community_name) response_serializer = SubscribeToCommunityNotificationsCommunitySerializer(community, context={"request": request}) return Response(response_serializer.data, status=status.HTTP_200_OK)
def post(self, request, community_name): request_data = normalise_request_data(request.data) request_data['community_name'] = community_name serializer = BanUserSerializer(data=request_data) serializer.is_valid(raise_exception=True) data = serializer.validated_data username = data.get('username') user = request.user with transaction.atomic(): user.ban_user_with_username_from_community_with_name( username=username, community_name=community_name) return ApiMessageResponse(_('Banned user!'), status=status.HTTP_200_OK)
def put(self, request, community_name): request_data = normalise_request_data(request.data) request_data['community_name'] = community_name serializer = AddCommunityModeratorSerializer(data=request_data) serializer.is_valid(raise_exception=True) data = serializer.validated_data username = data.get('username') user = request.user with transaction.atomic(): user.add_moderator_with_username_to_community_with_name( username=username, community_name=community_name) return ApiMessageResponse('Added moderator to community.', status=status.HTTP_201_CREATED)
def put(self, request, community_name): request_data = normalise_request_data(request.data) request_data['community_name'] = community_name serializer = UpdateCommunityAvatarSerializer(data=request_data) serializer.is_valid(raise_exception=True) user = request.user data = serializer.validated_data avatar = data.get('avatar') with transaction.atomic(): community = user.update_community_with_name_avatar(community_name, avatar=avatar) response_serializer = CommunityAvatarCommunitySerializer(community, context={"request": request}) return Response(response_serializer.data, status=status.HTTP_200_OK)
def post(self, request, community_name): request_data = normalise_request_data(request.data) request_data['community_name'] = community_name serializer = JoinCommunitySerializer(data=request_data) serializer.is_valid(raise_exception=True) user = request.user with transaction.atomic(): community = user.join_community_with_name( community_name=community_name) return Response(MembersCommunitySerializer(community, context={ 'request': request }).data, status=status.HTTP_201_CREATED)
def patch(self, request, invite_id): request_data = normalise_request_data(request.data) request_data['invite_id'] = invite_id serializer = EditUserInviteSerializer(data=request_data) serializer.is_valid(raise_exception=True) invite_id = serializer.validated_data.get('invite_id') nickname = serializer.validated_data.get('nickname') user = request.user with transaction.atomic(): updated_invite = user.update_invite(invite_id=invite_id, nickname=nickname) response_serializer = GetUserInviteSerializer( updated_invite, context={"request": request}) return Response(response_serializer.data, status=status.HTTP_200_OK)
def patch(self, request, device_uuid): request_data = normalise_request_data(request.data) request_data['device_uuid'] = device_uuid serializer = UpdateDeviceSerializer(data=request_data) serializer.is_valid(raise_exception=True) data = serializer.validated_data name = data.get('name') user = request.user with transaction.atomic(): device = user.update_device_with_uuid(device_uuid=device_uuid, name=name) response_serializer = GetDevicesDeviceSerializer(device, context={"request": request}) return Response(response_serializer.data, status=status.HTTP_200_OK)
def delete(self, request, community_name, community_moderator_username): request_data = normalise_request_data(request.data) request_data['community_name'] = community_name request_data['username'] = community_moderator_username serializer = RemoveCommunityModeratorSerializer(data=request_data) serializer.is_valid(raise_exception=True) data = serializer.validated_data username = data.get('username') user = request.user with transaction.atomic(): user.remove_moderator_with_username_from_community_with_name( username=username, community_name=community_name) return ApiMessageResponse(_('Removed moderator'), status=status.HTTP_200_OK)
def put(self, request, community_name): request_data = normalise_request_data(request.data) request_data['community_name'] = community_name serializer = CreateCommunityPostSerializer(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') community_name = data.get('community_name') user = request.user with transaction.atomic(): post = user.create_community_post(text=text, community_name=community_name, image=image, video=video) post_serializer = CommunityPostSerializer(post, context={"request": request}) return Response(post_serializer.data, status=status.HTTP_201_CREATED)
def post(self, request, invite_id): request_data = normalise_request_data(request.data) request_data['invite_id'] = invite_id serializer = EmailUserInviteSerializer(data=request_data) serializer.is_valid(raise_exception=True) invite_id = serializer.validated_data.get('invite_id') email = serializer.validated_data.get('email') user = request.user with transaction.atomic(): try: user.send_invite_to_invite_id_with_email(invite_id, email) except SMTPException as e: logger.exception('Exception occurred during send_invite_email', e) raise APIException( _('An error occurred sending the invite, please try again') ) return ApiMessageResponse(_('Invite email sent'), status=status.HTTP_200_OK)
def put(self, request, post_uuid, post_comment_id): request_data = normalise_request_data(request.data) request_data.update(request.query_params.dict()) request_data['post_uuid'] = post_uuid request_data['post_comment_id'] = post_comment_id serializer = ReactToPostCommentSerializer(data=request_data) serializer.is_valid(raise_exception=True) data = serializer.validated_data emoji_id = data.get('emoji_id') user = request.user with transaction.atomic(): post_comment_reaction = user.react_to_post_comment_with_id( post_comment_id=post_comment_id, emoji_id=emoji_id, ) post_reaction_serializer = PostCommentReactionSerializer( post_comment_reaction, context={"request": request}) return Response(post_reaction_serializer.data, status=status.HTTP_201_CREATED)