from django.conf import settings
from django.conf.urls.static import static
from django.contrib.auth import views as auth_views
from django.urls import path

from .views.public import IndexView
from .views.secure.alert import (AlertCreateView, AlertJSONListView,
                                 AlertListView, AlertUpdateView)
from .views.secure.dashboard import AdminDashboardView, DashboardView
from .views.secure.institution import (InstitutionCreateView,
                                       InstitutionJSONListView,
                                       InstitutionUpdateView, InstitutionView)
from .views.secure.dataset import (DatasetCreateView,
                                       DatasetJSONListView,
                                       DatasetUpdateView, DatasetView)
from .views.secure.lab import (LabCreateView, LabJSONListView, LabUpdateView,
                               LabView)
from .views.secure.login_success import LoginSuccess
from .views.secure.settings import AdminSettingsView, change_password
from .views.secure.user_profile import (AdminUserView, ProfileUpdateView,
                                        UserCreateView, UserDeleteView,
                                        UserJSONListView, UserUpdateView)

# app_name = 'gas'
urlpatterns = [
    # Landing Pages
    path('', IndexView.as_view(), name='index'),
    path('secure/login-success/', LoginSuccess.as_view(), name="login-success"),
    path('secure/user/dashboard/', DashboardView.as_view(), name='dashboard'),
    path('secure/admin/dashboard/', AdminDashboardView.as_view(), name='admin.dashboard'),

    # Auth
    path('login', auth_views.LoginView.as_view(redirect_authenticated_user=True), {'template_name': 'portal/public/login.html'}, name='login'),
    path('logout/', auth_views.LogoutView.as_view(), name='logout'),
    path('secure/user/change_password/', change_password, name='change_password'),
    path('password_reset/', auth_views.PasswordResetView.as_view(), name='password_reset'),
    path('password_reset/done/', auth_views.PasswordResetDoneView.as_view(), name='password_reset_done'),
    path('reset/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
    path('reset/done/', auth_views.PasswordResetCompleteView.as_view(), name='password_reset_complete'),

    # Files

    # Users
    path('secure/my-profile/', ProfileUpdateView.as_view(), name='my-profile'),
    path('secure/admin/users/', AdminUserView.as_view(), name='admin.users'),
    path('secure/admin/users/list/json/', UserJSONListView.as_view(), name='admin.user-json-list'),
    path('secure/admin/users/create/', UserCreateView.as_view(), name="admin.user-create"),
    path('secure/admin/users/update/<int:pk>', UserUpdateView.as_view(), name="admin.user-update"),
    path('secure/admin/users/delete/<int:pk>', UserDeleteView.as_view(), name="admin.user-delete"),

    # Labs
    path('secure/admin/labs/', LabView.as_view(), name='admin.labs'),
    path('secure/admin/labs/list/json/', LabJSONListView.as_view(), name='admin.labs-json-list'),
    path('secure/admin/labs/create/', LabCreateView.as_view(), name="admin.lab-create"),
    path('secure/admin/labs/update/<int:pk>', LabUpdateView.as_view(), name="admin.lab-update"),

    # Institutions
    path('secure/admin/institutions/', InstitutionView.as_view(), name='admin.institutions'),
    path('secure/admin/institutions/list/json/', InstitutionJSONListView.as_view(), name='admin.institution-json-list'),
    path('secure/admin/institutions/create/', InstitutionCreateView.as_view(), name="admin.institution-create"),
    path('secure/admin/institutions/update/<int:pk>', InstitutionUpdateView.as_view(), name="admin.institution-update"),

    # Datasets
    path('secure/admin/datasets/', DatasetView.as_view(), name='admin.datasets'),
    path('secure/admin/datasets/list/json/', DatasetJSONListView.as_view(), name='admin.dataset-json-list'),
    path('secure/admin/datasets/create/', DatasetCreateView.as_view(), name="admin.dataset-create"),
    path('secure/admin/datasets/update/<int:pk>', DatasetUpdateView.as_view(), name="admin.dataset-update"),

    # Alerts
    path('secure/admin/comm/alert/', AlertListView.as_view(), name='admin.alert'),
    path('secure/admin/comm/alert/create/', AlertCreateView.as_view(), name='admin.alert-create'),
    path('secure/admin/comm/alert/update/<int:pk>', AlertUpdateView.as_view(), name='admin.alert-update'),
    path('secure/admin/comm/alert/list/json/', AlertJSONListView.as_view(), name='admin.alert-json-list'),

    # Settings
    path('secure/admin/settings/', AdminSettingsView.as_view(), name='admin.settings'),

    # path('jsi18n/', JavaScriptCatalog.as_view(), name='javascript-catalog')

]