feat: initial commit - Band Management application

This commit is contained in:
2026-01-06 03:11:46 +01:00
commit 34e12e00b3
24543 changed files with 3991790 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
# Register your models here.

View File

@@ -0,0 +1,6 @@
from django.apps import AppConfig
class LayoutsConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "apps.layouts"

View File

@@ -0,0 +1,2 @@
# Create your models here.

View File

@@ -0,0 +1,10 @@
{% extends layout_path %}
{% load static %}
{% load i18n %}
{% block title %}Blank layout - Layouts{% endblock %}
{% block content %}
<h4 class="p-4">Blank Page</h4>
{% endblock %}

View File

@@ -0,0 +1,22 @@
{% extends layout_path %}
{% load static %}
{% load i18n %}
{% block title %}Collapsed menu - Layouts{% endblock %}
{% block content %}
<!-- Layout Demo -->
<div class="layout-demo-wrapper">
<div class="layout-demo-placeholder">
<img src="{% static 'img/layouts/layout-collapsed-menu-' %}{{ COOKIES.theme|default:theme }}.png" class="img-fluid" alt="Layout collapsed menu" data-app-light-img="layouts/layout-collapsed-menu-light.png" data-app-dark-img="layouts/layout-collapsed-menu-dark.png">
</div>
<div class="layout-demo-info">
<h4>Layout collapsed menu</h4>
<div class="alert alert-primary mt-6" role="alert">
<span class="fw-medium">Important:</span> If you have enabled localStorage then the menu (navigation) will be synced with localStorage value.
</div>
</div>
</div>
<!--/ Layout Demo -->
{% endblock %}

View File

@@ -0,0 +1,24 @@
{% extends layout_path %}
{% load static %}
{% load i18n %}
{% block title %}Container - Layouts{% endblock %}
{% block content %}
<!-- Layout Demo -->
<div class="layout-demo-wrapper">
<div class="layout-demo-placeholder">
{% if menu_horizontal %}
<img src="{% static 'img/layouts/layout-horizontal-container-' %}{{ COOKIES.theme|default:theme }}.png" class="img-fluid" alt="Layout container" data-app-light-img="layouts/layout-horizontal-container-light.png" data-app-dark-img="layouts/layout-horizontal-container-dark.png">
{% else %}
<img src="{% static 'img/layouts/layout-container-' %}{{ COOKIES.theme|default:theme }}.png" class="img-fluid" alt="Layout container" data-app-light-img="layouts/layout-container-light.png" data-app-dark-img="layouts/layout-container-dark.png">
{% endif %}
</div>
<div class="layout-demo-info">
<h4>Layout container</h4>
<p>Container layout sets a <code>max-width</code> at each responsive breakpoint.</p>
</div>
</div>
<!--/ Layout Demo -->
{% endblock %}

View File

@@ -0,0 +1,20 @@
{% extends layout_path %}
{% load static %}
{% load i18n %}
{% block title %}Content navbar - Layouts{% endblock %}
{% block content %}
<!-- Layout Demo -->
<div class="layout-demo-wrapper">
<div class="layout-demo-placeholder">
<img src="{% static 'img/layouts/layout-content-navbar-' %}{{ COOKIES.theme|default:theme }}.png" class="img-fluid" alt="Layout content navbar" data-app-light-img="layouts/layout-content-navbar-light.png" data-app-dark-img="layouts/layout-content-navbar-dark.png">
</div>
<div class="layout-demo-info">
<h4>Layout content navbar</h4>
<p>Template default layout, navbar in content area.</p>
</div>
</div>
<!--/ Layout Demo -->
{% endblock %}

View File

@@ -0,0 +1,28 @@
{% extends layout_path %}
{% load static %}
{% load i18n %}
{% block title %}Content navbar + Sidebar - Layouts{% endblock %}
{% block content %}
<div class="flex-shrink-1 flex-grow-0 w-px-350 border-end container-p-x container-p-y">
<div class="layout-example-sidebar layout-example-content-inner">
Sidebar
</div>
</div>
<div class="flex-shrink-1 flex-grow-1 container-p-x container-p-y">
<!-- Layout Demo -->
<div class="layout-demo-wrapper">
<div class="layout-demo-placeholder">
<img src="{% static 'img/layouts/layout-content-navbar-and-sidebar-' %}{{ COOKIES.theme|default:theme }}.png" class="img-fluid" alt="Layout content navbar + sidebar" data-app-light-img="layouts/layout-content-navbar-and-sidebar-light.png" data-app-dark-img="layouts/layout-content-navbar-and-sidebar-dark.png">
</div>
<div class="layout-demo-info">
<h4>Layout content navbar + sidebar</h4>
<p>Container layout sets a <code>max-width</code> at each responsive breakpoint.</p>
</div>
</div>
<!--/ Layout Demo -->
</div>
{% endblock %}

View File

@@ -0,0 +1,24 @@
{% extends layout_path %}
{% load static %}
{% load i18n %}
{% block title %}Fluid - Layouts{% endblock %}
{% block content %}
<!-- Layout Demo -->
<div class="layout-demo-wrapper">
<div class="layout-demo-placeholder">
{% if menu_horizontal %}
<img src="{% static 'img/layouts/layout-horizontal-fluid-' %}{{ COOKIES.theme|default:theme }}.png" class="img-fluid" alt="Layout fluid" data-app-light-img="layouts/layout-horizontal-fluid-light.png" data-app-dark-img="layouts/layout-horizontal-fluid-dark.png">
{% else %}
<img src="{% static 'img/layouts/layout-fluid-' %}{{ COOKIES.theme|default:theme }}.png" class="img-fluid" alt="Layout fluid" data-app-light-img="layouts/layout-fluid-light.png" data-app-dark-img="layouts/layout-fluid-dark.png">
{% endif %}
</div>
<div class="layout-demo-info">
<h4>Layout fluid</h4>
<p>Fluid layout sets a <code>100% width</code> at each responsive breakpoint.</p>
</div>
</div>
<!--/ Layout Demo -->
{% endblock %}

View File

@@ -0,0 +1,12 @@
{% extends layout_path %}
{% load static %}
{% load i18n %}
{% block title %}Horizontal - Layouts{% endblock %}
{% block content %}
<h4 class="p-4">Horizontal Layout</h4>
{% endblock %}

View File

@@ -0,0 +1,24 @@
{% extends layout_path %}
{% load static %}
{% load i18n %}
{% block title %}Without menu - Layouts{% endblock %}
{% block content %}
<!-- Layout Demo -->
<div class="layout-demo-wrapper">
<div class="layout-demo-placeholder">
{% if menu_horizontal %}
<img src="{% static 'img/layouts/layout-horizontal-without-menu-' %}{{ COOKIES.theme|default:theme }}.png" class="img-fluid" alt="Layout without menu" data-app-light-img="layouts/layout-horizontal-without-menu-light.png" data-app-dark-img="layouts/layout-horizontal-without-menu-dark.png">
{% else %}
<img src="{% static 'img/layouts/layout-without-menu-' %}{{ COOKIES.theme|default:theme }}.png" class="img-fluid" alt="Layout without menu" data-app-light-img="layouts/layout-without-menu-light.png" data-app-dark-img="layouts/layout-without-menu-dark.png">
{% endif %}
</div>
<div class="layout-demo-info">
<h4>Layout without Menu (Navigation)</h4>
<button class="btn btn-primary" type="button" onclick="history.back()">Go Back</button>
</div>
</div>
<!--/ Layout Demo -->
{% endblock %}

View File

@@ -0,0 +1,20 @@
{% extends layout_path %}
{% load static %}
{% load i18n %}
{% block title %}Without navbar - Layouts{% endblock %}
{% block content %}
<!-- Layout Demo -->
<div class="layout-demo-wrapper">
<div class="layout-demo-placeholder">
<img src="{% static 'img/layouts/layout-without-navbar-' %}{{ COOKIES.theme|default:theme }}.png" class="img-fluid" alt="Layout without navbar" data-app-light-img="layouts/layout-without-navbar-light.png" data-app-dark-img="layouts/layout-without-navbar-dark.png">
</div>
<div class="layout-demo-info">
<h4>Layout without Navbar</h4>
<p>Layout does not contain Navbar component.</p>
</div>
</div>
<!--/ Layout Demo -->
{% endblock %}

View File

@@ -0,0 +1,62 @@
from django.urls import path
from .views import (
CollapsedMenuView,
ContentNavSidebarView,
VerticalView,
HorizontalView,
WithoutMenuView,
WithoutNavView,
FluidView,
ContainerView,
BlankView,
)
from django.contrib.auth.decorators import login_required
urlpatterns = [
path(
"layouts/collapsed_menu/",
login_required(CollapsedMenuView.as_view(template_name="layouts_collapsed_menu.html")),
name="layouts-collapsed-menu",
),
path(
"layouts/content_navbar/",
login_required(VerticalView.as_view(template_name="layouts_content_navbar.html")),
name="layouts-content-navbar",
),
path(
"layouts/content_nav_sidebar/",
login_required(ContentNavSidebarView.as_view(template_name="layouts_content_navbar_with_sidebar.html")),
name="layouts-content-nav-sidebar",
),
path(
"layouts/horizontal/",
login_required(HorizontalView.as_view(template_name="layouts_horizontal.html")),
name="layouts-horizontal",
),
path(
"layouts/without_menu/",
login_required(WithoutMenuView.as_view(template_name="layouts_without_menu.html")),
name="layouts-without-menu",
),
path(
"layouts/without_navbar/",
login_required(WithoutNavView.as_view(template_name="layouts_without_navbar.html")),
name="layouts-without-navbar",
),
path(
"layouts/fluid/",
login_required(FluidView.as_view(template_name="layouts_fluid.html")),
name="layouts-fluid",
),
path(
"layouts/container/",
login_required(ContainerView.as_view(template_name="layouts_container.html")),
name="layouts-container",
),
path(
"layouts/blank/",
login_required(BlankView.as_view(template_name="layouts_blank.html")),
name="layouts-blank",
),
]

View File

@@ -0,0 +1,179 @@
from django.views.generic import TemplateView
from web_project import TemplateLayout
from web_project.template_helpers.theme import TemplateHelper
"""
This file is a view controller for multiple pages as a module.
Here you can override the page view layout.
Refer to layouts/urls.py file for more pages.
"""
class CollapsedMenuView(TemplateView):
# Predefined function
def get_context_data(self, **kwargs):
# A function to init the global layout. It is defined in web_project/__init__.py file
context = TemplateLayout.init(self, super().get_context_data(**kwargs))
# Update the context
context.update(
{
"menu_collapsed": True,
}
)
TemplateHelper.map_context(context)
return context
class ContentNavSidebarView(TemplateView):
# Predefined function
def get_context_data(self, **kwargs):
# A function to init the global layout. It is defined in web_project/__init__.py file
context = TemplateLayout.init(self, super().get_context_data(**kwargs))
# Update the context
context.update(
{
"is_flex": True,
}
)
TemplateHelper.map_context(context)
return context
class VerticalView(TemplateView):
# Predefined function
def get_context_data(self, **kwargs):
# A function to init the global layout. It is defined in web_project/__init__.py file
context = TemplateLayout.init(self, super().get_context_data(**kwargs))
# Update the context
context.update(
{
"layout": "vertical",
"navbar_full": False,
"layout_path": TemplateHelper.set_layout(
"layout_vertical.html", context
),
}
)
TemplateHelper.map_context(context)
return context
class HorizontalView(TemplateView):
# Predefined function
def get_context_data(self, **kwargs):
# A function to init the global layout. It is defined in web_project/__init__.py file
context = TemplateLayout.init(self, super().get_context_data(**kwargs))
# Update the context
context.update(
{
"layout": "horizontal",
"layout_path": TemplateHelper.set_layout(
"layout_horizontal.html", context
),
}
)
TemplateHelper.map_context(context)
return context
class WithoutMenuView(TemplateView):
# Predefined function
def get_context_data(self, **kwargs):
# A function to init the global layout. It is defined in web_project/__init__.py file
context = TemplateLayout.init(self, super().get_context_data(**kwargs))
# Update the context
context.update(
{
"is_menu": False,
}
)
TemplateHelper.map_context(context)
return context
class WithoutNavView(TemplateView):
# Predefined function
def get_context_data(self, **kwargs):
# A function to init the global layout. It is defined in web_project/__init__.py file
context = TemplateLayout.init(self, super().get_context_data(**kwargs))
# Update the context
context.update(
{
"is_navbar": False,
"navbar_type": "hidden",
}
)
TemplateHelper.map_context(context)
return context
class FluidView(TemplateView):
# Predefined function
def get_context_data(self, **kwargs):
# A function to init the global layout. It is defined in web_project/__init__.py file
context = TemplateLayout.init(self, super().get_context_data(**kwargs))
# Update the context
context.update(
{
"content_layout": "wide",
}
)
TemplateHelper.map_context(context)
return context
class ContainerView(TemplateView):
# Predefined function
def get_context_data(self, **kwargs):
# A function to init the global layout. It is defined in web_project/__init__.py file
context = TemplateLayout.init(self, super().get_context_data(**kwargs))
# Update the context
context.update(
{
"content_layout": "compact",
}
)
TemplateHelper.map_context(context)
return context
class BlankView(TemplateView):
# Predefined function
def get_context_data(self, **kwargs):
# A function to init the global layout. It is defined in web_project/__init__.py file
context = TemplateLayout.init(self, super().get_context_data(**kwargs))
# Update the context
context.update(
{
"layout_path": TemplateHelper.set_layout("layout_blank.html", context),
}
)
TemplateHelper.map_context(context)
return context