Improve public SEO and align chrome with EXIT Realty teal.
Add meta/canonical/OG, robots/sitemap, and contact-form admin email; restyle consent, icons, and scroll-top away from theme blue.
This commit is contained in:
+57
-1
@@ -1,8 +1,10 @@
|
||||
from django.conf import settings
|
||||
from django.contrib import messages
|
||||
from django.http import HttpResponse
|
||||
from django.shortcuts import redirect, render
|
||||
from django.urls import reverse
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
from django.views.decorators.http import require_http_methods
|
||||
from django.views.decorators.http import require_GET, require_http_methods
|
||||
|
||||
from analytics.services import attribute_lead_from_request
|
||||
from contacts.models import Channel, ConsentRecord, Contact
|
||||
@@ -15,6 +17,14 @@ from messaging.services import (
|
||||
unsubscribe_all,
|
||||
)
|
||||
from public.forms import ContactForm, NotifyForm
|
||||
from public.notifications import notify_admins_of_contact_form
|
||||
|
||||
|
||||
def _public_site_base(request) -> str:
|
||||
base = (settings.PUBLIC_SITE_URL or "").rstrip("/")
|
||||
if base:
|
||||
return base
|
||||
return request.build_absolute_uri("/").rstrip("/")
|
||||
|
||||
|
||||
def home(request):
|
||||
@@ -25,6 +35,51 @@ def about(request):
|
||||
return render(request, "public/about.html")
|
||||
|
||||
|
||||
@require_GET
|
||||
def robots_txt(request):
|
||||
site = _public_site_base(request)
|
||||
body = "\n".join(
|
||||
[
|
||||
"User-agent: *",
|
||||
"Allow: /",
|
||||
"Disallow: /portal/",
|
||||
"Disallow: /accounts/",
|
||||
"Disallow: /admin/",
|
||||
"Disallow: /api/",
|
||||
f"Sitemap: {site}/sitemap.xml",
|
||||
"",
|
||||
]
|
||||
)
|
||||
return HttpResponse(body, content_type="text/plain; charset=utf-8")
|
||||
|
||||
|
||||
@require_GET
|
||||
def sitemap_xml(request):
|
||||
site = _public_site_base(request)
|
||||
paths = [
|
||||
("public:home", "1.0", "weekly"),
|
||||
("public:about", "0.8", "monthly"),
|
||||
("public:contact", "0.9", "monthly"),
|
||||
]
|
||||
urls = []
|
||||
for name, priority, changefreq in paths:
|
||||
path = reverse(name)
|
||||
urls.append(
|
||||
" <url>\n"
|
||||
f" <loc>{site}{path}</loc>\n"
|
||||
f" <changefreq>{changefreq}</changefreq>\n"
|
||||
f" <priority>{priority}</priority>\n"
|
||||
" </url>"
|
||||
)
|
||||
body = (
|
||||
'<?xml version="1.0" encoding="UTF-8"?>\n'
|
||||
'<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n'
|
||||
+ "\n".join(urls)
|
||||
+ "\n</urlset>\n"
|
||||
)
|
||||
return HttpResponse(body, content_type="application/xml; charset=utf-8")
|
||||
|
||||
|
||||
@require_http_methods(["GET", "POST"])
|
||||
def contact(request):
|
||||
if request.method == "POST":
|
||||
@@ -72,6 +127,7 @@ def contact(request):
|
||||
status=Lead.Status.NEW,
|
||||
)
|
||||
attribute_lead_from_request(request, lead)
|
||||
notify_admins_of_contact_form(lead)
|
||||
messages.success(request, "Thanks — Monica will be in touch soon.")
|
||||
return redirect(f"{reverse('public:contact')}?sent=1")
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user