Ejemplo n.º 1
0
class GroupListSerializer(serializers.ModelSerializer):
    image = ImageSerializer()
    relationship_theme = ChoiceDisplayField(choices=ThemeChoices.THEMES)
    group_type = ChoiceDisplayField(choices=ComminityTypeChoices.TYPES)
    requests_count = serializers.SerializerMethodField()
    request = serializers.SerializerMethodField()

    def get_requests_count(self, obj):
        return obj.requests.filter(
            status=MembershipRequest.STATUS_WAITING_MODERATION).count()

    def get_request(self, obj):
        user = self.context["request"].user
        request = obj.requests.filter(user=user).first()
        if request:
            return request.pk

    class Meta:
        model = Group
        fields = (
            "pk",
            "slug",
            "name",
            "image",
            "description",
            "relationship_theme",
            "group_type",
            "creator",
            "moderators",
            "users",
            "requests_count",
            "request",
        )
Ejemplo n.º 2
0
class UserListSerializer(serializers.ModelSerializer):
    city = CitySerializer()
    role = ChoiceDisplayField(choices=User.ROLES)
    approver = UserSerializer()
    avatar = ImageSerializer()
    role = ChoiceDisplayField(choices=User.ROLES)
    gender = ChoiceDisplayField(choices=User.GENDERS)
    relationship_formats = ChoiceDisplayField(choices=User.FORMATS)
    relationship_themes = ChoiceDisplayField(choices=ThemeChoices.THEMES)

    class Meta:
        model = User
        fields = (
            "pk",
            "slug",
            "name",
            "avatar",
            "email",
            "is_real",
            "approver",
            "role",
            "about",
            "is_ban",
            "gender",
            "relationship_formats",
            "relationship_themes",
            "birthday",
            "birthday_second",
            "city",
        )
Ejemplo n.º 3
0
class PartyListSerializer(serializers.ModelSerializer):
    image = ImageSerializer()
    city = CitySerializer()
    club = ClubPartySerializer()
    theme = ChoiceDisplayField(choices=ThemeChoices.THEMES)
    party_type = ChoiceDisplayField(choices=ComminityTypeChoices.TYPES)
    users = serializers.SerializerMethodField()
    user_status = serializers.SerializerMethodField()

    def get_users(self, obj):
        # TODO optimization
        return (PartyUser.objects.filter(party=obj).exclude(
            status__in=(PartyUser.STATUS_UNKNOWN, )).values_list("user_id",
                                                                 flat=True))

    def get_user_status(self, obj):
        # TODO optimization
        user = self.context["request"].user
        party_user = PartyUser.objects.filter(party=obj, user=user).first()
        if party_user:
            return party_user.status
        else:
            return PartyUser.STATUS_UNKNOWN

    class Meta:
        model = Party
        fields = (
            "pk",
            "slug",
            "club",
            "name",
            "image",
            "short_description",
            "description",
            "party_type",
            "city",
            "users",
            "views",
            "likes",
            "comments_count",
            "hash_tags",
            "theme",
            "start_date",
            "end_date",
            "city",
            "address",
            "geo",
            "status",
            "user_status",
        )
Ejemplo n.º 4
0
class FriendSearchSerializer(UserSerializer):
    role = ChoiceDisplayField(choices=User.ROLES)
    gender = ChoiceDisplayField(choices=User.GENDERS)
    relationship_formats = ChoiceDisplayField(choices=User.FORMATS)
    relationship_themes = ChoiceDisplayField(choices=ThemeChoices.THEMES)
    request = serializers.SerializerMethodField()
    chat = serializers.SerializerMethodField()

    def get_request(self, obj):
        user = self.context["request"].user
        request = obj.requests.filter(user=user).first()
        if request:
            return request.pk

    def get_chat(self, obj):
        user = self.context["request"].user
        if user == obj:
            return
        chat = Chat.objects.user_chats(user).filter(
            chat_type=Chat.TYPE_CONVERSATION, users=obj).first()
        if chat:
            return chat.pk

    class Meta:
        model = User
        fields = (
            "pk",
            "slug",
            "name",
            "avatar",
            "online",
            "last_seen",
            "city",
            "about",
            "role",
            "gender",
            "relationship_formats",
            "relationship_themes",
            "birthday",
            "birthday_second",
            "is_real",
            "request",
            "chat",
        )
Ejemplo n.º 5
0
class MediaFolderItemSerializer(serializers.ModelSerializer):
    show_media = ChoiceDisplayField(choices=AccessChoices.ACCESS)
    media = serializers.SerializerMethodField()

    def get_media(self, obj):
        media = obj.media.filter(media_type=Media.TYPE_PHOTO,
                                 is_deleted=False).order_by("views")[:4]
        serializer = MediaItemSerializer(media,
                                         many=True,
                                         context=self.context)
        return serializer.data

    class Meta:
        model = MediaFolder
        fields = ("pk", "name", "show_media", "creator", "media")
Ejemplo n.º 6
0
class NewsItemSerializer(serializers.ModelSerializer):
    image = ImageSerializer()
    creator = UserSerializer()
    news_type = ChoiceDisplayField(choices=News.TYPES)
    likes = serializers.SerializerMethodField()
    views = serializers.SerializerMethodField()
    comments_count = serializers.SerializerMethodField()

    def get_likes(self, obj):
        parent = obj.content_object
        if parent and hasattr(parent, "likes"):
            return parent.likes.all().values_list("pk", flat=True)
        return obj.likes.all().values_list("pk", flat=True)

    def get_views(self, obj):
        parent = obj.content_object
        if parent and hasattr(parent, "views"):
            return parent.views
        return obj.views

    def get_comments_count(self, obj):
        parent = obj.content_object
        if parent and hasattr(parent, "comments_count"):
            return parent.comments_count
        return obj.comments_count

    class Meta:
        model = News
        fields = (
            "pk",
            "news_type",
            "slug",
            "object_id",
            "title",
            "image",
            "creator",
            "description",
            "publish_date",
            "views",
            "likes",
            "comments_count",
            "hash_tags",
        )
Ejemplo n.º 7
0
class PostListSerializer(serializers.ModelSerializer):
    creator = UserSerializer()
    theme = ChoiceDisplayField(choices=Post.THEMES)
    image = ImageSerializer()

    class Meta:
        model = Post
        fields = (
            "pk",
            "slug",
            "image",
            "title",
            "description",
            "theme",
            "likes",
            "views",
            "creator",
            "status",
            "is_ban",
        )
Ejemplo n.º 8
0
class PostItemSerializer(serializers.ModelSerializer):
    image = ImageSerializer()
    theme = ChoiceDisplayField(choices=Post.THEMES)

    class Meta:
        model = Post
        fields = (
            "pk",
            "slug",
            "title",
            "image",
            "description",
            "views",
            "likes",
            "comments_count",
            "creator",
            "status",
            "theme",
            "is_whisper",
        )
Ejemplo n.º 9
0
class NewsSerializer(serializers.ModelSerializer):
    image = ImageSerializer()
    creator = UserSerializer()
    news_type = ChoiceDisplayField(choices=News.TYPES)

    class Meta:
        model = News
        fields = (
            "pk",
            "news_type",
            "slug",
            "object_id",
            "title",
            "image",
            "creator",
            "description",
            "news",
            "publish_date",
            "views",
            "likes",
            "comments_count",
            "hash_tags",
        )
Ejemplo n.º 10
0
class MediaFolderSerializer(serializers.ModelSerializer):
    show_media = ChoiceDisplayField(choices=AccessChoices.ACCESS)

    class Meta:
        model = MediaFolder
        fields = ("pk", "name", "show_media", "creator")
Ejemplo n.º 11
0
class ProfileSerializer(UserSerializer):
    approver = UserSerializer()

    friends = UserSerializer(many=True)
    online_friends = UserSerializer(many=True)

    role = ChoiceDisplayField(choices=User.ROLES)
    gender = ChoiceDisplayField(choices=User.GENDERS)
    relationship_formats = ChoiceDisplayField(choices=User.FORMATS)
    relationship_themes = ChoiceDisplayField(choices=ThemeChoices.THEMES)

    phone = serializers.SerializerMethodField()
    skype = serializers.SerializerMethodField()

    chat = serializers.SerializerMethodField()
    request = serializers.SerializerMethodField()

    def get_chat(self, obj):
        user = self.context["request"].user
        if user == obj:
            return
        chat = Chat.objects.user_chats(user).filter(
            chat_type=Chat.TYPE_CONVERSATION, users=obj).first()
        if chat:
            return chat.pk

    def get_request(self, obj):
        user = self.context["request"].user
        request = obj.requests.filter(user=user).first()
        if request:
            return request.pk

    def get_phone(self, obj):
        user = self.context["request"].user
        if user.pk == obj.pk or obj.friends.filter(pk=user.pk).exists():
            return obj.phone

    def get_skype(self, obj):
        user = self.context["request"].user
        if user.pk == obj.pk or obj.friends.filter(pk=user.pk).exists():
            return obj.skype

    class Meta:
        model = User
        fields = (
            "pk",
            "slug",
            "email",
            "name",
            "phone",
            "skype",
            "avatar",
            "birthday",
            "birthday_second",
            "about",
            "online",
            "last_seen",
            "role",
            "is_real",
            "approver",
            "city",
            "friends",
            "online_friends",
            "gender",
            "relationship_formats",
            "relationship_themes",
            "social_links",
            "chat",
            "request",
            "black_list",
        )