from django.conf import settings as djsettings from django.contrib import admin as djadmin from django.urls import path, re_path from activities.views import compose, explore, follows, posts, search, timelines from api.views import api_router, oauth from core import views as core from mediaproxy import views as mediaproxy from stator import views as stator from users.views import activitypub, admin, auth, identity, report, settings from django.conf.urls import include from django.views.generic.base import RedirectView urlpatterns = [ path("", core.homepage), path("manifest.json", core.AppManifest.as_view()), # Activity views path("notifications/", timelines.Notifications.as_view(), name="notifications"), path("local/", timelines.Local.as_view(), name="local"), path("federated/", timelines.Federated.as_view(), name="federated"), path("search/", search.Search.as_view(), name="search"), path("tags//", timelines.Tag.as_view(), name="tag"), path("explore/", explore.Explore.as_view(), name="explore"), path("explore/tags/", explore.ExploreTag.as_view(), name="explore-tag"), path( "follows/", follows.Follows.as_view(), name="follows", ), # Settings views path( "settings/", settings.SettingsRoot.as_view(), name="settings", ), path( "settings/security/", settings.SecurityPage.as_view(), name="settings_security", ), path( "settings/profile/", settings.ProfilePage.as_view(), name="settings_profile", ), path( "settings/interface/", settings.InterfacePage.as_view(), name="settings_interface", ), path( "admin/", admin.AdminRoot.as_view(), name="admin", ), path( "admin/basic/", admin.BasicSettings.as_view(), name="admin_basic", ), path( "admin/tuning/", admin.TuningSettings.as_view(), name="admin_tuning", ), path( "admin/policies/", admin.PoliciesSettings.as_view(), name="admin_policies", ), path( "admin/domains/", admin.Domains.as_view(), name="admin_domains", ), path( "admin/domains/create/", admin.DomainCreate.as_view(), name="admin_domains_create", ), path( "admin/domains//", admin.DomainEdit.as_view(), ), path( "admin/domains//delete/", admin.DomainDelete.as_view(), ), path( "admin/federation/", admin.FederationRoot.as_view(), name="admin_federation", ), path( "admin/federation//", admin.FederationEdit.as_view(), name="admin_federation_edit", ), path( "admin/users/", admin.UsersRoot.as_view(), name="admin_users", ), path( "admin/users//", admin.UserEdit.as_view(), name="admin_user_edit", ), path( "admin/identities/", admin.IdentitiesRoot.as_view(), name="admin_identities", ), path( "admin/identities//", admin.IdentityEdit.as_view(), name="admin_identity_edit", ), path( "admin/reports/", admin.ReportsRoot.as_view(), name="admin_reports", ), path( "admin/reports//", admin.ReportView.as_view(), name="admin_report_view", ), path( "admin/invites/", admin.Invites.as_view(), name="admin_invites", ), path( "admin/hashtags/", admin.Hashtags.as_view(), name="admin_hashtags", ), path( "admin/hashtags/create/", admin.HashtagCreate.as_view(), name="admin_hashtags_create", ), path( "admin/hashtags//", admin.HashtagEdit.as_view(), ), path( "admin/hashtags//delete/", admin.HashtagDelete.as_view(), ), path( "admin/stator/", admin.Stator.as_view(), name="admin_stator", ), # Identity views path("@/", identity.ViewIdentity.as_view()), path("@/inbox/", activitypub.Inbox.as_view()), path("@/action/", identity.ActionIdentity.as_view()), path("@/rss/", identity.IdentityFeed()), path("@/report/", report.SubmitReport.as_view()), # Posts path("compose/", compose.Compose.as_view(), name="compose"), path( "compose/image_upload/", compose.ImageUpload.as_view(), name="compose_image_upload", ), path("@/posts//", posts.Individual.as_view()), path("@/posts//like/", posts.Like.as_view()), path("@/posts//unlike/", posts.Like.as_view(undo=True)), path("@/posts//boost/", posts.Boost.as_view()), path("@/posts//unboost/", posts.Boost.as_view(undo=True)), path("@/posts//delete/", posts.Delete.as_view()), path("@/posts//report/", report.SubmitReport.as_view()), path("@/posts//edit/", compose.Compose.as_view()), # Authentication path("auth/login/", RedirectView.as_view(url='/saml2/login', permanent=False), name='login'), path("auth/logout/", auth.Logout.as_view(), name="logout"), path("auth/signup/", auth.Signup.as_view(), name="signup"), path("auth/reset/", auth.TriggerReset.as_view(), name="trigger_reset"), path("auth/reset//", auth.PerformReset.as_view(), name="password_reset"), # Identity selection path("@/activate/", identity.ActivateIdentity.as_view()), path("identity/select/", identity.SelectIdentity.as_view()), path("identity/create/", identity.CreateIdentity.as_view()), # Flat pages path( "about/", core.FlatPage.as_view(title="About This Server", config_option="site_about"), name="about", ), path( "pages/privacy/", core.FlatPage.as_view(title="Privacy Policy", config_option="policy_privacy"), name="privacy", ), path( "pages/terms/", core.FlatPage.as_view(title="Terms of Service", config_option="policy_terms"), name="terms", ), path( "pages/rules/", core.FlatPage.as_view(title="Server Rules", config_option="policy_rules"), name="rules", ), # Media/image proxy path( "proxy/identity_icon//", mediaproxy.IdentityIconCacheView.as_view(), name="proxy_identity_icon", ), path( "proxy/identity_image//", mediaproxy.IdentityImageCacheView.as_view(), name="proxy_identity_image", ), path( "proxy/post_attachment//", mediaproxy.PostAttachmentCacheView.as_view(), name="proxy_post_attachment", ), path( "proxy/emoji//", mediaproxy.EmojiCacheView.as_view(), name="proxy_emoji", ), # Well-known endpoints and system actor path(".well-known/webfinger", activitypub.Webfinger.as_view()), path(".well-known/host-meta", activitypub.HostMeta.as_view()), path(".well-known/nodeinfo", activitypub.NodeInfo.as_view()), path("nodeinfo/2.0/", activitypub.NodeInfo2.as_view()), path("actor/", activitypub.SystemActorView.as_view()), path("actor/inbox/", activitypub.Inbox.as_view()), path("inbox/", activitypub.Inbox.as_view(), name="shared_inbox"), # API/Oauth path("api/", api_router.urls), path("oauth/authorize", oauth.AuthorizationView.as_view()), path("oauth/token", oauth.TokenView.as_view()), path("oauth/revoke_token", oauth.RevokeTokenView.as_view()), # Stator path(".stator/", stator.RequestRunner.as_view()), # Django admin path("djadmin/", djadmin.site.urls), # Media files re_path( r"^media/(?P.*)$", core.custom_static_serve, kwargs={"document_root": djsettings.MEDIA_ROOT}, ), path('saml2/', include('djangosaml2.urls')), ]