0

i'm using DRF+openapi-python-client for my project. i have 2 question for now.

  1. openapi-python-client generate does not accept url for generating client
  2. generated client fileas to serialize model having write-only file field

Thanx in advance!

  1. Launching my server with manage.py script works ok, i can get my openapi schema on http://127.0.0.1:8000/control_center/schema/?format=openapi-json with my browser. On the same time,command openapi-python-client generate --url http://localhost:8000/control_center/schema?format=openapi-json gives me
Traceback (most recent call last):

  File "pydantic/main.py", line 522, in pydantic.main.BaseModel.parse_obj

TypeError: 'NoneType' object is not iterable

What am i missing? workaround for me is to copy schema from browser to json and run openapi-python-client generate --path schema.json

  1. i have a model StorageFile with write-only file field. In GET responses this field is ommited,getting file content is another endpoint. Getting storage file details with browser or with manual request is ok,but using generated client like
file_details: models.StorageFile = retrieve_storage_file.sync(id=file.id,
                                                              client=self.api_client)

gives me error

Error
Traceback (most recent call last):
  File ".../api_client_tests/test_storage_files_api.py", line 18, in test_can_get_storage_file_details
    file_details: models.StorageFile = retrieve_storage_file.sync(id=file.id,
  File ".../api_client/control_center_client/control_center_client/api/control_center/retrieve_storage_file.py", line 86, in sync
    return sync_detailed(
  File ".../api_client/control_center_client/control_center_client/api/control_center/retrieve_storage_file.py", line 70, in sync_detailed
    return _build_response(response=response)
  File ".../api_client/control_center_client/control_center_client/api/control_center/retrieve_storage_file.py", line 43, in _build_response
    parsed=_parse_response(response=response),
  File ".../api_client/control_center_client/control_center_client/api/control_center/retrieve_storage_file.py", line 32, in _parse_response
    response_200 = StorageFile.from_dict(response.json())
  File ".../api_client/control_center_client/control_center_client/models/storage_file.py", line 128, in from_dict
    file = File(payload=BytesIO(d.pop("file")))
KeyError: 'file'

In schem.json this field is described as

"file": {
  "type": "string",
  "format": "binary",
  "writeOnly": true
}

What am i missing here?

Nick
  • 1

0 Answers0