def get(self, request, format=None): now = datetime.datetime.now() compared_time = now - datetime.timedelta(days=2) file = File.objects.filter(user=self.request.user, modified_date__gte=compared_time) serializer = FileSerializer(file, many=True) return Response(serializer.data, status=status.HTTP_200_OK)
class EntryMinimalSerializer(serializers.ModelSerializer): size = serializers.SerializerMethodField() tags = TagMinimalSerializer(Tag, many=True, read_only=True, required=False) people = PersonMinimalSerializer(Person, many=True, read_only=True, required=False) EntryFiles = FileSerializer(File, many=True, read_only=True, required=False) class Meta: model = Entry fields = '__all__' def get_size(self, obj): return get_obj_size(obj)
class PostSerializer(serializers.HyperlinkedModelSerializer): user = serializers.PrimaryKeyRelatedField( read_only=True, default=serializers.CurrentUserDefault()) category = serializers.SlugRelatedField(slug_field='name', queryset=Category.objects.all()) image = serializers.ListField(child=FileSerializer()) url = serializers.HyperlinkedIdentityField(view_name='app:posts-detail', lookup_field='slug') permission_classes = [IsAuthenticated] # comment = CommentSerializer(many=True) visited = serializers.SerializerMethodField() class Meta: model = Post fields = ('id', 'title', 'body', 'slug', 'image', 'user', 'draft', 'publish', 'category', 'url', 'visited') read_only_fields = ('id', 'slug', 'publish', 'url', 'visited') write_only_fields = ('title', 'body', 'image', 'draft', 'user') lookup_field = 'slug' def create(self, validated_data): image = validated_data.pop('image') post = Post.objects.create(**validated_data) for img in image: photo = File.objects.create(name=img.name, filename=img, mime=img.content_type) post.image.add(photo) return post # def get_comment(self, obj): # result = [] # for comment in obj.comment_set.all()[:5]: # obj = dict() # obj['id'] = comment.id # obj['body'] = comment.body # print (comment.parent) # obj['parent'] = comment.parent # result.append(obj) # return result def get_visited(self, obj): return PostVisited.objects.filter(post=obj.id).count() def add_visited(self): try: visited = PostVisited(user_id=self.data["user"]["id"], post_id=self.data["id"]) visited.save() return True except Exception as e: return False
def create(self, request, *args, **kwargs): new_data = request.data.dict() file_name = request.data['file_name'] is_shared = request.data.get('is_shared', False) is_starred = request.data.get('is_starred', False) file = request.data['file'] new_data['file_name'] = file_name new_data['is_shared'] = is_shared new_data['is_starred'] = is_starred new_data['file'] = file new_data['user'] = User.objects.get(username=self.request.user).id new_query_dict = QueryDict('', mutable=True) new_query_dict.update(new_data) file_serializer = FileSerializer(data=new_query_dict) if file_serializer.is_valid(): file_serializer.save() return Response(file_serializer.data, status=status.HTTP_201_CREATED) else: return Response(file_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class EntryMinimalSerializer(serializers.ModelSerializer): tags = TagMinimalSerializer(Tag, many=True, read_only=True, required=False) people = PersonMinimalSerializer(Person, many=True, read_only=True, required=False) EntryFiles = FileSerializer(File, many=True, read_only=True, required=False) class Meta: model = Entry fields = '__all__'
def get(self, request, format=None): files = File.objects.filter(user=self.request.user, is_starred=True) serializer = FileSerializer(files, many=True) return Response(serializer.data, status=status.HTTP_200_OK)