forked from zulip/zulip
-
Notifications
You must be signed in to change notification settings - Fork 0
/
dev_urls.py
136 lines (126 loc) · 4.86 KB
/
dev_urls.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
import os
from urllib.parse import urlsplit
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.staticfiles.views import serve as staticfiles_serve
from django.http.request import HttpRequest
from django.http.response import FileResponse
from django.urls import path
from django.views.generic import TemplateView
from django.views.static import serve
from zerver.lib.rest import rest_path
from zerver.views.auth import config_error, login_page
from zerver.views.development.cache import remove_caches
from zerver.views.development.camo import handle_camo_url
from zerver.views.development.dev_login import (
api_dev_fetch_api_key,
api_dev_list_users,
dev_direct_login,
)
from zerver.views.development.email_log import clear_emails, email_page, generate_all_emails
from zerver.views.development.integrations import (
check_send_webhook_fixture_message,
dev_panel,
get_fixtures,
send_all_webhook_fixture_messages,
)
from zerver.views.development.registration import (
confirmation_key,
register_demo_development_realm,
register_development_realm,
register_development_user,
)
from zerver.views.development.user_groups import dev_update_subgroups
# These URLs are available only in the development environment
use_prod_static = not settings.DEBUG
urls = [
# Serve useful development environment resources (docs, coverage reports, etc.)
path(
"coverage/<path:path>",
serve,
{"document_root": os.path.join(settings.DEPLOY_ROOT, "var/coverage"), "show_indexes": True},
),
path(
"node-coverage/<path:path>",
serve,
{
"document_root": os.path.join(settings.DEPLOY_ROOT, "var/node-coverage/lcov-report"),
"show_indexes": True,
},
),
path(
"docs/<path:path>",
serve,
{"document_root": os.path.join(settings.DEPLOY_ROOT, "docs/_build/html")},
),
# The special no-password login endpoint for development
path(
"devlogin/",
login_page,
{"template_name": "zerver/development/dev_login.html"},
name="login_page",
),
# Page for testing email templates
path("emails/", email_page),
path("emails/generate/", generate_all_emails),
path("emails/clear/", clear_emails),
# Listing of useful URLs and various tools for development
path("devtools/", TemplateView.as_view(template_name="zerver/development/dev_tools.html")),
# Register new user and realm
path("devtools/register_user/", register_development_user, name="register_dev_user"),
path("devtools/register_realm/", register_development_realm, name="register_dev_realm"),
path(
"devtools/register_demo_realm/",
register_demo_development_realm,
name="register_demo_dev_realm",
),
# Have easy access for error pages
path("errors/404/", TemplateView.as_view(template_name="404.html")),
path("errors/5xx/", TemplateView.as_view(template_name="500.html")),
# Add a convenient way to generate webhook messages from fixtures.
path("devtools/integrations/", dev_panel),
path(
"devtools/integrations/check_send_webhook_fixture_message",
check_send_webhook_fixture_message,
),
path(
"devtools/integrations/send_all_webhook_fixture_messages", send_all_webhook_fixture_messages
),
path("devtools/integrations/<integration_name>/fixtures", get_fixtures),
path("config-error/<error_category_name>", config_error, name="config_error"),
path("config-error/remoteuser/<error_category_name>", config_error),
# Special endpoint to remove all the server-side caches.
path("flush_caches", remove_caches),
# Redirect camo URLs for development
path("external_content/<digest>/<received_url>", handle_camo_url),
]
testing_urls = [
rest_path(
"testing/user_groups/<int:user_group_id>/subgroups",
POST=(dev_update_subgroups, {"intentionally_undocumented"}),
),
]
urls += testing_urls
v1_api_mobile_patterns = [
# This is for the signing in through the devAuthBackEnd on mobile apps.
path("dev_fetch_api_key", api_dev_fetch_api_key),
# This is for fetching the emails of the admins and the users.
path("dev_list_users", api_dev_list_users),
]
# Serve static assets via the Django server
if use_prod_static:
urls += [
path("static/<path:path>", serve, {"document_root": settings.STATIC_ROOT}),
]
else: # nocoverage
def serve_static(request: HttpRequest, path: str) -> FileResponse:
response = staticfiles_serve(request, path)
response["Access-Control-Allow-Origin"] = "*"
return response
assert settings.STATIC_URL is not None
urls += static(urlsplit(settings.STATIC_URL).path, view=serve_static)
i18n_urls = [
path("accounts/login/local/", dev_direct_login, name="login-local"),
path("confirmation_key/", confirmation_key),
]
urls += i18n_urls