Open mildewey opened 5 years ago
The tileset API may disallow use of the slash and dot characters (cf. https://www.django-rest-framework.org/api-guide/routers/). This behavior could perhaps be changed by adding (untested):
lookup_value_regex = '[^.]+'
or similar to the TilesetsViewSet
class (cf. https://github.com/higlass/higlass-server/blob/develop/tilesets/views.py#L686).
A question might be whether this change in parsing would be a good thing to do, and I don't know the answer to that. Django API calls can use a file extension to specify MIME type (which uses a dot character), so playing with how the API parses URL slugs may not be desirable. Or there may be no side effects, as far as current and future API calls to tilesets are concerned. This is probably a better question for @pkerpedjiev. A typical UUID that follows specification will not contain period or forward slash characters and the API does not appear to expect to parse a slug and ignore those characters.
As workarounds until more discussion can be happen on that, you might replace dots with underscores or other delimiters in your custom UUIDs when ingesting tileset files, or perhaps use the management script to handle assets with these non-spec UUIDs, e.g.:
$ python manage.py delete_tileset --uuid="sim_02_sorted.ballele"
This modifies the underlying Django database through a different process, which does not involve parsing a REST request.
Discussion in this PR may be related: https://github.com/higlass/higlass-server/pull/85
Given a tileset with uuid sim_02_sorted.ballele
The following call to the rest interface returns an error and does not delete the tileset: DELETE .../api/v1/tilesets/sim_02_sorted.ballele