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)
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})
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()
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)