Ejemplo n.º 1
0
    def update(self, request, *args, **kwargs):
        partial = kwargs.pop('partial', False)
        instance = self.get_object()

        request.data['extra'] = '{"author":' + str(request.user.id) + '}'
        # request.data['extra'] = '{"author":2}'

        if len(request.FILES) != 0:
            images_url = save_uploaded_images(request,
                                              'found_notice_images',
                                              instance_id=instance.id)
            if instance.images is not None:
                images_url += instance.images
            request.data['images'] = json.dumps({"url": images_url})

        serializer = self.get_serializer(instance,
                                         data=request.data,
                                         partial=partial)
        serializer.is_valid(raise_exception=True)
        self.perform_update(serializer)

        if getattr(instance, '_prefetched_objects_cache', None):
            # If 'prefetch_related' has been applied to a queryset, we need to
            # forcibly invalidate the prefetch cache on the instance.
            instance._prefetched_objects_cache = {}

        return Response(serializer.data)
Ejemplo n.º 2
0
    def upload_image(self, request):
        if 'id' in request.data:
            instance_id = request.data['id']
        else:
            id_max = LostNotice.objects.all().aggregate(Max('id'))['id__max']
            instance_id = id_max + 1 if id_max else 1

        result = save_uploaded_images(request,
                                      'lost_notice_images',
                                      instance_id=instance_id)
        if result:
            return Response({'url': result})
Ejemplo n.º 3
0
    def upload_avatar(self, request):
        if 'id' in request.data:
            instance_id = request.data['id']
        else:
            id_max = User.objects.all().aggregate(Max('id'))['id__max']
            instance_id = id_max + 1 if id_max else 1

        result = save_uploaded_images(request,
                                      'user_avatars',
                                      instance_id=instance_id)
        if result:
            return Response({'url': result})
        else:
            return HttpResponseBadRequest()
Ejemplo n.º 4
0
    def create(self, request, *args, **kwargs):
        request.POST._mutable = True

        request.data['extra'] = '{"author":' + str(request.user.id) + '}'
        request.POST._mutable = True

        if len(request.FILES) != 0:
            id_max = FoundNotice.objects.all().aggregate(Max('id'))['id__max']
            instance_id = id_max + 1 if id_max else 1
            images_url = save_uploaded_images(request,
                                              'found_notice_images',
                                              instance_id=instance_id)
            request.data['images'] = json.dumps({"url": images_url})

        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)

        self.perform_create(serializer)
        headers = self.get_success_headers(serializer.data)
        return Response(serializer.data,
                        status=status.HTTP_201_CREATED,
                        headers=headers)