Есть функция, которая сохраняет файл. С файловым именем практически никаких манипуляций не производилось. Мне нужно знать с какими символами могут вылезти подводные камни. Подскажите?
Вот собственно функция:
class UploadView(APIView):
    permission_classes = (IsAuthenticated,)
    parser_classes = (MultiPartParser, FormParser,)
    def post(self, request, format=None):
        book = request.FILES['file']
        directory = os.path.join(settings.MEDIA_ROOT, 'books')
        os.makedirs(directory, exist_ok=True)
        filename = str(book)
        files = [f for f in os.listdir(directory) if os.path.isfile(os.path.join(directory, f))]
        i = 2
        while True:
            if filename in files:
                p = str(book).rpartition('.')
                filename = '{}_{}.{}'.format(p[0], i, p[2])
                i += 1
            else:
                break
        filename = os.path.join(directory, filename)
        with open(filename, 'wb+') as file:
            for chunk in book:
                file.write(chunk)
        return Response(status=status.HTTP_201_CREATED)



