Add Django site, Docker packaging, and beta/prod Gitea deploys.
Deploy Beta / unit-tests (push) Successful in 9s
Deploy Beta / docker (push) Successful in 17s
Deploy Beta / deploy-beta (push) Successful in 2m31s

Unignore site/ (was blocked by mkdocs /site rule), add compose/Docker/uv tooling, and split deploys so push to main goes to beta while prod stays manual.
This commit is contained in:
2026-08-08 07:32:55 -05:00
parent 7dca98bbf6
commit 1f7d78de64
204 changed files with 21662 additions and 70 deletions
+51
View File
@@ -0,0 +1,51 @@
from django.contrib.auth.decorators import login_required
from django.db.models import Q
from django.shortcuts import get_object_or_404, render
from contacts.models import Channel
from leads.models import Lead
@login_required
def lead_list(request):
leads = Lead.objects.select_related("contact", "attribution").all()
q = (request.GET.get("q") or "").strip()
status = (request.GET.get("status") or "").strip()
if q:
leads = leads.filter(
Q(contact__first_name__icontains=q)
| Q(contact__last_name__icontains=q)
| Q(contact__email__icontains=q)
| Q(contact__phone__icontains=q)
| Q(message__icontains=q)
)
if status:
leads = leads.filter(status=status)
return render(
request,
"leads/list.html",
{
"leads": leads[:200],
"status_choices": Lead.Status.choices,
"q": q,
"status_filter": status,
},
)
@login_required
def lead_detail(request, pk):
lead = get_object_or_404(
Lead.objects.select_related(
"contact", "attribution", "attribution__visit"
).prefetch_related("notes", "contact__consents"),
pk=pk,
)
consent_map = {c.value: False for c in Channel}
for record in lead.contact.consents.all():
consent_map[record.channel] = record.opted_in
return render(
request,
"leads/detail.html",
{"lead": lead, "consent_map": consent_map},
)