Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Conversation

Vinno97
Copy link

@Vinno97 Vinno97 commented Sep 19, 2022

Added the option to run Doccano with a URL prefix instead of always running from the domain root. The prefix is configured by specifying a BASE_URL environment variable. This PR fixes #1878

To run Doccano under /doccano/, set BASE_URL to /doccano/:

export BASE_URL=/doccano/

When we now compile the front-end, all routes are prefixed with BASE_URL.

We also need to let Django know about our new prefix. This is done using the same BASE_URL environment variable but needs to be set during runtime. I could not find a clean method to configure them both during runtime.

Since such a configuration will most likely only be used in combination with a load balancer, I also added the option to set USE_X_FORWARDED_HOST using environment variables.

Note that I did not write any tests for this (yet), both because I am unsure how this should be done and because I would first like to know if this PR would be acceptable.

Added the option to run Doccano with a URL prefix instead of always
running from the domain root. The prefix is configured by specifying a
`BASE_URL` environment variable.

To run Doccano under `/doccano/`, set `BASE_URL` to '/doccano/':

```sh
export BASE_URL=/doccano/
```

When we now compile the front-end, all routes are prefixed with BASE_URL.

We also need to let Django know about our new prefix. This is done using
the same BASE_URL, but needs to be set during runtime. I could not find
a clean method to do them both during runtime.

Since such a configuration will most likely only be used in combination
with a load balancer, I also added the option to set
`USE_X_FORWARDED_HOST` using environment variables.
@Hironsan
Copy link
Member

Thanks!

Please write some test cases. After that, I'll merge this PR.

Note that these URLs should probably not be defined in the view anyways.
I patched them here because I am not familiar enough with the project to
fix this cleanly.
@Vinno97
Copy link
Author

Vinno97 commented Sep 20, 2022

Great, will do. Any tips about where to start for someone unfamiliar with the project (and Django in general)? I expect I should extend backend/api/tests/test_config.py?

@lyingcrow
Copy link

lyingcrow commented Apr 18, 2023

Still in progress? @Vinno97

@Vinno97
Copy link
Author

Vinno97 commented Jul 3, 2023

This hasn't been on my radar for quite a long time. The project I needed this fix for, was finished up a while ago. I'd be willing to write some tests for it, but I'm still equally unfamiliar with the project and Django. So some pointers will be needed

# User media files
MEDIA_ROOT = env("MEDIA_ROOT", path.join(BASE_DIR, "media"))
MEDIA_URL = "/media/"
MEDIA_URL = BASE_URL + "/media/"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BASE_URL + "media/" ?

Comment on lines +67 to +68
if settings.BASE_URL:
urlpatterns = [path(f'{settings.BASE_URL.strip("/")}/', include(urlpatterns))]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These lines seem to make the URL (e.g. http://127.0.0.1:8000/v1/projects) inaccessible. settings.BASE_URL is evaluated as True.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Deploy doccano in a subpath

3 participants

Morty Proxy This is a proxified and sanitized view of the page, visit original site.