def post_audiobook(self, request, **kwargs): index = int(request.POST['part_index']) parts_count = int(request.POST['parts_count']) media_type = request.POST['type'].lower() source_sha1 = request.POST.get('source_sha1') name = request.POST.get('name', '') part_name = request.POST.get('part_name', '') _rest, slug = request.POST['book'].rstrip('/').rsplit('/', 1) book = Book.objects.get(slug=slug) try: assert source_sha1 bm = book.media.get(type=media_type, source_sha1=source_sha1) except (AssertionError, BookMedia.DoesNotExist): bm = BookMedia(book=book, type=media_type) bm.name = name bm.part_name = part_name bm.index = index bm.file.save(None, request.data['file'], save=False) bm.save(parts_count=parts_count) return Response({}, status=status.HTTP_201_CREATED)