Ejemplo n.º 1
0
 def put(self, request, pk, format=None):
     community = self.get_object(pk)
     serializer = CommunitySerializer(community, data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 2
0
def makeCommunity(request):
    if request.method == 'POST':
        serializer = CommunitySerializer(data=request.data)
        # logger.error(serializer.is_valid())
        # logger.error(serializer.data)
        # logger.error(serializer.errors)
        if serializer.is_valid():
            logger.error("is valid")
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.data)
Ejemplo n.º 3
0
def communityDetails(request, name):
    """
    Retrieve, update or get a community by name.
    """
    try:
        community = Community.objects.get(name=name)
        serializer = CommunitySerializer(community,context={'request': request})
        return Response(serializer.data)
    except Community.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)
Ejemplo n.º 4
0
def createCommunity(request):
    if request.method == 'POST':
        serializer = CommunitySerializer(data=request.data)
        serializer.is_valid()
        try:
            testCommunity = Community.objects.get(name=list(serializer.validated_data.values())[0])
            return Response(status=status.HTTP_400_BAD_REQUEST)
        except Exception as e:
            if serializer.is_valid():
                serializer.save()
                return Response(serializer.data)
            else:
                return Response(status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 5
0
def communityDetails(request, name):
    """
    Retrieve, update or get a community by name.
    """
    if request.method == 'GET':
        try:
            community = Community.objects.get(name=name)
            serializer = CommunitySerializer(community,context={'request': request})
            return Response(serializer.data)
        except Community.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)

    elif request.method == 'PUT':
        try:
            community = Community.objects.get(name=name)
            serializer = CommunitySerializer(community, data=request.data)
            serializer.is_valid()
            if serializer.is_valid():
                serializer.update(community, request.data)
                return Response(serializer.data)
            logger.error(serializer.errors)
            return Response(status=status.HTTP_400_BAD_REQUEST)
        except Community.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)
Ejemplo n.º 6
0
class PostFullSerializer(PostShortSerializer):
    community_id = serializers.IntegerField(required=False, write_only=True)
    community = CommunitySerializer(read_only=True)
    documents_uploaded = serializers.ListField(child=serializers.FileField(),
                                               required=False,
                                               write_only=True)
    medias = PostMediaSerializer(read_only=True, many=True)
    tag_names = serializers.ListField(child=serializers.CharField(),
                                      required=False,
                                      write_only=True)
    tags = PostTagMapSerializer(many=True, read_only=True)

    class Meta(PostShortSerializer.Meta):
        fields = PostShortSerializer.Meta.fields + (
            'text', 'documents_uploaded', 'medias', 'created_at', 'updated_at',
            'community_id', 'community', 'tags', 'tag_names')
        read_only_fields = ('created_at', 'updated_at')

    def create(self, validated_data):
        with transaction.atomic():
            documents = []
            tag_names = []
            if 'documents_uploaded' in validated_data:
                documents = validated_data.pop('documents_uploaded')
            if 'tag_names' in validated_data:
                tag_names = validated_data.pop('tag_names')
            post = Post(**validated_data)
            post.save()
            PostMedia.objects.bulk_create(
                [PostMedia(post=post, file=doc) for doc in documents])
            tags = []
            for tag in tag_names:
                try:
                    t = Tag.objects.get(name=tag)
                except Tag.DoesNotExist:
                    t = Tag.objects.create(name=tag)
                tags.append(t)
            PostTagMap.objects.bulk_create(
                [PostTagMap(post=post, tag=tag) for tag in tags])
            return post
Ejemplo n.º 7
0
def usersCommunities(request, username):
    user = User.objects.get(username=username)
    communities = Community.objects.all()
    communities = communities.filter(users__id__exact=user.id)
    serializer = CommunitySerializer(communities, many=True)
    return Response(serializer.data)
Ejemplo n.º 8
0
def allCommunities(request):
    communities = Community.objects.all()
    serializer = CommunitySerializer(communities, many=True)
    return Response(serializer.data)
Ejemplo n.º 9
0
 def get(self, request, pk, format=None):
     community = self.get_object(pk)
     serializer = CommunitySerializer(community)
     return Response(serializer.data)