"""app URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/4.0/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import include, path
from django.views.generic import TemplateView

# Threshold API stuff
from core.api.views.threshold import ThresholdChans, ThresholdOnline, ThresholdUsers
from core.views import Billing, Cancel, Home, Order, Portal, Signup
from core.views.callbacks import Callback
from core.views.manage.threshold.irc import (
    ThresholdIRCNetworkChannels,
    ThresholdIRCNetworkInfo,
    ThresholdIRCNetworkInfoEdit,
    ThresholdIRCNetworkRelays,
    ThresholdIRCNetworkRelayStatus,
    ThresholdIRCNetworks,
    ThresholdIRCStats,
)

# Management stuff
from core.views.manage.threshold.threshold import (
    ThresholdIRCNetwork,
    ThresholdIRCOverview,
)

# Main tool pages
from core.views.ui.drilldown import Drilldown, DrilldownSearch, ThresholdInfoModal
from core.views.ui.insights import (
    Insights,
    InsightsChannels,
    InsightsInfoModal,
    InsightsMeta,
    InsightsNicks,
    InsightsSearch,
)

urlpatterns = [
    path("", Home.as_view(), name="home"),
    path("callback", Callback.as_view(), name="callback"),
    path("billing/", Billing.as_view(), name="billing"),
    path("order/<str:plan_name>/", Order.as_view(), name="order"),
    path(
        "cancel_subscription/<str:plan_name>/",
        Cancel.as_view(),
        name="cancel_subscription",
    ),
    path(
        "success/", TemplateView.as_view(template_name="success.html"), name="success"
    ),
    path("cancel/", TemplateView.as_view(template_name="cancel.html"), name="cancel"),
    path("portal", Portal.as_view(), name="portal"),
    path("admin/", admin.site.urls),
    path("accounts/", include("django.contrib.auth.urls")),
    path("accounts/signup/", Signup.as_view(), name="signup"),
    ##
    path("ui/drilldown/", Drilldown.as_view(), name="drilldown"),
    path("ui/drilldown/modal/", ThresholdInfoModal.as_view(), name="modal_drilldown"),
    path("ui/drilldown/search/", DrilldownSearch.as_view(), name="search_drilldown"),
    ##
    path("ui/insights/", Insights.as_view(), name="insights"),
    path("ui/insights/search/", InsightsSearch.as_view(), name="search_insights"),
    path("ui/insights/channels/", InsightsChannels.as_view(), name="chans_insights"),
    path("ui/insights/nicks/", InsightsNicks.as_view(), name="nicks_insights"),
    path("ui/insights/meta/", InsightsMeta.as_view(), name="meta_insights"),
    path("ui/insights/modal/", InsightsInfoModal.as_view(), name="modal_insights"),
    ##
    path(
        "manage/threshold/irc/overview/",
        ThresholdIRCOverview.as_view(),
        name="threshold_irc_overview",
    ),
    path(
        "manage/threshold/irc/overview/stats/",
        ThresholdIRCStats.as_view(),
        name="threshold_irc_stats",
    ),
    path(
        "manage/threshold/irc/overview/networks/",
        ThresholdIRCNetworks.as_view(),
        name="threshold_irc_networks",
    ),
    path(
        "manage/threshold/irc/network/<str:net>/",
        ThresholdIRCNetwork.as_view(),
        name="threshold_irc_network",
    ),
    path(
        "manage/threshold/irc/network/<str:net>/info/",
        ThresholdIRCNetworkInfo.as_view(),
        name="threshold_irc_network_info",
    ),
    path(
        "manage/threshold/irc/network/<str:net>/info/edit/",
        ThresholdIRCNetworkInfoEdit.as_view(),
        name="threshold_irc_network_info_edit",
    ),
    path(
        "manage/threshold/irc/network/<str:net>/edit/",
        ThresholdIRCNetworkInfoEdit.as_view(),
        name="threshold_irc_network_edit",
    ),
    path(
        "manage/threshold/irc/network/<str:net>/relays/",
        ThresholdIRCNetworkRelays.as_view(),
        name="threshold_irc_network_relays",
    ),
    path(
        "manage/threshold/irc/network/<str:net>/<int:num>/<int:status>/",
        ThresholdIRCNetworkRelayStatus.as_view(),
        name="threshold_irc_network_relay_status",
    ),
    path(
        "manage/threshold/irc/network/<str:net>/channels/",
        ThresholdIRCNetworkChannels.as_view(),
        name="threshold_irc_network_channels",
    ),
    path(
        "manage/threshold/irc/network/<str:net>/channel/<channel>/",
        ThresholdIRCNetworkChannels.as_view(),
        name="threshold_irc_network_channel",
    ),
    # No channel argument as we're gonna do a form
    path(
        "manage/threshold/irc/network/<str:net>/channel/",
        ThresholdIRCNetworkChannels.as_view(),
        name="threshold_irc_network_channel",
    ),
    ##
    path("api/chans/", ThresholdChans.as_view(), name="chans"),
    path("api/users/", ThresholdUsers.as_view(), name="users"),
    path("api/online/", ThresholdOnline.as_view(), name="online"),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
