Beispiel #1
0
        fields = 'id', 'target_type', 'target_id'


class LikeViewSet(viewsets.ModelViewSet, QueryParamApiView):
    queryset = Like.objects.all()
    serializer_class = LikeSerializer
    permission_classes = permissions.IsAuthenticated,

    query_params = {
        'target_type':
        'target_content_type__model',  # maybe 'post' or 'friendship'
        'target': 'target_id'
    }

    def get_queryset(self):
        qs = super(LikeViewSet, self).get_queryset()
        post_id = self.request.query_params.get('post')
        if post_id is not None:
            qs = qs.filter(
                Q(target_content_type=ContentType.objects.get_for_model(Post))
                & Q(target_id=post_id))
        return qs

    def perform_create(self, serializer):
        serializer.save(
            author=self.request.user,
            target_content_type=ContentType.objects.get_for_model(Post))


register('likes', LikeViewSet)
from rest_framework import serializers, viewsets, permissions
from .models import Friendship

from application.api import register


class FriendshipSerializer(serializers.ModelSerializer):
    class Meta:
        model = Friendship
        fields = 'recipient', 'approved'


class FriendshipViewSet(viewsets.ModelViewSet):
    queryset = Friendship.objects.all()
    serializer_class = FriendshipSerializer
    permission_classes = permissions.IsAuthenticated,

    def perform_create(self, serializer):
        serializer.save(author=self.request.user)


register('friendships', FriendshipViewSet)
            "first_name",
            "last_name",
            "email",
            "is_staff",
            "is_active",
            "date_joined",
            "groups",
            "user_permissions",
            "achievements",
        )
        read_only_fields = ("password", "last_login", "is_superuser",
                            "is_staff", "is_active", "date_joined", "groups",
                            "user_permissions")


class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    permission_classes = permissions.IsAuthenticated,

    def get_serializer_class(self):
        if self.suffix == u'List':
            return UserSerializer

        if self.get_object() == self.request.user:
            return FullUserSerializer
        else:
            return UserSerializer


register('users', UserViewSet)
Beispiel #4
0
from core.api import UserSerializer

from application.api import register


class PostSerializer(serializers.ModelSerializer):
    author = UserSerializer(read_only=True)

    class Meta:
        model = Post
        fields = 'id', 'text', 'title'


class PostViewSet(viewsets.ModelViewSet):
    queryset = Post.objects.all()
    serializer_class = PostSerializer
    permission_classes = permissions.IsAuthenticated,

    def get_queryset(self):
        qs = super(PostViewSet, self).get_queryset()
        if self.request.query_params.get('user'):
            qs = qs.filter(author_id=self.request.query_params.get('user'))
        return qs

    def perform_create(self, serializer):
        serializer.save(author=self.request.user)


register('posts', PostViewSet)
Beispiel #5
0
    query_params = {'id': 'id', 'chat': 'chat_id', 'author': 'author_id'}

    def get_queryset(self):
        qs = super(MessageViewSet, self).get_queryset()
        qs = qs.filter(
            Q(author=self.request.user)
            | Q(chat__participants=self.request.user))
        qs = qs.distinct()
        return qs

    def perform_create(self, serializer):
        serializer.save(author=self.request.user)


register('messages', MessageViewSet)


class ChatSerializer(serializers.ModelSerializer):
    author = UserSerializer(read_only=True)
    last_message = serializers.SerializerMethodField()

    def get_last_message(self, obj):
        # print(obj.messages.all())
        try:
            return MessageSerializer(obj.messages.latest('created')).data
        except:
            return None

    class Meta:
        model = Chat
Beispiel #6
0
from rest_framework import serializers, viewsets, permissions
from rest_framework.reverse import reverse

from .models import CreationEvent

from application.api import register


class EventSerializer(serializers.ModelSerializer):
    created_object = serializers.SerializerMethodField()

    def get_created_object(self, obj):
        viewname = '%s-detail' % obj.object_content_type.name
        return reverse(viewname, (obj.object_id, ),
                       request=self.context['request'])

    class Meta:
        model = CreationEvent
        fields = 'id', 'created_object'


class EventViewSet(viewsets.ModelViewSet):
    queryset = CreationEvent.objects.all()
    serializer_class = EventSerializer
    permission_classes = permissions.IsAuthenticated,
    http_method_names = ['get']


register('events', EventViewSet)