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)