Added locations app

Moved contacts to new model
This commit is contained in:
st01765
2026-02-26 13:34:32 +11:00
parent a24daed8f6
commit 4025c28eae
25 changed files with 576 additions and 75 deletions
+101 -23
View File
@@ -1,9 +1,12 @@
import requests
from django import forms
from django.conf import settings
from django.db.models import Prefetch
from django.http import HttpResponseRedirect
from django.shortcuts import render
from traveller.models import Family
def _get_token():
url = 'https://products.api.telstra.com/v2/oauth/token'
@@ -81,45 +84,120 @@ class SMSForm(forms.Form):
def _get_numbers(request, queryset):
send_to_parents = bool(request.POST.get("send_to_parents"))
send_to_emergency_contacts = bool(request.POST.get("send_to_emergency_contacts"))
only_include_active_travellers = bool(request.POST.get("only_include_active_travellers"))
numbers = []
for traveller in queryset:
if only_include_active_travellers and not traveller._is_active():
numbers = set()
families_prefetch = Prefetch(
"family_set",
queryset=Family.objects.select_related(
"contact_A",
"contact_B",
"emergency_contact_A",
"emergency_contact_B",
)
)
travellers = queryset.prefetch_related(families_prefetch)
for traveller in travellers:
if only_include_active_travellers and not traveller.is_active:
continue
for family in traveller.get_families():
family_numbers, _ = family.get_parsed_numbers(parents=send_to_parents, emergency=send_to_emergency_contacts)
if family_numbers:
numbers = numbers + family_numbers
return list(set(numbers)) # Remove duplicates
for family in traveller.family_set.all():
family_numbers, _ = family.get_parsed_numbers(
parents=send_to_parents,
emergency=send_to_emergency_contacts
)
numbers.update(family_numbers)
return list(numbers)
def _family_context(queryset):
families_prefetch = Prefetch(
"family_set",
queryset=Family.objects.select_related(
"contact_A",
"contact_B",
"emergency_contact_A",
"emergency_contact_B",
)
)
travellers = queryset.prefetch_related(families_prefetch)
family_set = []
for traveller in queryset:
families = traveller.get_families()
if len(families) == 0:
for traveller in travellers:
families = traveller.family_set.all()
if not families:
family_set.append({
'traveller': traveller.__str__(),
'has_failed_number': True
"traveller": str(traveller),
"has_failed_number": True
})
continue
for family in families:
_, failed_numbers = family.get_parsed_numbers(True, True)
family_context = {
'traveller': traveller.__str__(),
'has_failed_number': len(failed_numbers) > 0
"traveller": str(traveller),
"has_failed_number": len(failed_numbers) > 0,
}
if family.parent_A_phone:
family_context['parent_A'] = f"{family.parent_A_firstname} {family.parent_A_lastname} ({family.parent_A_phone})"
if family.parent_B_phone:
family_context['parent_B'] = f"{family.parent_B_firstname} {family.parent_B_lastname} ({family.parent_B_phone})"
if family.emergency_contact_A_phone:
family_context['contact_A'] = f"{family.emergency_contact_A_firstname} {family.emergency_contact_A_lastname} ({family.emergency_contact_A_phone})"
if family.emergency_contact_B_phone:
family_context['contact_B'] = f"{family.emergency_contact_B_firstname} {family.emergency_contact_B_lastname} ({family.emergency_contact_B_phone})"
# -----------------------
# Parent A
# -----------------------
if family.contact_A:
family_context["parent_A"] = (
f"{family.contact_A.first_name} "
f"{family.contact_A.last_name} "
f"({family.contact_A.phone})"
)
# -----------------------
# Parent B
# -----------------------
if family.contact_B:
family_context["parent_B"] = (
f"{family.contact_B.first_name} "
f"{family.contact_B.last_name} "
f"({family.contact_B.phone})"
)
# -----------------------
# Emergency A
# -----------------------
if family.emergency_contact_A:
family_context["contact_A"] = (
f"{family.emergency_contact_A.first_name} "
f"{family.emergency_contact_A.last_name} "
f"({family.emergency_contact_A.phone})"
)
# -----------------------
# Emergency B
# -----------------------
if family.emergency_contact_B:
family_context["contact_B"] = (
f"{family.emergency_contact_B.first_name} "
f"{family.emergency_contact_B.last_name} "
f"({family.emergency_contact_B.phone})"
)
family_set.append(family_context)
return family_set