222 lines
7.3 KiB
Python
Executable File
222 lines
7.3 KiB
Python
Executable File
from django.shortcuts import render, redirect
|
|
from django.http import HttpResponse
|
|
from django.views.generic import TemplateView,View
|
|
|
|
from .models import Subscriber
|
|
from django.views.generic import TemplateView
|
|
from django.utils import timezone
|
|
from django.contrib import messages
|
|
from at_django_boilerplate.backend_admin.models import SEOConfiguration
|
|
|
|
# at_django_boilerplate/core/views.py
|
|
from django.shortcuts import redirect
|
|
from django.views.generic import TemplateView
|
|
import random
|
|
from django.shortcuts import redirect
|
|
from django.views.generic import TemplateView
|
|
from django.utils import timezone
|
|
from .models import ABTestRecord
|
|
from django.urls import reverse_lazy
|
|
from at_django_boilerplate.accounts.models import CustomUser
|
|
from django.contrib.auth import login
|
|
from at_django_boilerplate.utils.encryption_utils import EncryptionUtils
|
|
enc = EncryptionUtils()
|
|
|
|
class IndexView(TemplateView):
|
|
template_name = 'index.html' # default (we'll override dynamically)
|
|
|
|
def dispatch(self, request, *args, **kwargs):
|
|
# Redirect logged-in users
|
|
if request.user.is_authenticated:
|
|
return redirect('dashboard')
|
|
|
|
# Assign variant (if not already assigned)
|
|
variant = request.session.get('ab_variant')
|
|
if not variant:
|
|
variant = random.choice(['A', 'B'])
|
|
request.session['ab_variant'] = variant
|
|
|
|
# Ensure session exists
|
|
if not request.session.session_key:
|
|
request.session.create()
|
|
|
|
# Optional: record in DB for analytics
|
|
ABTestRecord.objects.get_or_create(
|
|
session_key=request.session.session_key,
|
|
defaults={'variant': variant},
|
|
)
|
|
|
|
# Store chosen template name
|
|
self.template_name = 'index.html'
|
|
return super().dispatch(request, *args, **kwargs)
|
|
|
|
|
|
|
|
class DashboardView(TemplateView):
|
|
template_name = 'dashboard.html'
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
context['meta_title'] = "Dashboard - Register Your Startup"
|
|
context['meta_description'] = "Manage your startup journey with Register Your Startup."
|
|
return context
|
|
|
|
def get_seo():
|
|
return SEOConfiguration.objects.first()
|
|
|
|
class TermsView(TemplateView):
|
|
template_name = 'legal/toc.html'
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
seo = SEOConfiguration.objects.first()
|
|
|
|
context["meta_title"] = seo.term_and_con_meta_title if seo else "Terms & Conditions - Zestato"
|
|
context["meta_description"] = seo.term_and_con_meta_description if seo else "View our latest terms and conditions."
|
|
return context
|
|
|
|
|
|
class PrivacyPolicyView(TemplateView):
|
|
template_name = 'legal/privacy.html'
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
seo = SEOConfiguration.objects.first()
|
|
|
|
context["meta_title"] = seo.privacy_pol_meta_title if seo else "Privacy Policy - Zestato"
|
|
context["meta_description"] = seo.privacy_pol_meta_description if seo else "Read Zestato's privacy practices and data usage policy."
|
|
return context
|
|
|
|
|
|
|
|
class DataProtectionView(TemplateView):
|
|
template_name = 'legal/data_protection.html'
|
|
|
|
class ImprintView(TemplateView):
|
|
template_name = 'legal/imprint.html'
|
|
|
|
class PressView(TemplateView):
|
|
template_name = 'company/press.html'
|
|
|
|
class SuccessStories(TemplateView):
|
|
template_name = 'company/success_stories.html'
|
|
|
|
class Training(TemplateView):
|
|
template_name = 'company/training.html'
|
|
|
|
class HelpAndSupport(TemplateView):
|
|
template_name = 'company/help_and_support.html'
|
|
|
|
class AboutUsView(TemplateView):
|
|
template_name = 'company/about_us.html'
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
seo = SEOConfiguration.objects.first()
|
|
|
|
context["meta_title"] = seo.about_meta_title if seo else "About Us - Zestato"
|
|
context["meta_description"] = seo.about_meta_description if seo else "Learn about Zestato's mission, values, and team."
|
|
return context
|
|
|
|
class BlogsView(TemplateView):
|
|
template_name = 'company/blog.html'
|
|
|
|
class OurCoreTeam(TemplateView):
|
|
template_name = 'company/ourcoreteam.html'
|
|
|
|
class CookiePolicy(TemplateView):
|
|
template_name = 'legal/cookiepolicy.html'
|
|
|
|
|
|
|
|
class CareersView(TemplateView):
|
|
template_name = 'company/careers.html'
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
seo = SEOConfiguration.objects.first()
|
|
context["meta_title"] = seo.career_meta_title if seo else "Careers - Zestato"
|
|
context["meta_description"] = seo.career_meta_description if seo else "Explore exciting career opportunities at Zestato."
|
|
return context
|
|
|
|
class FaqView(TemplateView):
|
|
template_name = 'company/faq.html'
|
|
|
|
|
|
def robots_txt(request):
|
|
seo = SEOConfiguration.objects.first()
|
|
|
|
lines = [
|
|
"User-Agent: *",
|
|
"Disallow: /admin/",
|
|
"Allow: /",
|
|
]
|
|
|
|
# Optionally add canonical URLs as Sitemap entries (if available)
|
|
if seo:
|
|
if seo.term_and_con_canonical_url:
|
|
lines.append(f"Sitemap: {seo.term_and_con_canonical_url}")
|
|
if seo.privacy_pol_canonical_url:
|
|
lines.append(f"Sitemap: {seo.privacy_pol_canonical_url}")
|
|
|
|
return HttpResponse("\n".join(lines), content_type="text/plain")
|
|
|
|
|
|
|
|
def custom_500(request):
|
|
# You can add extra context or logging here
|
|
return render(request, 'defaults/500.html', status=500)
|
|
|
|
def custom_404(request, exception=None):
|
|
# You can add any additional context here if necessary
|
|
return render(request, 'defaults/404.html', status=404)
|
|
|
|
|
|
def custom_400(request, exception=None):
|
|
# You can customize the context further if needed
|
|
return render(request, 'defaults/400.html', status=400)
|
|
|
|
def custom_403(request, exception=None):
|
|
# You can customize the context further if needed
|
|
return render(request, 'defaults/403.html', status=403)
|
|
|
|
|
|
def subscribe_view(request):
|
|
if request.method == "POST":
|
|
email = request.POST.get("email")
|
|
if email:
|
|
# created = False
|
|
# subscriber = None
|
|
subscriber, created = Subscriber.objects.get_or_create(email=email)
|
|
|
|
if created:
|
|
messages.success(request, "Thank you for subscribing!")
|
|
else:
|
|
if subscriber.is_active:
|
|
messages.warning(request, "You are already subscribed.")
|
|
else:
|
|
subscriber.is_active = True
|
|
subscriber.subscribed_at = timezone.now() # update date
|
|
subscriber.save()
|
|
messages.success(request, "Welcome back! You have been re-subscribed.")
|
|
return redirect("index")
|
|
|
|
return render(request, "company/subscriber.html")
|
|
|
|
|
|
|
|
def unsubscribe_view(request, id):
|
|
try:
|
|
subscriber = Subscriber.objects.get(id=id)
|
|
if subscriber.is_active:
|
|
subscriber.is_active = False
|
|
subscriber.save()
|
|
messages.success(request, "You have been unsubscribed successfully.")
|
|
else:
|
|
messages.info(request, "You are already unsubscribed.")
|
|
except Subscriber.DoesNotExist:
|
|
messages.error(request, "Invalid unsubscribe link.")
|
|
|
|
return redirect("index")
|
|
|