This commit is contained in:
2024-11-19 13:00:24 +07:00
commit 45e3c1f698
3462 changed files with 617437 additions and 0 deletions

0
adminapp/__init__.py Normal file
View File

3
adminapp/admin.py Normal file
View File

@@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

6
adminapp/apps.py Normal file
View File

@@ -0,0 +1,6 @@
from django.apps import AppConfig
class AdminappConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'adminapp'

View File

3
adminapp/models.py Normal file
View File

@@ -0,0 +1,3 @@
from django.db import models
# Create your models here.

3
adminapp/tests.py Normal file
View File

@@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

64
adminapp/urls.py Normal file
View File

@@ -0,0 +1,64 @@
from django.urls import path
from adminapp.views import *
urlpatterns = [
path('admin/dashboard', adminHome, name='adminHome'),
# Admin Project URLS
path('admin/projects', adminProjectList, name='adminProjectList'),
path('admin/project/create', adminProjectCreate, name='adminProjectCreate'),
path('admin/project/edit/<slug:slug>', adminProjectEdit, name='adminProjectEdit'),
path('admin/project/delete/<int:id>', adminProjectDelete, name='adminProjectDelete'),
# Admin Project Category URLS
path('admin/project-category', adminProjectCategoryList, name='adminProjectCategoryList'),
path('admin/project-category/create', adminProjectCategoryCreate, name='adminProjectCategoryCreate'),
path('admin/project-category/edit/<slug:slug>', adminProjectCategoryEdit, name='adminProjectCategoryEdit'),
path('admin/project-category/delete/<int:id>', adminProjectCategoryDelete, name='adminProjectCategoryDelete'),
# Admin Service URLS
path('admin/services', adminServiceList, name='adminServiceList'),
path('admin/service/create', adminServiceCreate, name='adminServiceCreate'),
path('admin/service/edit/<slug:slug>', adminServiceEdit, name='adminServiceEdit'),
path('admin/service/delete/<int:id>', adminServiceDelete, name='adminServiceDelete'),
# Admin Slider Element URLS
path('admin/element/sliders', adminSliderElementList, name='adminSliderElementList'),
path('admin/element/slider/create', adminSliderElementCreate, name='adminSliderElementCreate'),
path('admin/element/slider/edit/<int:id>', adminSliderElementEdit, name='adminSliderElementEdit'),
path('admin/element/slider/delete/<int:id>', adminSliderElementDelete, name='adminSliderElementDelete'),
# Admin Client Element URLS
path('admin/element/clients', adminClientElementList, name='adminClientElementList'),
path('admin/element/client/create', adminClientElementCreate, name='adminClientElementCreate'),
path('admin/element/client/edit/<int:id>', adminClientElementEdit, name='adminClientElementEdit'),
path('admin/element/client/delete/<int:id>', adminClientElementDelete, name='adminClientElementDelete'),
# Admin Contact URLS
path('admin/contacts', AdminContactList, name='AdminContactList'),
path('admin/contact/delete/<int:id>', AdminContactDelete, name='AdminContactDelete'),
# Admin Settings URLS
path('admin/settings/website-settings', AdminWebsiteSettings, name='AdminWebsiteSettings'),
path('admin/settings/header-footer', AdminHeaderFooterSettings, name='AdminHeaderFooterSettings'),
path('admin/settings/seo', AdminSEOSettings, name='AdminSEOSettings'),
# Admin Primary Menu URLS
path('admin/menus/primary-menu', AdminPrimaryMenuList, name='AdminPrimaryMenuList'),
path('admin/primary-menu/create', AdminPrimaryMenuCreate, name='AdminPrimaryMenuCreate'),
path('admin/primary-menu/edit/<int:id>', AdminPrimaryMenuEdit, name='AdminPrimaryMenuEdit'),
path('admin/primary-menu/delete/<int:id>', AdminPrimaryMenuDelete, name='AdminPrimaryMenuDelete'),
# Admin Sub Menu URLS
path('admin/menus/sub-menu', AdminSubMenuList, name='AdminSubMenuList'),
path('admin/sub-menu/create', AdminSubMenuCreate, name='AdminSubMenuCreate'),
path('admin/sub-menu/edit/<int:id>', AdminSubMenuEdit, name='AdminSubMenuEdit'),
path('admin/sub-menu/delete/<int:id>', AdminSubMenuDelete, name='AdminSubMenuDelete'),
# Admin Pages URLS
path('admin/pages/home-page', AdminHomePage, name='AdminHomePage'),
path('admin/pages/about-page', AdminAboutPage, name='AdminAboutPage'),
path('admin/pages/service-page', AdminServicePage, name='AdminServicePage'),
path('admin/pages/project-page', AdminProjectPage, name='AdminProjectPage'),
path('admin/pages/contact-page', AdminContactPage, name='AdminContactPage'),
]

684
adminapp/views.py Normal file
View File

@@ -0,0 +1,684 @@
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from core.decorators import admin_role_required, both_role_required
from home.models import *
from home.forms import *
from about.models import *
from about.forms import *
from contact.models import *
from contact.forms import *
from settings.models import *
from settings.forms import *
from menus.models import *
from menus.forms import *
from service.models import *
from service.forms import *
from project.models import *
from project.forms import *
# # # # # # # # # # # # # # # # # #
# Admin Home Page #
# # # # # # # # # # # # # # # # # #
@login_required(login_url='logIn')
@both_role_required
def adminHome(request):
services = serviceSection.objects.all()
projects = projectSection.objects.all()
clients = clientSection.objects.all()
contacts = Contact.objects.all().order_by('-created_at')
context = {
'title' : 'Dashboard',
'services': services,
'projects': projects,
'clients': clients,
'contacts' : contacts,
}
return render(request, 'dashboard/main/index.html', context)
# # # # # # # # # # # # # # # # # #
# Admin Project #
# # # # # # # # # # # # # # # # # #
@login_required(login_url='logIn')
@admin_role_required
def adminProjectList(request):
projects = projectSection.objects.all()
context = {
'title' : 'Projects',
'projects' : projects,
}
return render(request, 'dashboard/main/project/projects.html', context)
@login_required(login_url='logIn')
@admin_role_required
def adminProjectCreate(request):
if request.method == 'POST':
form = projectSectionForm(request.POST, request.FILES)
if form.is_valid():
form.save()
messages.success(request, 'Project created successfully!')
return redirect('adminProjectList')
else:
form = projectSectionForm()
context = {
'title' : 'Create Project',
'form' : form,
}
return render(request, 'dashboard/main/project/create.html', context)
@login_required(login_url='logIn')
@admin_role_required
def adminProjectEdit(request, slug):
project = get_object_or_404(projectSection, slug=slug)
if request.method == 'POST':
form = projectSectionForm(request.POST, request.FILES, instance=project)
if form.is_valid():
form.save()
messages.success(request, 'Project updated successfully!')
return redirect('adminProjectList')
else:
form = projectSectionForm(instance=project)
context = {
'title' : 'Edit Project',
'project' : project,
'form' : form,
}
return render(request, 'dashboard/main/project/edit.html', context)
@login_required(login_url='logIn')
@admin_role_required
def adminProjectDelete(request, id):
project = get_object_or_404(projectSection, id=id)
project.delete()
messages.warning(request, 'Project deleted!')
return redirect('adminProjectList')
# # # # # # # # # # # # # # # # # #
# Admin Project Categories #
# # # # # # # # # # # # # # # # # #
@login_required(login_url='logIn')
@admin_role_required
def adminProjectCategoryList(request):
categories = projectCategory.objects.all()
context = {
'title' : 'Project Categories',
'categories' : categories,
}
return render(request, 'dashboard/main/project/partial/category/categories.html', context)
@login_required(login_url='logIn')
@admin_role_required
def adminProjectCategoryCreate(request):
if request.method == 'POST':
form = projectCategoryForm(request.POST, request.FILES)
if form.is_valid():
form.save()
messages.success(request, 'Category created successfully!')
return redirect('adminProjectCategoryList')
else:
form = projectCategoryForm()
context = {
'title' : 'Create Project Category',
'form' : form,
}
return render(request, 'dashboard/main/project/partial/category/create.html', context)
@login_required(login_url='logIn')
@admin_role_required
def adminProjectCategoryEdit(request, slug):
category = get_object_or_404(projectCategory, slug=slug)
if request.method == 'POST':
form = projectCategoryForm(request.POST, request.FILES, instance=category)
if form.is_valid():
form.save()
messages.success(request, 'Category updated successfully!')
return redirect('adminProjectCategoryList')
else:
form = projectCategoryForm(instance=category)
context = {
'title' : 'Edit Project Category',
'category' : category,
'form' : form,
}
return render(request, 'dashboard/main/project/partial/category/edit.html', context)
@login_required(login_url='logIn')
@admin_role_required
def adminProjectCategoryDelete(request, id):
category = get_object_or_404(projectCategory, id=id)
category.delete()
messages.warning(request, 'Category deleted!')
return redirect('adminProjectCategoryList')
# # # # # # # # # # # # # # # # # #
# Admin Service #
# # # # # # # # # # # # # # # # # #
@login_required(login_url='logIn')
@admin_role_required
def adminServiceList(request):
services = serviceSection.objects.all()
context = {
'title' : 'Services',
'services' : services,
}
return render(request, 'dashboard/main/service/services.html', context)
@login_required(login_url='logIn')
@admin_role_required
def adminServiceCreate(request):
if request.method == 'POST':
form = serviceForm(request.POST, request.FILES)
if form.is_valid():
form.save()
messages.success(request, 'Service created successfully!')
return redirect('adminServiceList')
else:
form = serviceForm()
context = {
'title' : 'Create Service',
'form' : form,
}
return render(request, 'dashboard/main/service/create.html', context)
@login_required(login_url='logIn')
@admin_role_required
def adminServiceEdit(request, slug):
service = get_object_or_404(serviceSection, slug=slug)
if request.method == 'POST':
form = serviceForm(request.POST, request.FILES, instance=service)
if form.is_valid():
form.save()
messages.success(request, 'Service updated successfully!')
return redirect('adminServiceList')
else:
form = serviceForm(instance=service)
context = {
'title' : 'Edit Service',
'service' : service,
'form' : form,
}
return render(request, 'dashboard/main/service/edit.html', context)
@login_required(login_url='logIn')
@admin_role_required
def adminServiceDelete(request, id):
service = get_object_or_404(serviceSection, id=id)
service.delete()
messages.warning(request, 'Service deleted!')
return redirect('adminServiceList')
# # # # # # # # # # # # # # # # # #
# Admin Slider Element #
# # # # # # # # # # # # # # # # # #
@login_required(login_url='logIn')
@admin_role_required
def adminSliderElementList(request):
sliders = sliderSection.objects.all()
context = {
'title' : 'Sliders',
'sliders' : sliders,
}
return render(request, 'dashboard/main/elements/slider/sliders.html', context)
@login_required(login_url='logIn')
@admin_role_required
def adminSliderElementCreate(request):
if request.method == 'POST':
form = sliderForm(request.POST, request.FILES)
if form.is_valid():
form.save()
messages.success(request, 'Slider created successfully!')
return redirect('adminSliderElementList')
else:
form = sliderForm()
context = {
'title' : 'Create Slider',
'form' : form,
}
return render(request, 'dashboard/main/elements/slider/create.html', context)
@login_required(login_url='logIn')
@admin_role_required
def adminSliderElementEdit(request, id):
slider = get_object_or_404(sliderSection, id=id)
if request.method == 'POST':
form = sliderForm(request.POST, request.FILES, instance=slider)
if form.is_valid():
form.save()
messages.success(request, 'Slider updated successfully!')
return redirect('adminSliderElementList')
else:
form = sliderForm(instance=slider)
context = {
'title' : 'Edit Slider',
'form' : form,
'slider' : slider,
}
return render(request, 'dashboard/main/elements/slider/edit.html', context)
@login_required(login_url='logIn')
@admin_role_required
def adminSliderElementDelete(request, id):
slider = get_object_or_404(sliderSection, id=id)
slider.delete()
messages.warning(request, 'Slider deleted!')
return redirect('adminSliderElementList')
# # # # # # # # # # # # # # # # # #
# Admin Client Element #
# # # # # # # # # # # # # # # # # #
@login_required(login_url='logIn')
@admin_role_required
def adminClientElementList(request):
clients = clientSection.objects.all()
context = {
'title' : 'Clients',
'clients' : clients,
}
return render(request, 'dashboard/main/elements/client/clients.html', context)
@login_required(login_url='logIn')
@admin_role_required
def adminClientElementCreate(request):
if request.method == 'POST':
form = clientSectionForm(request.POST, request.FILES)
if form.is_valid():
form.save()
messages.success(request, 'Client created successfully!')
return redirect('adminClientElementList')
else:
form = clientSectionForm()
context = {
'title' : 'Create Client',
'form' : form,
}
return render(request, 'dashboard/main/elements/client/create.html', context)
@login_required(login_url='logIn')
@admin_role_required
def adminClientElementEdit(request, id):
client = get_object_or_404(clientSection, id=id)
if request.method == 'POST':
form = clientSectionForm(request.POST, request.FILES, instance=client)
if form.is_valid():
form.save()
messages.success(request, 'Client updated successfully!')
return redirect('adminClientElementList')
else:
form = clientSectionForm(instance=client)
context = {
'title' : 'Edit Client',
'form' : form,
'client' : client,
}
return render(request, 'dashboard/main/elements/client/edit.html', context)
@login_required(login_url='logIn')
@admin_role_required
def adminClientElementDelete(request, id):
client = get_object_or_404(clientSection, id=id)
client.delete()
messages.warning(request, 'Client deleted!')
return redirect('adminClientElementList')
# # # # # # # # # # # # # # # # # #
# Admin Contacts #
# # # # # # # # # # # # # # # # # #
@login_required(login_url='logIn')
@admin_role_required
def AdminContactList(request):
contacts = Contact.objects.all()
context = {
'title' : 'Contacts',
'contacts' : contacts,
}
return render(request, 'dashboard/main/form_data/contacts.html', context)
@login_required(login_url='logIn')
@admin_role_required
def AdminContactDelete(request, id):
contact = get_object_or_404(Contact, id=id)
contact.delete()
messages.warning(request, 'Contact deleted!')
return redirect('AdminContactList')
# # # # # # # # # # # # # # # # # #
# Admin Website Settings #
# # # # # # # # # # # # # # # # # #
@login_required(login_url='logIn')
@admin_role_required
def AdminWebsiteSettings(request):
setting = websiteSetting.objects.first()
if request.method == 'POST':
form = websiteSettingForm(request.POST, request.FILES, instance=setting)
if form.is_valid():
form.save()
messages.success(request, 'Settings updated successfully!')
return redirect('AdminWebsiteSettings')
else:
form = websiteSettingForm(instance=setting)
context = {
'title' : 'Website Settings',
'setting' : setting,
'form' : form,
}
return render(request, 'dashboard/main/setting/website.html', context)
@login_required(login_url='logIn')
@admin_role_required
def AdminHeaderFooterSettings(request):
hf = headerFooterSetting.objects.first()
if request.method == 'POST':
form = headerFooterSettingForm(request.POST, request.FILES, instance=hf)
if form.is_valid():
form.save()
messages.success(request, 'Header footer updated successfully!')
return redirect('AdminHeaderFooterSettings')
else:
form = headerFooterSettingForm(instance=hf)
context = {
'title' : 'Header Footer Settings',
'hf' : hf,
'form' : form,
}
return render(request, 'dashboard/main/setting/hf.html', context)
@login_required(login_url='logIn')
@admin_role_required
def AdminSEOSettings(request):
seo = SeoSetting.objects.first()
if request.method == 'POST':
form = SeoSettingForm(request.POST, request.FILES, instance=seo)
if form.is_valid():
form.save()
messages.success(request, 'SEO settings updated successfully!')
return redirect('AdminSEOSettings')
else:
form = SeoSettingForm(instance=seo)
context = {
'title' : 'SEO Settings',
'seo' : seo,
'form' : form,
}
return render(request, 'dashboard/main/setting/seo.html', context)
# # # # # # # # # # # # # # # # # #
# Admin Primary Menus #
# # # # # # # # # # # # # # # # # #
@login_required(login_url='logIn')
@admin_role_required
def AdminPrimaryMenuList(request):
menus = primaryMenu.objects.all()
context = {
'title' : 'Menus',
'menus' : menus,
}
return render(request, 'dashboard/main/menu/primary/menus.html', context)
@login_required(login_url='logIn')
@admin_role_required
def AdminPrimaryMenuCreate(request):
if request.method == 'POST':
form = primaryMenuForm(request.POST)
if form.is_valid():
order = form.cleaned_data['order']
if primaryMenu.objects.filter(order=order).exists():
form.add_error('order', 'A menu with this order already exists. Use a different order.')
else:
form.save()
messages.success(request, 'Menu created successfully!')
return redirect('AdminPrimaryMenuList')
else:
form = primaryMenuForm()
context = {
'title': 'Create Menu',
'form': form,
}
return render(request, 'dashboard/main/menu/primary/create.html', context)
@login_required(login_url='logIn')
@admin_role_required
def AdminPrimaryMenuEdit(request, id):
menu = get_object_or_404(primaryMenu, id=id)
if request.method == 'POST':
form = primaryMenuForm(request.POST, instance=menu)
if form.is_valid():
order = form.cleaned_data['order']
if primaryMenu.objects.filter(order=order).exclude(id=id).exists():
form.add_error('order', 'A menu with this order already exists. Use a different order.')
else:
form.save()
messages.success(request, 'Menu updated successfully!')
return redirect('AdminPrimaryMenuList')
else:
form = primaryMenuForm(instance=menu)
context = {
'title': 'Edit Menu',
'form': form,
'menu': menu,
}
return render(request, 'dashboard/main/menu/primary/edit.html', context)
@login_required(login_url='logIn')
@admin_role_required
def AdminPrimaryMenuDelete(request, id):
menu = get_object_or_404(primaryMenu, id=id)
menu.delete()
messages.warning(request, 'Menu deleted!')
return redirect('AdminPrimaryMenuList')
# # # # # # # # # # # # # # # # # #
# Admin Sub Menus #
# # # # # # # # # # # # # # # # # #
@login_required(login_url='logIn')
@admin_role_required
def AdminSubMenuList(request):
submenus = subMenu.objects.all()
context = {
'title' : 'Sub Menus',
'submenus' : submenus,
}
return render(request, 'dashboard/main/menu/sub/menus.html', context)
@login_required(login_url='logIn')
@admin_role_required
def AdminSubMenuCreate(request):
if request.method == 'POST':
form = subMenuForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, 'Submenu created successfully!')
return redirect('AdminSubMenuList')
else:
form = subMenuForm()
context = {
'title': 'Create Submenu',
'form': form,
}
return render(request, 'dashboard/main/menu/sub/create.html', context)
@login_required(login_url='logIn')
@admin_role_required
def AdminSubMenuEdit(request, id):
submenu = get_object_or_404(subMenu, id=id)
if request.method == 'POST':
form = subMenuForm(request.POST, instance=submenu)
if form.is_valid():
form.save()
messages.success(request, 'Submenu updated successfully!')
return redirect('AdminSubMenuList')
else:
form = subMenuForm(instance=submenu)
context = {
'title': 'Edit Submenu',
'form': form,
'submenu': submenu,
}
return render(request, 'dashboard/main/menu/sub/edit.html', context)
@login_required(login_url='logIn')
@admin_role_required
def AdminSubMenuDelete(request, id):
submenu = get_object_or_404(subMenu, id=id)
submenu.delete()
messages.warning(request, 'Submenu deleted!')
return redirect('AdminSubMenuList')
# # # # # # # # # # # # # # # # # #
# Admin Page Edit #
# # # # # # # # # # # # # # # # # #
@login_required(login_url='logIn')
@admin_role_required
def AdminHomePage(request):
homeabout = aboutSection.objects.first()
homeSEO = homePageSEO.objects.first()
if request.method == 'POST':
if 'subtitle' in request.POST:
form = aboutSectionForm(request.POST, request.FILES, instance = homeabout)
if form.is_valid():
form.save()
messages.success(request, 'Home page updated successfully!')
return redirect('AdminHomePage')
elif 'meta_title' in request.POST:
SeoForm = homePageSEOForm(request.POST, request.FILES, instance = homeSEO)
if SeoForm.is_valid():
SeoForm.save()
messages.success(request, 'Home page seo updated successfully!')
return redirect('AdminHomePage')
else:
return redirect('AdminHomePage')
else:
form = aboutSectionForm(instance = homeabout)
SeoForm = homePageSEOForm(instance = homeSEO)
context ={
'title' : 'Home Page',
'form' : form,
'SeoForm' : SeoForm,
'homeabout' : homeabout,
}
return render(request, 'dashboard/main/pages/home.html', context)
@login_required(login_url='logIn')
@admin_role_required
def AdminAboutPage(request):
aboutSection = aboutPage.objects.first()
aboutSEO = aboutPageSEO.objects.first()
if request.method == 'POST':
if 'subtitle' in request.POST:
form = aboutPageForm(request.POST, request.FILES, instance=aboutSection)
if form.is_valid():
form.save()
messages.success(request, 'About page updated successfully!')
return redirect('AdminAboutPage')
elif 'meta_title' in request.POST:
SeoForm = aboutPageSEOForm(request.POST, request.FILES, instance = aboutSEO)
if SeoForm.is_valid():
SeoForm.save()
messages.success(request, 'About page seo updated successfully!')
return redirect('AdminAboutPage')
else:
return redirect('AdminAboutPage')
else:
form = aboutPageForm(instance=aboutSection)
SeoForm = aboutPageSEOForm(instance=aboutSEO)
context = {
'title' : 'About Page',
'form' : form,
'SeoForm' : SeoForm,
}
return render(request, 'dashboard/main/pages/about.html', context)
@login_required(login_url='logIn')
@admin_role_required
def AdminServicePage(request):
serviceSEO = servicePageSEO.objects.first()
if request.method == 'POST':
SeoForm = servicePageSEOForm(request.POST, instance = serviceSEO)
if SeoForm.is_valid():
SeoForm.save()
messages.success(request, 'Service page seo updated successfully!')
return redirect('AdminServicePage')
else:
SeoForm = servicePageSEOForm(instance = serviceSEO)
context = {
'title' : 'Service Page',
'SeoForm' : SeoForm,
}
return render(request, 'dashboard/main/pages/service.html', context)
@login_required(login_url='logIn')
@admin_role_required
def AdminProjectPage(request):
projectSEO = projectPageSEO.objects.first()
if request.method == 'POST':
SeoForm = projectPageSEOForm(request.POST, instance = projectSEO)
if SeoForm.is_valid():
SeoForm.save()
messages.success(request, 'Project page seo updated successfully!')
return redirect('AdminProjectPage')
else:
SeoForm = projectPageSEOForm(instance = projectSEO)
context = {
'title' : 'Project Page',
'SeoForm' : SeoForm,
}
return render(request, 'dashboard/main/pages/project.html', context)
@login_required(login_url='logIn')
@admin_role_required
def AdminContactPage(request):
contactSEO = contactPageSEO.objects.first()
if request.method == 'POST':
SeoForm = contactPageSEOForm(request.POST, instance = contactSEO)
if SeoForm.is_valid():
SeoForm.save()
messages.success(request, 'Contact page seo updated successfully!')
return redirect('AdminContactPage')
else:
SeoForm = contactPageSEOForm(instance = contactSEO)
context = {
'title' : 'Contact Page',
'SeoForm' : SeoForm,
}
return render(request, 'dashboard/main/pages/contact.html', context)
@login_required(login_url='logIn')
@admin_role_required
def AdminPolicyPage(request):
policy = Policy.objects.first()
if request.method == 'POST':
form = policyForm(request.POST, instance=policy)
if form.is_valid():
form.save()
messages.success(request, 'Privacy policy updated successfully')
return redirect('AdminPolicyPage')
else:
form = policyForm(instance=policy)
context = {
'title' : 'Policy Page',
'form' : form,
}
return render(request, 'dashboard/main/pages/policy.html', context)
# Error Page
def error_404(request, exception):
return render(request, 'error/404.html', status=404)
def error_500(request):
return render(request, 'error/500.html', status=500)