Compare commits
No commits in common. "170766237af17843d77052c88200c4069dda622c" and "4091bba01a6d95400e110a2a33e2c2a218e2c3df" have entirely different histories.
170766237a
...
4091bba01a
20
.drone.yml
@ -1,20 +1,21 @@
|
|||||||
kind: pipeline
|
kind: pipeline
|
||||||
type: docker
|
type: docker
|
||||||
name: deploy-polisplexity
|
name: default
|
||||||
|
|
||||||
clone:
|
clone:
|
||||||
depth: 1
|
depth: 1
|
||||||
submodules: true
|
submodules: true # Ensure submodules like pxy_city_digital_twins are cloned
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: install dependencies and run Django checks
|
- name: install dependencies and check Django project
|
||||||
image: python:3.10
|
image: python:3.10
|
||||||
environment:
|
environment:
|
||||||
DATABASE_URL:
|
DATABASE_URL:
|
||||||
from_secret: DATABASE_URL
|
from_secret: DATABASE_URL
|
||||||
SECRET_KEY:
|
SECRET_KEY:
|
||||||
from_secret: SECRET_KEY
|
from_secret: SECRET_KEY
|
||||||
DEBUG: "False"
|
DEBUG:
|
||||||
|
from_secret: DEBUG
|
||||||
NEO4J_URI:
|
NEO4J_URI:
|
||||||
from_secret: NEO4J_URI
|
from_secret: NEO4J_URI
|
||||||
NEO4J_USERNAME:
|
NEO4J_USERNAME:
|
||||||
@ -30,10 +31,10 @@ steps:
|
|||||||
commands:
|
commands:
|
||||||
- python -m pip install --upgrade pip
|
- python -m pip install --upgrade pip
|
||||||
- pip install -r requirements.txt
|
- pip install -r requirements.txt
|
||||||
- python manage.py check --deploy --fail-level WARNING
|
- python manage.py check
|
||||||
- echo "✅ Django deploy checks passed"
|
- echo "✅ Django check completed"
|
||||||
|
|
||||||
- name: deploy to production server
|
- name: deploy to production
|
||||||
image: appleboy/ssh
|
image: appleboy/ssh
|
||||||
settings:
|
settings:
|
||||||
host:
|
host:
|
||||||
@ -48,7 +49,4 @@ steps:
|
|||||||
- git pull origin main
|
- git pull origin main
|
||||||
- docker compose down
|
- docker compose down
|
||||||
- docker compose up -d --build
|
- docker compose up -d --build
|
||||||
- docker compose exec web python manage.py migrate --noinput
|
- echo "🚀 Deployment complete"
|
||||||
- docker compose exec web python manage.py collectstatic --noinput
|
|
||||||
- echo "🚀 Production deployment complete"
|
|
||||||
|
|
||||||
|
33
Dockerfile
@ -1,12 +1,14 @@
|
|||||||
# Etapa base: Python oficial
|
# Use official Python image
|
||||||
FROM python:3.10-slim as base
|
FROM python:3.10
|
||||||
|
|
||||||
# Variables de entorno para producción
|
# Set working directory
|
||||||
ENV PYTHONDONTWRITEBYTECODE 1
|
WORKDIR /app
|
||||||
ENV PYTHONUNBUFFERED 1
|
|
||||||
|
|
||||||
# Instala dependencias del sistema
|
# Copy application code
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
COPY . .
|
||||||
|
|
||||||
|
# Add before pip install step
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
build-essential \
|
build-essential \
|
||||||
libgeos-dev \
|
libgeos-dev \
|
||||||
libspatialindex-dev \
|
libspatialindex-dev \
|
||||||
@ -18,20 +20,11 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|||||||
python3-dev \
|
python3-dev \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Crea directorio de trabajo
|
# Install dependencies
|
||||||
WORKDIR /app
|
|
||||||
|
|
||||||
# Copia requirements primero (mejor cacheo)
|
|
||||||
COPY requirements.txt .
|
|
||||||
|
|
||||||
# Instala dependencias Python
|
|
||||||
RUN pip install --no-cache-dir -r requirements.txt
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
# Copia el resto del proyecto
|
# Expose the application port
|
||||||
COPY . .
|
|
||||||
|
|
||||||
# Expone el puerto del contenedor
|
|
||||||
EXPOSE 8000
|
EXPOSE 8000
|
||||||
|
|
||||||
# Comando por defecto para producción con Gunicorn
|
# Run Gunicorn server
|
||||||
CMD ["gunicorn", "polisplexity.wsgi:application", "--bind", "0.0.0.0:8000", "--workers=3", "--timeout=120"]
|
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "polisplexity.wsgi:application"]
|
||||||
|
BIN
core/__pycache__/__init__.cpython-310.pyc
Normal file
BIN
core/__pycache__/admin.cpython-310.pyc
Normal file
BIN
core/__pycache__/apps.cpython-310.pyc
Normal file
BIN
core/__pycache__/models.cpython-310.pyc
Normal file
BIN
core/__pycache__/urls.cpython-310.pyc
Normal file
BIN
core/__pycache__/views.cpython-310.pyc
Normal file
BIN
core/migrations/__pycache__/0001_initial.cpython-310.pyc
Normal file
BIN
core/migrations/__pycache__/0002_usermenu.cpython-310.pyc
Normal file
BIN
core/migrations/__pycache__/__init__.cpython-310.pyc
Normal file
@ -5,12 +5,12 @@ services:
|
|||||||
image: postgres:15
|
image: postgres:15
|
||||||
container_name: polisplexity_postgres
|
container_name: polisplexity_postgres
|
||||||
restart: always
|
restart: always
|
||||||
ports:
|
|
||||||
- "5434:5432"
|
|
||||||
volumes:
|
volumes:
|
||||||
- pgdata:/var/lib/postgresql/data
|
- pgdata:/var/lib/postgresql/data
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
|
ports:
|
||||||
|
- "5434:5432"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
|
||||||
interval: 10s
|
interval: 10s
|
||||||
@ -24,20 +24,14 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
db:
|
db:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
|
volumes:
|
||||||
|
- .:/app # Sync local code into container for live reload
|
||||||
ports:
|
ports:
|
||||||
- "8001:8001"
|
- "8001:8001"
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
command: >
|
command: python manage.py runserver 0.0.0.0:8001
|
||||||
sh -c "python manage.py migrate &&
|
|
||||||
python manage.py collectstatic --noinput &&
|
|
||||||
gunicorn polisplexity.wsgi:application --bind 0.0.0.0:8001"
|
|
||||||
volumes:
|
|
||||||
- static_data:/app/static
|
|
||||||
- media_data:/app/media
|
|
||||||
# - .:/app # ←❌ No lo uses en producción: desactiva para evitar sobrescribir
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
pgdata:
|
pgdata:
|
||||||
static_data:
|
|
||||||
media_data:
|
|
BIN
polisplexity/__pycache__/__init__.cpython-310.pyc
Normal file
BIN
polisplexity/__pycache__/settings.cpython-310.pyc
Normal file
BIN
polisplexity/__pycache__/urls.cpython-310.pyc
Normal file
BIN
polisplexity/__pycache__/wsgi.cpython-310.pyc
Normal file
@ -1,16 +1,33 @@
|
|||||||
|
"""
|
||||||
|
Django settings for polisplexity project.
|
||||||
|
|
||||||
|
Generated by 'django-admin startproject' using Django 5.0.3.
|
||||||
|
|
||||||
|
For more information on this file, see
|
||||||
|
https://docs.djangoproject.com/en/5.0/topics/settings/
|
||||||
|
|
||||||
|
For the full list of settings and their values, see
|
||||||
|
https://docs.djangoproject.com/en/5.0/ref/settings/
|
||||||
|
"""
|
||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import os
|
import os
|
||||||
import dj_database_url
|
import dj_database_url
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
|
# Load environment variables from .env file
|
||||||
load_dotenv()
|
load_dotenv()
|
||||||
|
|
||||||
|
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
||||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||||
BASE_URL = "https://app.polisplexity.tech"
|
BASE_URL = "https://app.polisplexity.tech"
|
||||||
|
|
||||||
# Core security settings
|
# SECURITY WARNING: keep the secret key used in production secret!
|
||||||
SECRET_KEY = os.getenv("SECRET_KEY")
|
SECRET_KEY = os.getenv("SECRET_KEY")
|
||||||
DEBUG = os.getenv("DEBUG", "False") == "True"
|
|
||||||
|
# SECURITY WARNING: don't run with debug turned on in production!
|
||||||
|
DEBUG = os.getenv("DEBUG") == "True"
|
||||||
|
|
||||||
ALLOWED_HOSTS = os.getenv("ALLOWED_HOSTS", "").split(",")
|
ALLOWED_HOSTS = os.getenv("ALLOWED_HOSTS", "").split(",")
|
||||||
|
|
||||||
# Application definition
|
# Application definition
|
||||||
@ -21,8 +38,6 @@ INSTALLED_APPS = [
|
|||||||
"django.contrib.sessions",
|
"django.contrib.sessions",
|
||||||
"django.contrib.messages",
|
"django.contrib.messages",
|
||||||
"django.contrib.staticfiles",
|
"django.contrib.staticfiles",
|
||||||
|
|
||||||
# App modules
|
|
||||||
"core",
|
"core",
|
||||||
"pxy_de",
|
"pxy_de",
|
||||||
"pxy_cr",
|
"pxy_cr",
|
||||||
@ -33,11 +48,6 @@ INSTALLED_APPS = [
|
|||||||
"pxy_meta_pages",
|
"pxy_meta_pages",
|
||||||
"pxy_langchain",
|
"pxy_langchain",
|
||||||
"pxy_neo4j",
|
"pxy_neo4j",
|
||||||
"pxy_dashboard",
|
|
||||||
"pxy_dashboard.custom",
|
|
||||||
"pxy_dashboard.apps",
|
|
||||||
"pxy_dashboard.components",
|
|
||||||
"pxy_dashboard.layouts",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
MIDDLEWARE = [
|
MIDDLEWARE = [
|
||||||
@ -70,7 +80,7 @@ TEMPLATES = [
|
|||||||
|
|
||||||
WSGI_APPLICATION = "polisplexity.wsgi.application"
|
WSGI_APPLICATION = "polisplexity.wsgi.application"
|
||||||
|
|
||||||
# Database
|
# Database Configuration
|
||||||
DATABASES = {
|
DATABASES = {
|
||||||
"default": dj_database_url.config(default=os.getenv("DATABASE_URL"))
|
"default": dj_database_url.config(default=os.getenv("DATABASE_URL"))
|
||||||
}
|
}
|
||||||
@ -89,31 +99,26 @@ TIME_ZONE = "UTC"
|
|||||||
USE_I18N = True
|
USE_I18N = True
|
||||||
USE_TZ = True
|
USE_TZ = True
|
||||||
|
|
||||||
# Static & Media Files
|
# Static and Media Files
|
||||||
STATIC_URL = "/static/"
|
STATIC_URL = "/static/"
|
||||||
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
|
STATIC_ROOT = os.getenv("STATIC_ROOT", os.path.join(BASE_DIR, "static"))
|
||||||
|
|
||||||
STATICFILES_DIRS = [
|
|
||||||
os.path.join(BASE_DIR, "polisplexity/pxy_dashboard/static/dashboard"), # Jidox assets
|
|
||||||
]
|
|
||||||
|
|
||||||
MEDIA_URL = "/media/"
|
MEDIA_URL = "/media/"
|
||||||
MEDIA_ROOT = os.path.join(BASE_DIR, "mediafiles")
|
MEDIA_ROOT = os.getenv("MEDIA_ROOT", os.path.join(BASE_DIR, "media"))
|
||||||
|
|
||||||
# Default primary key field type
|
# Default primary key field type
|
||||||
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
|
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
|
||||||
|
|
||||||
# External services
|
# Facebook API Tokens
|
||||||
PAGE_ACCESS_TOKEN = os.getenv("PAGE_ACCESS_TOKEN")
|
PAGE_ACCESS_TOKEN = os.getenv("PAGE_ACCESS_TOKEN")
|
||||||
VERIFY_TOKEN = os.getenv("VERIFY_TOKEN")
|
VERIFY_TOKEN = os.getenv("VERIFY_TOKEN")
|
||||||
|
|
||||||
# Async-safe for Neo4j or Celery
|
|
||||||
os.environ["DJANGO_ALLOW_ASYNC_UNSAFE"] = "true"
|
os.environ["DJANGO_ALLOW_ASYNC_UNSAFE"] = "true"
|
||||||
|
|
||||||
# Neo4j
|
# Neo4j Database Configuration
|
||||||
NEO4J_URI = os.getenv("NEO4J_URI")
|
NEO4J_URI = os.getenv("NEO4J_URI")
|
||||||
NEO4J_USERNAME = os.getenv("NEO4J_USERNAME")
|
NEO4J_USERNAME = os.getenv("NEO4J_USERNAME")
|
||||||
NEO4J_PASSWORD = os.getenv("NEO4J_PASSWORD")
|
NEO4J_PASSWORD = os.getenv("NEO4J_PASSWORD")
|
||||||
|
|
||||||
# OpenAI
|
# OpenAI API Key
|
||||||
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
|
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
|
||||||
|
@ -25,13 +25,11 @@ admin.site.index_title = "Welcome to Polisplexity City Technologies Portal"
|
|||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path("admin/", admin.site.urls),
|
path("admin/", admin.site.urls),
|
||||||
path('', include('pxy_dashboard.urls')),
|
|
||||||
path('', include('core.urls')),
|
path('', include('core.urls')),
|
||||||
path('', include('pxy_city_digital_twins.urls')),
|
path('', include('pxy_city_digital_twins.urls')),
|
||||||
path('pxy_whatsapp/', include('pxy_whatsapp.urls')),
|
path('pxy_whatsapp/', include('pxy_whatsapp.urls')),
|
||||||
path('bots/', include('pxy_bots.urls')), # Webhook URL: /bots/webhook/<bot_name>/
|
path('bots/', include('pxy_bots.urls')), # Webhook URL: /bots/webhook/<bot_name>/
|
||||||
path('pxy_meta_pages/', include('pxy_meta_pages.urls', namespace='pxy_meta_pages')),
|
path('pxy_meta_pages/', include('pxy_meta_pages.urls', namespace='pxy_meta_pages')),
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
if settings.DEBUG:
|
if settings.DEBUG:
|
||||||
|
BIN
pxy_bots/__pycache__/__init__.cpython-310.pyc
Normal file
BIN
pxy_bots/__pycache__/admin.cpython-310.pyc
Normal file
BIN
pxy_bots/__pycache__/apps.cpython-310.pyc
Normal file
BIN
pxy_bots/__pycache__/handlers.cpython-310.pyc
Normal file
BIN
pxy_bots/__pycache__/models.cpython-310.pyc
Normal file
BIN
pxy_bots/__pycache__/urls.cpython-310.pyc
Normal file
BIN
pxy_bots/__pycache__/utils.cpython-310.pyc
Normal file
BIN
pxy_bots/__pycache__/views.cpython-310.pyc
Normal file
BIN
pxy_bots/migrations/__pycache__/0001_initial.cpython-310.pyc
Normal file
BIN
pxy_bots/migrations/__pycache__/__init__.cpython-310.pyc
Normal file
BIN
pxy_cr/__pycache__/__init__.cpython-310.pyc
Normal file
BIN
pxy_cr/__pycache__/admin.cpython-310.pyc
Normal file
BIN
pxy_cr/__pycache__/apps.cpython-310.pyc
Normal file
BIN
pxy_cr/__pycache__/models.cpython-310.pyc
Normal file
BIN
pxy_cr/migrations/__pycache__/__init__.cpython-310.pyc
Normal file
@ -1,3 +0,0 @@
|
|||||||
from django.contrib import admin
|
|
||||||
|
|
||||||
# Register your models here.
|
|
@ -1,6 +0,0 @@
|
|||||||
from django.apps import AppConfig
|
|
||||||
|
|
||||||
|
|
||||||
class PxyDashboardConfig(AppConfig):
|
|
||||||
default_auto_field = 'django.db.models.BigAutoField'
|
|
||||||
name = 'pxy_dashboard'
|
|
@ -1,3 +0,0 @@
|
|||||||
from django.contrib import admin
|
|
||||||
|
|
||||||
# Register your models here.
|
|
@ -1,5 +0,0 @@
|
|||||||
from django.apps import AppConfig
|
|
||||||
|
|
||||||
class AppsConfig(AppConfig):
|
|
||||||
default_auto_field = 'django.db.models.BigAutoField'
|
|
||||||
name = 'pxy_dashboard.apps'
|
|
@ -1,3 +0,0 @@
|
|||||||
from django.db import models
|
|
||||||
|
|
||||||
# Create your models here.
|
|
@ -1,3 +0,0 @@
|
|||||||
from django.test import TestCase
|
|
||||||
|
|
||||||
# Create your tests here.
|
|
@ -1,31 +0,0 @@
|
|||||||
from django.urls import path
|
|
||||||
from pxy_dashboard.apps.views import (
|
|
||||||
apps_calendar_view,
|
|
||||||
apps_chat_view,
|
|
||||||
apps_email_inbox_view,
|
|
||||||
apps_email_read,
|
|
||||||
apps_tasks,
|
|
||||||
apps_tasks_details,
|
|
||||||
apps_kanban_board,
|
|
||||||
apps_file_manager,
|
|
||||||
)
|
|
||||||
app_name = "apps"
|
|
||||||
|
|
||||||
|
|
||||||
urlpatterns = [
|
|
||||||
# Calaendar
|
|
||||||
path("calendar", view=apps_calendar_view, name="calendar"),
|
|
||||||
# Chat
|
|
||||||
path("chat", view=apps_chat_view, name="chat"),
|
|
||||||
# Email
|
|
||||||
path("email-inbox", view=apps_email_inbox_view, name="email-inbox"),
|
|
||||||
path("email-read", view=apps_email_read, name="email-read"),
|
|
||||||
# Tasks
|
|
||||||
path("tasks", view=apps_tasks, name="tasks"),
|
|
||||||
path("tasks-details", view=apps_tasks_details, name="tasks-details"),
|
|
||||||
# Kanban
|
|
||||||
path("kanban-board", view=apps_kanban_board, name="kanban"),
|
|
||||||
# File Manager
|
|
||||||
path("file-manager", view=apps_file_manager, name="file-manager"),
|
|
||||||
|
|
||||||
]
|
|
@ -1,22 +0,0 @@
|
|||||||
from django.views.generic.base import TemplateView
|
|
||||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
|
||||||
|
|
||||||
|
|
||||||
class AppsView(LoginRequiredMixin,TemplateView):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
# Calendar
|
|
||||||
apps_calendar_view = AppsView.as_view(template_name="apps/apps-calendar.html")
|
|
||||||
# Chat
|
|
||||||
apps_chat_view = AppsView.as_view(template_name="apps/apps-chat.html")
|
|
||||||
# Mail Box
|
|
||||||
apps_email_inbox_view = AppsView.as_view(template_name="apps/apps-email-inbox.html")
|
|
||||||
apps_email_read = AppsView.as_view(template_name="apps/apps-email-read.html")
|
|
||||||
# Tasks
|
|
||||||
apps_tasks = AppsView.as_view(template_name="apps/apps-tasks.html")
|
|
||||||
apps_tasks_details = AppsView.as_view(template_name="apps/apps-tasks-details.html")
|
|
||||||
# Kanban
|
|
||||||
apps_kanban_board = AppsView.as_view(template_name="apps/apps-kanban.html")
|
|
||||||
# File Manager
|
|
||||||
apps_file_manager = AppsView.as_view(template_name="apps/apps-file-manager.html")
|
|
@ -1,3 +0,0 @@
|
|||||||
from django.contrib import admin
|
|
||||||
|
|
||||||
# Register your models here.
|
|
@ -1,5 +0,0 @@
|
|||||||
from django.apps import AppConfig
|
|
||||||
|
|
||||||
class ComponentsConfig(AppConfig):
|
|
||||||
default_auto_field = 'django.db.models.BigAutoField'
|
|
||||||
name = 'pxy_dashboard.components'
|
|
@ -1,3 +0,0 @@
|
|||||||
from django.db import models
|
|
||||||
|
|
||||||
# Create your models here.
|
|
@ -1,3 +0,0 @@
|
|||||||
from django.test import TestCase
|
|
||||||
|
|
||||||
# Create your tests here.
|
|
@ -1,166 +0,0 @@
|
|||||||
from django.urls import path
|
|
||||||
from pxy_dashboard.components.views import (
|
|
||||||
accordions_view,
|
|
||||||
alerts_view,
|
|
||||||
avatars_view,
|
|
||||||
badges_view,
|
|
||||||
breadcrumb_view,
|
|
||||||
buttons_view,
|
|
||||||
cards_view,
|
|
||||||
carousel_view,
|
|
||||||
collapse_view,
|
|
||||||
dropdowns_view,
|
|
||||||
embed_video_view,
|
|
||||||
grid_view,
|
|
||||||
links_view,
|
|
||||||
list_group_view,
|
|
||||||
modals_view,
|
|
||||||
notifications_view,
|
|
||||||
offcanvas_view,
|
|
||||||
placeholders_view,
|
|
||||||
pagination_view,
|
|
||||||
popovers_view,
|
|
||||||
progress_view,
|
|
||||||
spinners_view,
|
|
||||||
tabs_view,
|
|
||||||
tooltips_view,
|
|
||||||
typography_view,
|
|
||||||
utilities_view,
|
|
||||||
extended_dragula_view,
|
|
||||||
extended_range_slider_view,
|
|
||||||
extended_ratings_view,
|
|
||||||
extended_scrollbar_view,
|
|
||||||
extended_scrollspy_view,
|
|
||||||
widgets_view,
|
|
||||||
icons_remixicons_view,
|
|
||||||
icons_bootstrap_view,
|
|
||||||
icons_material_view,
|
|
||||||
apex_area_view,
|
|
||||||
apex_bar_view,
|
|
||||||
apex_bubble_view,
|
|
||||||
apex_candlestick_view,
|
|
||||||
apex_column_view,
|
|
||||||
apex_heatmap_view,
|
|
||||||
apex_line_view,
|
|
||||||
apex_mixed_view,
|
|
||||||
apex_timeline_view,
|
|
||||||
apex_boxplot_view,
|
|
||||||
apex_treemap_view,
|
|
||||||
apex_pie_view,
|
|
||||||
apex_radar_view,
|
|
||||||
apex_radialbar_view,
|
|
||||||
apex_scatter_view,
|
|
||||||
apex_polar_area_view,
|
|
||||||
apex_sparklines_view,
|
|
||||||
chartjs_area_view,
|
|
||||||
chartjs_bar_view,
|
|
||||||
chartjs_line_view,
|
|
||||||
chartjs_other_view,
|
|
||||||
form_elements_view,
|
|
||||||
form_advanced_view,
|
|
||||||
form_wizard_view,
|
|
||||||
form_fileuploads_view,
|
|
||||||
form_editors_view,
|
|
||||||
tables_basic_view,
|
|
||||||
tables_datatable_view,
|
|
||||||
google_map_view,
|
|
||||||
vector_map_view,
|
|
||||||
form_validation_view,
|
|
||||||
)
|
|
||||||
|
|
||||||
urlpatterns = [
|
|
||||||
# Base Ui
|
|
||||||
path("accordions", view=accordions_view, name="accordions"),
|
|
||||||
path("alerts", view=alerts_view, name="alerts"),
|
|
||||||
path("avatars", view=avatars_view, name="avatars"),
|
|
||||||
path("badges", view=badges_view, name="badges"),
|
|
||||||
path("breadcrumb", view=breadcrumb_view, name="breadcrumb"),
|
|
||||||
path("buttons", view=buttons_view, name="buttons"),
|
|
||||||
path("cards", view=cards_view, name="cards"),
|
|
||||||
path("carousel", view=carousel_view, name="carousel"),
|
|
||||||
path("collapse", view=collapse_view, name="collapse"),
|
|
||||||
path("dropdowns", view=dropdowns_view, name="dropdowns"),
|
|
||||||
path("embed-video", view=embed_video_view, name="embed-video"),
|
|
||||||
path("grid", view=grid_view, name="grid"),
|
|
||||||
path("links", view=links_view, name="links"),
|
|
||||||
path("list-group", view=list_group_view, name="list-group"),
|
|
||||||
path("modals", view=modals_view, name="modals"),
|
|
||||||
path("notifications", view=notifications_view, name="notifications"),
|
|
||||||
path("offcanvas", view=offcanvas_view, name="offcanvas"),
|
|
||||||
path("placeholders", view=placeholders_view, name="placeholders"),
|
|
||||||
path("pagination", view=pagination_view, name="pagination"),
|
|
||||||
path("popovers", view=popovers_view, name="popovers"),
|
|
||||||
path("progress", view=progress_view, name="progress"),
|
|
||||||
path("spinners", view=spinners_view, name="spinners"),
|
|
||||||
path("tabs", view=tabs_view, name="tabs"),
|
|
||||||
path("tooltips", view=tooltips_view, name="tooltips"),
|
|
||||||
path("typography", view=typography_view, name="typography"),
|
|
||||||
path("utilities", view=utilities_view, name="utilities"),
|
|
||||||
|
|
||||||
|
|
||||||
# Extended Ui
|
|
||||||
path("extended-dragula", view=extended_dragula_view, name="extended-dragula"),
|
|
||||||
path(
|
|
||||||
"extended-range-slider",
|
|
||||||
view=extended_range_slider_view,
|
|
||||||
name="extended-range-slider",
|
|
||||||
),
|
|
||||||
path("extended-ratings", view=extended_ratings_view, name="extended-ratings"),
|
|
||||||
path("extended-scrollbar", view=extended_scrollbar_view, name="extended-scrollbar"),
|
|
||||||
path("extended-scrollspy", view=extended_scrollspy_view, name="extended-scrollspy"),
|
|
||||||
|
|
||||||
|
|
||||||
# Widgets
|
|
||||||
path("widgets", view=widgets_view, name="widgets"),
|
|
||||||
|
|
||||||
|
|
||||||
# Icons
|
|
||||||
path("icons-remixicons", view=icons_remixicons_view, name="icons-remixicons"),
|
|
||||||
path("icons-bootstrap", view=icons_bootstrap_view, name="icons-bootstrap"),
|
|
||||||
path("icons-material-symbol", view=icons_material_view, name="icons-material"),
|
|
||||||
|
|
||||||
|
|
||||||
# Charts
|
|
||||||
# Apex
|
|
||||||
path("apex-area", view=apex_area_view, name="apex-area"),
|
|
||||||
path("apex-bar", view=apex_bar_view, name="apex-bar"),
|
|
||||||
path("apex-bubble", view=apex_bubble_view, name="apex-bubble"),
|
|
||||||
path("apex-candlestick", view=apex_candlestick_view, name="apex-candlestick"),
|
|
||||||
path("apex-column", view=apex_column_view, name="apex-column"),
|
|
||||||
path("apex-heatmap", view=apex_heatmap_view, name="apex-heatmap"),
|
|
||||||
path("apex-line", view=apex_line_view, name="apex-line"),
|
|
||||||
path("apex-mixed", view=apex_mixed_view, name="apex-mixed"),
|
|
||||||
path("apex-timeline", view=apex_timeline_view, name="apex-timeline"),
|
|
||||||
path("apex-boxplot", view=apex_boxplot_view, name="apex-boxplot"),
|
|
||||||
path("apex-treemap", view=apex_treemap_view, name="apex-treemap"),
|
|
||||||
path("apex-pie", view=apex_pie_view, name="apex-pie"),
|
|
||||||
path("apex-radar", view=apex_radar_view, name="apex-radar"),
|
|
||||||
path("apex-radialbar", view=apex_radialbar_view, name="apex-radialbar"),
|
|
||||||
path("apex-scatter", view=apex_scatter_view, name="apex-scatter"),
|
|
||||||
path("apex-polar-area", view=apex_polar_area_view, name="apex-polar-area"),
|
|
||||||
path("apex-sparklines", view=apex_sparklines_view, name="apex-sparklines"),
|
|
||||||
# ChartJs
|
|
||||||
path("chartjs-area", view=chartjs_area_view, name="chartjs-area"),
|
|
||||||
path("chartjs-bar", view=chartjs_bar_view, name="chartjs-bar"),
|
|
||||||
path("chartjs-line", view=chartjs_line_view, name="chartjs-line"),
|
|
||||||
path("chartjs-other", view=chartjs_other_view, name="chartjs-other"),
|
|
||||||
|
|
||||||
|
|
||||||
# Forms
|
|
||||||
path("form-elements", view=form_elements_view, name="form-elements"),
|
|
||||||
path("form-advanced", view=form_advanced_view, name="form-advanced"),
|
|
||||||
path("form-validation", view=form_validation_view, name="form-validation"),
|
|
||||||
path("form-wizard", view=form_wizard_view, name="form-wizard"),
|
|
||||||
path("form-fileuploads", view=form_fileuploads_view, name="form-fileuploads"),
|
|
||||||
path("form-editors", view=form_editors_view, name="form-editors"),
|
|
||||||
|
|
||||||
|
|
||||||
# Tables
|
|
||||||
path("tables-basic", view=tables_basic_view, name="tables-basic"),
|
|
||||||
path("tables-datatable", view=tables_datatable_view, name="tables-datatable"),
|
|
||||||
|
|
||||||
|
|
||||||
# Maps
|
|
||||||
path("google-map", view=google_map_view, name="google-map"),
|
|
||||||
path("vector-map", view=vector_map_view, name="vector-map"),
|
|
||||||
]
|
|
@ -1,193 +0,0 @@
|
|||||||
from django.views.generic.base import TemplateView
|
|
||||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
|
||||||
|
|
||||||
class ComponentView(LoginRequiredMixin,TemplateView):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
# Base Ui
|
|
||||||
accordions_view = ComponentView.as_view(
|
|
||||||
template_name="components/base-ui/accordions.html"
|
|
||||||
)
|
|
||||||
alerts_view = ComponentView.as_view(template_name="components/base-ui/alerts.html")
|
|
||||||
avatars_view = ComponentView.as_view(template_name="components/base-ui/avatars.html")
|
|
||||||
badges_view = ComponentView.as_view(template_name="components/base-ui/badges.html")
|
|
||||||
breadcrumb_view = ComponentView.as_view(
|
|
||||||
template_name="components/base-ui/breadcrumb.html"
|
|
||||||
)
|
|
||||||
buttons_view = ComponentView.as_view(template_name="components/base-ui/buttons.html")
|
|
||||||
cards_view = ComponentView.as_view(template_name="components/base-ui/cards.html")
|
|
||||||
carousel_view = ComponentView.as_view(template_name="components/base-ui/carousel.html")
|
|
||||||
collapse_view = ComponentView.as_view(template_name="components/base-ui/collapse.html")
|
|
||||||
dropdowns_view = ComponentView.as_view(
|
|
||||||
template_name="components/base-ui/dropdowns.html"
|
|
||||||
)
|
|
||||||
embed_video_view = ComponentView.as_view(
|
|
||||||
template_name="components/base-ui/embed-video.html"
|
|
||||||
)
|
|
||||||
grid_view = ComponentView.as_view(template_name="components/base-ui/grid.html")
|
|
||||||
links_view = ComponentView.as_view(template_name="components/base-ui/links.html")
|
|
||||||
list_group_view = ComponentView.as_view(
|
|
||||||
template_name="components/base-ui/list-group.html"
|
|
||||||
)
|
|
||||||
modals_view = ComponentView.as_view(template_name="components/base-ui/modals.html")
|
|
||||||
notifications_view = ComponentView.as_view(
|
|
||||||
template_name="components/base-ui/notifications.html"
|
|
||||||
)
|
|
||||||
offcanvas_view = ComponentView.as_view(
|
|
||||||
template_name="components/base-ui/offcanvas.html"
|
|
||||||
)
|
|
||||||
placeholders_view = ComponentView.as_view(
|
|
||||||
template_name="components/base-ui/placeholders.html"
|
|
||||||
)
|
|
||||||
pagination_view = ComponentView.as_view(
|
|
||||||
template_name="components/base-ui/pagination.html"
|
|
||||||
)
|
|
||||||
popovers_view = ComponentView.as_view(template_name="components/base-ui/popovers.html")
|
|
||||||
progress_view = ComponentView.as_view(template_name="components/base-ui/progress.html")
|
|
||||||
spinners_view = ComponentView.as_view(template_name="components/base-ui/spinners.html")
|
|
||||||
tabs_view = ComponentView.as_view(template_name="components/base-ui/tabs.html")
|
|
||||||
tooltips_view = ComponentView.as_view(template_name="components/base-ui/tooltips.html")
|
|
||||||
typography_view = ComponentView.as_view(
|
|
||||||
template_name="components/base-ui/typography.html"
|
|
||||||
)
|
|
||||||
utilities_view = ComponentView.as_view(
|
|
||||||
template_name="components/base-ui/utilities.html"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Extended Ui
|
|
||||||
extended_dragula_view = ComponentView.as_view(
|
|
||||||
template_name="components/extended-ui/extended-dragula.html"
|
|
||||||
)
|
|
||||||
extended_range_slider_view = ComponentView.as_view(
|
|
||||||
template_name="components/extended-ui/extended-range-slider.html"
|
|
||||||
)
|
|
||||||
extended_ratings_view = ComponentView.as_view(
|
|
||||||
template_name="components/extended-ui/extended-ratings.html"
|
|
||||||
)
|
|
||||||
extended_scrollbar_view = ComponentView.as_view(
|
|
||||||
template_name="components/extended-ui/extended-scrollbar.html"
|
|
||||||
)
|
|
||||||
extended_scrollspy_view = ComponentView.as_view(
|
|
||||||
template_name="components/extended-ui/extended-scrollspy.html"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Widgets
|
|
||||||
widgets_view = ComponentView.as_view(template_name="components/widgets/widgets.html")
|
|
||||||
|
|
||||||
# Icons
|
|
||||||
icons_remixicons_view = ComponentView.as_view(
|
|
||||||
template_name="components/icons/icons-remixicons.html"
|
|
||||||
)
|
|
||||||
icons_bootstrap_view = ComponentView.as_view(
|
|
||||||
template_name="components/icons/icons-bootstrap.html"
|
|
||||||
)
|
|
||||||
icons_material_view = ComponentView.as_view(
|
|
||||||
template_name="components/icons/icons-material-symbol.html"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Charts
|
|
||||||
# Apex
|
|
||||||
apex_area_view = ComponentView.as_view(
|
|
||||||
template_name="components/charts/apex-charts/apex-area.html"
|
|
||||||
)
|
|
||||||
apex_bar_view = ComponentView.as_view(
|
|
||||||
template_name="components/charts/apex-charts/apex-bar.html"
|
|
||||||
)
|
|
||||||
apex_bubble_view = ComponentView.as_view(
|
|
||||||
template_name="components/charts/apex-charts/apex-bubble.html"
|
|
||||||
)
|
|
||||||
apex_candlestick_view = ComponentView.as_view(
|
|
||||||
template_name="components/charts/apex-charts/apex-candlestick.html"
|
|
||||||
)
|
|
||||||
apex_column_view = ComponentView.as_view(
|
|
||||||
template_name="components/charts/apex-charts/apex-column.html"
|
|
||||||
)
|
|
||||||
apex_heatmap_view = ComponentView.as_view(
|
|
||||||
template_name="components/charts/apex-charts/apex-heatmap.html"
|
|
||||||
)
|
|
||||||
apex_line_view = ComponentView.as_view(
|
|
||||||
template_name="components/charts/apex-charts/apex-line.html"
|
|
||||||
)
|
|
||||||
apex_mixed_view = ComponentView.as_view(
|
|
||||||
template_name="components/charts/apex-charts/apex-mixed.html"
|
|
||||||
)
|
|
||||||
apex_timeline_view = ComponentView.as_view(
|
|
||||||
template_name="components/charts/apex-charts/apex-timeline.html"
|
|
||||||
)
|
|
||||||
apex_boxplot_view = ComponentView.as_view(
|
|
||||||
template_name="components/charts/apex-charts/apex-boxplot.html"
|
|
||||||
)
|
|
||||||
apex_treemap_view = ComponentView.as_view(
|
|
||||||
template_name="components/charts/apex-charts/apex-treemap.html"
|
|
||||||
)
|
|
||||||
apex_pie_view = ComponentView.as_view(
|
|
||||||
template_name="components/charts/apex-charts/apex-pie.html"
|
|
||||||
)
|
|
||||||
apex_radar_view = ComponentView.as_view(
|
|
||||||
template_name="components/charts/apex-charts/apex-radar.html"
|
|
||||||
)
|
|
||||||
apex_radialbar_view = ComponentView.as_view(
|
|
||||||
template_name="components/charts/apex-charts/apex-radialbar.html"
|
|
||||||
)
|
|
||||||
apex_scatter_view = ComponentView.as_view(
|
|
||||||
template_name="components/charts/apex-charts/apex-scatter.html"
|
|
||||||
)
|
|
||||||
apex_polar_area_view = ComponentView.as_view(
|
|
||||||
template_name="components/charts/apex-charts/apex-polar-area.html"
|
|
||||||
)
|
|
||||||
apex_sparklines_view = ComponentView.as_view(
|
|
||||||
template_name="components/charts/apex-charts/apex-sparklines.html"
|
|
||||||
)
|
|
||||||
# ChartJs
|
|
||||||
chartjs_area_view = ComponentView.as_view(
|
|
||||||
template_name="components/charts/chartjs/chartjs-area.html"
|
|
||||||
)
|
|
||||||
chartjs_bar_view = ComponentView.as_view(
|
|
||||||
template_name="components/charts/chartjs/chartjs-bar.html"
|
|
||||||
)
|
|
||||||
chartjs_line_view = ComponentView.as_view(
|
|
||||||
template_name="components/charts/chartjs/chartjs-line.html"
|
|
||||||
)
|
|
||||||
chartjs_other_view = ComponentView.as_view(
|
|
||||||
template_name="components/charts/chartjs/chartjs-other.html"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
# Forms
|
|
||||||
form_elements_view = ComponentView.as_view(
|
|
||||||
template_name="components/forms/form-elements.html"
|
|
||||||
)
|
|
||||||
form_advanced_view = ComponentView.as_view(
|
|
||||||
template_name="components/forms/form-advanced.html"
|
|
||||||
)
|
|
||||||
form_validation_view = ComponentView.as_view(
|
|
||||||
template_name="components/forms/form-validation.html"
|
|
||||||
)
|
|
||||||
form_wizard_view = ComponentView.as_view(
|
|
||||||
template_name="components/forms/form-wizard.html"
|
|
||||||
)
|
|
||||||
form_fileuploads_view = ComponentView.as_view(
|
|
||||||
template_name="components/forms/form-fileuploads.html"
|
|
||||||
)
|
|
||||||
form_editors_view = ComponentView.as_view(
|
|
||||||
template_name="components/forms/form-editors.html"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
# Tables
|
|
||||||
tables_basic_view = ComponentView.as_view(
|
|
||||||
template_name="components/tables/tables-basic.html"
|
|
||||||
)
|
|
||||||
tables_datatable_view = ComponentView.as_view(
|
|
||||||
template_name="components/tables/tables-datatable.html"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
# Maps
|
|
||||||
google_map_view = ComponentView.as_view(
|
|
||||||
template_name="components/maps/maps-google.html"
|
|
||||||
)
|
|
||||||
vector_map_view = ComponentView.as_view(
|
|
||||||
template_name="components/maps/maps-vector.html"
|
|
||||||
)
|
|
@ -1,3 +0,0 @@
|
|||||||
from django.contrib import admin
|
|
||||||
|
|
||||||
# Register your models here.
|
|
@ -1,6 +0,0 @@
|
|||||||
from django.apps import AppConfig
|
|
||||||
|
|
||||||
class CustomConfig(AppConfig):
|
|
||||||
default_auto_field = 'django.db.models.BigAutoField'
|
|
||||||
name = 'pxy_dashboard.custom'
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
|||||||
from django.db import models
|
|
||||||
|
|
||||||
# Create your models here.
|
|
@ -1,3 +0,0 @@
|
|||||||
from django.test import TestCase
|
|
||||||
|
|
||||||
# Create your tests here.
|
|
@ -1,34 +0,0 @@
|
|||||||
from django.urls import path
|
|
||||||
from pxy_dashboard.custom.views import pages_profile_view,pages_invoice_view,pages_faq_view,pages_pricing_view,pages_maintenance_view,pages_starter_view,pages_preloader_view,pages_timeline_view,auth_login_view,auth_login2_view,auth_register_view,auth_register2_view,auth_logout_view,auth_logout2_view,auth_recoverpw_view,auth_recoverpw2_view,auth_lock_screen_view,auth_lock_screen2_view,auth_confirm_mail_view,auth_confirm_mail2_view,error_404_view,error_404_alt_view,error_500_view
|
|
||||||
app_name = "custom"
|
|
||||||
urlpatterns = [
|
|
||||||
|
|
||||||
# Pages
|
|
||||||
path("profile", view=pages_profile_view, name="profile"),
|
|
||||||
path("invoice", view=pages_invoice_view, name="invoice"),
|
|
||||||
path("faq", view=pages_faq_view, name="faq"),
|
|
||||||
path("pricing", view=pages_pricing_view, name="pricing"),
|
|
||||||
path("maintenance", view=pages_maintenance_view, name="maintenance"),
|
|
||||||
path("starter-page", view=pages_starter_view, name="starter"),
|
|
||||||
path("preloader", view=pages_preloader_view, name="preloader"),
|
|
||||||
path("timeline", view=pages_timeline_view, name="timeline"),
|
|
||||||
|
|
||||||
# Auth Pages
|
|
||||||
path("login", view=auth_login_view, name="login"),
|
|
||||||
path("login-2", view=auth_login2_view, name="login-2"),
|
|
||||||
path("register", view=auth_register_view, name="register"),
|
|
||||||
path("register-2", view=auth_register2_view, name="register-2"),
|
|
||||||
path("logout", view=auth_logout_view, name="logout"),
|
|
||||||
path("logout-2", view=auth_logout2_view, name="logout-2"),
|
|
||||||
path("recoverpw", view=auth_recoverpw_view, name="recoverpw"),
|
|
||||||
path("recoverpw-2", view=auth_recoverpw2_view, name="recoverpw-2"),
|
|
||||||
path("lock-screen", view=auth_lock_screen_view, name="lock-screen"),
|
|
||||||
path("lock-screen-2", view=auth_lock_screen2_view, name="lock-screen-2"),
|
|
||||||
path("confirm-mail", view=auth_confirm_mail_view, name="confirm-mail"),
|
|
||||||
path("confirm-mail-2", view=auth_confirm_mail2_view, name="confirm-mail-2"),
|
|
||||||
|
|
||||||
# Error Pages
|
|
||||||
path("error-404", view=error_404_view, name="error-404"),
|
|
||||||
path("error-404-alt", view=error_404_alt_view, name="error-404-alt"),
|
|
||||||
path("error-500", view=error_500_view, name="error-500"),
|
|
||||||
]
|
|
@ -1,34 +0,0 @@
|
|||||||
from django.views.generic.base import TemplateView
|
|
||||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
|
||||||
|
|
||||||
class CustomView(LoginRequiredMixin,TemplateView):
|
|
||||||
pass
|
|
||||||
|
|
||||||
#Pages
|
|
||||||
pages_profile_view = CustomView.as_view(template_name="custom/pages/pages-profile.html")
|
|
||||||
pages_invoice_view = CustomView.as_view(template_name="custom/pages/pages-invoice.html")
|
|
||||||
pages_faq_view = CustomView.as_view(template_name="custom/pages/pages-faq.html")
|
|
||||||
pages_pricing_view = CustomView.as_view(template_name="custom/pages/pages-pricing.html")
|
|
||||||
pages_maintenance_view = CustomView.as_view(template_name="custom/pages/pages-maintenance.html")
|
|
||||||
pages_starter_view = CustomView.as_view(template_name="custom/pages/pages-starter.html")
|
|
||||||
pages_preloader_view = CustomView.as_view(template_name="custom/pages/pages-preloader.html")
|
|
||||||
pages_timeline_view = CustomView.as_view(template_name="custom/pages/pages-timeline.html")
|
|
||||||
|
|
||||||
# Auth Pages
|
|
||||||
auth_login_view = CustomView.as_view(template_name="custom/auth-pages/auth-login.html")
|
|
||||||
auth_login2_view = CustomView.as_view(template_name="custom/auth-pages/auth-login-2.html")
|
|
||||||
auth_register_view = CustomView.as_view(template_name="custom/auth-pages/auth-register.html")
|
|
||||||
auth_register2_view = CustomView.as_view(template_name="custom/auth-pages/auth-register-2.html")
|
|
||||||
auth_logout_view = CustomView.as_view(template_name="custom/auth-pages/auth-logout.html")
|
|
||||||
auth_logout2_view = CustomView.as_view(template_name="custom/auth-pages/auth-logout-2.html")
|
|
||||||
auth_recoverpw_view = CustomView.as_view(template_name="custom/auth-pages/auth-recoverpw.html")
|
|
||||||
auth_recoverpw2_view = CustomView.as_view(template_name="custom/auth-pages/auth-recoverpw-2.html")
|
|
||||||
auth_lock_screen_view = CustomView.as_view(template_name="custom/auth-pages/auth-lock-screen.html")
|
|
||||||
auth_lock_screen2_view = CustomView.as_view(template_name="custom/auth-pages/auth-lock-screen-2.html")
|
|
||||||
auth_confirm_mail_view = CustomView.as_view(template_name="custom/auth-pages/auth-confirm-mail.html")
|
|
||||||
auth_confirm_mail2_view = CustomView.as_view(template_name="custom/auth-pages/auth-confirm-mail-2.html")
|
|
||||||
|
|
||||||
# Error Pages
|
|
||||||
error_404_view = CustomView.as_view(template_name="custom/error-pages/error-404.html")
|
|
||||||
error_404_alt_view = CustomView.as_view(template_name="custom/error-pages/error-404-alt.html")
|
|
||||||
error_500_view = CustomView.as_view(template_name="custom/error-pages/error-500.html")
|
|
@ -1,3 +0,0 @@
|
|||||||
from django.contrib import admin
|
|
||||||
|
|
||||||
# Register your models here.
|
|
@ -1,6 +0,0 @@
|
|||||||
from django.apps import AppConfig
|
|
||||||
|
|
||||||
|
|
||||||
class LayoutsConfig(AppConfig):
|
|
||||||
default_auto_field = 'django.db.models.BigAutoField'
|
|
||||||
name = 'pxy_dashboard.layouts'
|
|
@ -1,3 +0,0 @@
|
|||||||
from django.db import models
|
|
||||||
|
|
||||||
# Create your models here.
|
|
@ -1,3 +0,0 @@
|
|||||||
from django.test import TestCase
|
|
||||||
|
|
||||||
# Create your tests here.
|
|
@ -1,14 +0,0 @@
|
|||||||
from django.urls import path
|
|
||||||
from pxy_dashboard.layouts.views import horizontal_view,detached_view,full_view,fullscreen_view,hover_view,compact_view,icon_view
|
|
||||||
|
|
||||||
urlpatterns = [
|
|
||||||
|
|
||||||
# Layouts
|
|
||||||
path("horizontal", view=horizontal_view, name="horizontal"),
|
|
||||||
path("detached", view=detached_view, name="detached"),
|
|
||||||
path("full", view=full_view, name="full"),
|
|
||||||
path("fullscreen", view=fullscreen_view, name="fullscreen"),
|
|
||||||
path("hover", view=hover_view, name="hover"),
|
|
||||||
path("compact", view=compact_view, name="compact"),
|
|
||||||
path("icon-view", view=icon_view, name="icon-view"),
|
|
||||||
]
|
|
@ -1,14 +0,0 @@
|
|||||||
from django.views.generic.base import TemplateView
|
|
||||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
|
||||||
|
|
||||||
class LayoutView(LoginRequiredMixin,TemplateView):
|
|
||||||
pass
|
|
||||||
|
|
||||||
# Layouts
|
|
||||||
horizontal_view = LayoutView.as_view(template_name="custom/layouts/horizontal.html")
|
|
||||||
detached_view = LayoutView.as_view(template_name="custom/layouts/detached.html")
|
|
||||||
full_view = LayoutView.as_view(template_name="custom/layouts/full.html")
|
|
||||||
fullscreen_view = LayoutView.as_view(template_name="custom/layouts/fullscreen.html")
|
|
||||||
hover_view = LayoutView.as_view(template_name="custom/layouts/hover.html")
|
|
||||||
compact_view = LayoutView.as_view(template_name="custom/layouts/compact.html")
|
|
||||||
icon_view = LayoutView.as_view(template_name="custom/layouts/icon-view.html")
|
|
@ -1,3 +0,0 @@
|
|||||||
from django.db import models
|
|
||||||
|
|
||||||
# Create your models here.
|
|
@ -1,116 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"id": "node_1",
|
|
||||||
"icon": "ri-folder-line icon-lg text-success",
|
|
||||||
"text": "Node - 1",
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"id": "node_4",
|
|
||||||
"icon": "ri-article-line icon-lg text-warning",
|
|
||||||
"text": "Node - 1.1",
|
|
||||||
"children": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "node_5",
|
|
||||||
"icon": "ri-article-line icon-lg text-warning",
|
|
||||||
"text": "Node - 1.2",
|
|
||||||
"children": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "node_6",
|
|
||||||
"icon": "ri-folder-line icon-lg text-success",
|
|
||||||
"text": "Node - 1.3",
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"id": "node_13",
|
|
||||||
"icon": "ri-article-line icon-lg text-warning",
|
|
||||||
"text": "Node - 1.3.1",
|
|
||||||
"children": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "node_15",
|
|
||||||
"icon": "ri-article-line icon-lg text-warning",
|
|
||||||
"text": "Node - 1.3.2",
|
|
||||||
"children": false
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "node_2",
|
|
||||||
"icon": "ri-folder-line icon-lg text-success",
|
|
||||||
"text": "Node - 2",
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"id": "node_7",
|
|
||||||
"icon": "ri-article-line icon-lg text-warning",
|
|
||||||
"text": "Node - 2.1",
|
|
||||||
"children": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "node_8",
|
|
||||||
"icon": "ri-article-line icon-lg text-warning",
|
|
||||||
"text": "Node - 2.2",
|
|
||||||
"children": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "node_9",
|
|
||||||
"icon": "ri-folder-line icon-lg text-success",
|
|
||||||
"text": "Node - 2.3",
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"id": "node_16",
|
|
||||||
"icon": "ri-article-line icon-lg text-warning",
|
|
||||||
"text": "Node - 2.3.1",
|
|
||||||
"children": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "node_17",
|
|
||||||
"icon": "ri-article-line icon-lg text-warning",
|
|
||||||
"text": "Node - 2.3.2",
|
|
||||||
"children": false
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "node_3",
|
|
||||||
"icon": "ri-folder-line icon-lg text-success",
|
|
||||||
"text": "Node - 3",
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"id": "node_10",
|
|
||||||
"icon": "ri-article-line icon-lg text-warning",
|
|
||||||
"text": "Node - 3.1",
|
|
||||||
"children": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "node_11",
|
|
||||||
"icon": "ri-article-line icon-lg text-warning",
|
|
||||||
"text": "Node - 3.2",
|
|
||||||
"children": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "node_12",
|
|
||||||
"icon": "ri-folder-line icon-lg text-success",
|
|
||||||
"text": "Node - 3.3",
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"id": "node_18",
|
|
||||||
"icon": "ri-article-line icon-lg text-warning",
|
|
||||||
"text": "Node - 3.3.1",
|
|
||||||
"children": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "node_19",
|
|
||||||
"icon": "ri-article-line icon-lg text-warning",
|
|
||||||
"text": "Node - 3.3.2",
|
|
||||||
"children": false
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
Before Width: | Height: | Size: 2.0 MiB |
Before Width: | Height: | Size: 1.3 MiB |
Before Width: | Height: | Size: 7.1 KiB |
Before Width: | Height: | Size: 105 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 701 B |
Before Width: | Height: | Size: 911 B |