feat: ship MVP itinerary optimization, weather, AI key prefs, and MCP tools

This commit is contained in:
2026-03-08 13:49:32 +00:00
parent 9eb0325c7a
commit 8c0637c518
25 changed files with 1888 additions and 511 deletions

View File

@@ -1,52 +1,100 @@
from django.urls import include, re_path, path
from django.contrib import admin
from django.views.generic import RedirectView, TemplateView
from users.views import IsRegistrationDisabled, PublicUserListView, PublicUserDetailView, UserMetadataView, UpdateUserMetadataView, EnabledSocialProvidersView, DisablePasswordAuthenticationView
from users.views import (
IsRegistrationDisabled,
PublicUserListView,
PublicUserDetailView,
UserMetadataView,
UpdateUserMetadataView,
EnabledSocialProvidersView,
DisablePasswordAuthenticationView,
)
from .views import get_csrf_token, get_public_url, serve_protected_media
from drf_yasg.views import get_schema_view
from drf_yasg import openapi
from mcp_server.views import MCPServerStreamableHttpView
from django.conf import settings
from django.utils.module_loading import import_string
schema_view = get_schema_view(
openapi.Info(
title='API Docs',
default_version='v1',
title="API Docs",
default_version="v1",
)
)
urlpatterns = [
path('api/', include('adventures.urls')),
path('api/', include('worldtravel.urls')),
path("api/", include("adventures.urls")),
path("api/", include("worldtravel.urls")),
path(
getattr(settings, "DJANGO_MCP_ENDPOINT", "api/mcp"),
MCPServerStreamableHttpView.as_view(
permission_classes=[
import_string(cls)
for cls in getattr(
settings,
"DJANGO_MCP_ENDPOINT_PERMISSION_CLASSES",
["rest_framework.permissions.IsAuthenticated"],
)
],
authentication_classes=[
import_string(cls)
for cls in getattr(
settings,
"DJANGO_MCP_AUTHENTICATION_CLASSES",
["rest_framework.authentication.TokenAuthentication"],
)
],
),
name="mcp_server_streamable_http_endpoint",
),
path("auth/", include("allauth.headless.urls")),
# Serve protected media files
re_path(r'^media/(?P<path>.*)$', serve_protected_media, name='serve-protected-media'),
path('auth/is-registration-disabled/', IsRegistrationDisabled.as_view(), name='is_registration_disabled'),
path('auth/users/', PublicUserListView.as_view(), name='public-user-list'),
path('auth/user/<str:username>/', PublicUserDetailView.as_view(), name='public-user-detail'),
path('auth/update-user/', UpdateUserMetadataView.as_view(), name='update-user-metadata'),
path('auth/user-metadata/', UserMetadataView.as_view(), name='user-metadata'),
path('auth/social-providers/', EnabledSocialProvidersView.as_view(), name='enabled-social-providers'),
path('auth/disable-password/', DisablePasswordAuthenticationView.as_view(), name='disable-password-authentication'),
path('csrf/', get_csrf_token, name='get_csrf_token'),
path('public-url/', get_public_url, name='get_public_url'),
path("invitations/", include('invitations.urls', namespace='invitations')),
path('', TemplateView.as_view(template_name='home.html')),
re_path(r'^admin/', admin.site.urls),
re_path(r'^accounts/profile/$', RedirectView.as_view(url='/',
permanent=True), name='profile-redirect'),
re_path(r'^docs/$', schema_view.with_ui('swagger',
cache_timeout=0), name='api_docs'),
re_path(
r"^media/(?P<path>.*)$", serve_protected_media, name="serve-protected-media"
),
path(
"auth/is-registration-disabled/",
IsRegistrationDisabled.as_view(),
name="is_registration_disabled",
),
path("auth/users/", PublicUserListView.as_view(), name="public-user-list"),
path(
"auth/user/<str:username>/",
PublicUserDetailView.as_view(),
name="public-user-detail",
),
path(
"auth/update-user/",
UpdateUserMetadataView.as_view(),
name="update-user-metadata",
),
path("auth/user-metadata/", UserMetadataView.as_view(), name="user-metadata"),
path(
"auth/social-providers/",
EnabledSocialProvidersView.as_view(),
name="enabled-social-providers",
),
path(
"auth/disable-password/",
DisablePasswordAuthenticationView.as_view(),
name="disable-password-authentication",
),
path("csrf/", get_csrf_token, name="get_csrf_token"),
path("public-url/", get_public_url, name="get_public_url"),
path("invitations/", include("invitations.urls", namespace="invitations")),
path("", TemplateView.as_view(template_name="home.html")),
re_path(r"^admin/", admin.site.urls),
re_path(
r"^accounts/profile/$",
RedirectView.as_view(url="/", permanent=True),
name="profile-redirect",
),
re_path(
r"^docs/$", schema_view.with_ui("swagger", cache_timeout=0), name="api_docs"
),
# path('auth/account-confirm-email/', VerifyEmailView.as_view(), name='account_email_verification_sent'),
path("accounts/", include("allauth.urls")),
path("api/integrations/", include("integrations.urls")),
# Include the API endpoints:
]
# Include the API endpoints:
]