misc: optimize generation of rdv url
reverse() and request.build_absolute_uri() are expensive, replace them by staticaly generating URLs with a BASE_URL setting.
This commit is contained in:
parent
f6466af00c
commit
81c5984edc
|
@ -1,3 +1,4 @@
|
||||||
|
BASE_URL = 'http://127.0.0.1:9040/'
|
||||||
SECRET_KEY = '1234'
|
SECRET_KEY = '1234'
|
||||||
LOGGING = {
|
LOGGING = {
|
||||||
'version': 1,
|
'version': 1,
|
||||||
|
|
|
@ -7,8 +7,10 @@ import logging
|
||||||
import secrets
|
import secrets
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
|
import urllib.parse
|
||||||
import zoneinfo
|
import zoneinfo
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
from django.http import JsonResponse
|
from django.http import JsonResponse
|
||||||
from django.utils.text import slugify
|
from django.utils.text import slugify
|
||||||
|
|
||||||
|
@ -155,6 +157,9 @@ def available_time_slots(request):
|
||||||
'lieu__collectivite__pk',
|
'lieu__collectivite__pk',
|
||||||
'lieu__collectivite__nom',
|
'lieu__collectivite__nom',
|
||||||
)
|
)
|
||||||
|
base_url = getattr(settings, 'BASE_URL', None)
|
||||||
|
if not base_url:
|
||||||
|
base_callback_url = request.build_absolute_uri('/')
|
||||||
for date, horaires, duree, lieu_pk, lieu_nom, collectivite_pk, collectivite_nom in qs:
|
for date, horaires, duree, lieu_pk, lieu_nom, collectivite_pk, collectivite_nom in qs:
|
||||||
lieu_slug = slugify(lieu_nom)
|
lieu_slug = slugify(lieu_nom)
|
||||||
collectivite_slug = slugify(collectivite_nom)
|
collectivite_slug = slugify(collectivite_nom)
|
||||||
|
@ -167,7 +172,10 @@ def available_time_slots(request):
|
||||||
collectivite_pk=collectivite_pk,
|
collectivite_pk=collectivite_pk,
|
||||||
collectivite_slug=collectivite_slug,
|
collectivite_slug=collectivite_slug,
|
||||||
):
|
):
|
||||||
callback_url = request.build_absolute_uri(url)
|
if not base_url:
|
||||||
|
callback_url = urllib.parse.urljoin(base_callback_url, url)
|
||||||
|
else:
|
||||||
|
callback_url = base_url + url
|
||||||
if date not in date_by_lieu[lieu_pk]:
|
if date not in date_by_lieu[lieu_pk]:
|
||||||
# prevent the same datetime to be reported multiple times
|
# prevent the same datetime to be reported multiple times
|
||||||
date_by_lieu[lieu_pk].add(date)
|
date_by_lieu[lieu_pk].add(date)
|
||||||
|
|
|
@ -324,17 +324,11 @@ def make_available_time_slots(date, horaires, duree, **kwargs):
|
||||||
start += datetime.timedelta(minutes=duree)
|
start += datetime.timedelta(minutes=duree)
|
||||||
|
|
||||||
|
|
||||||
|
template_make_rdv_url = None
|
||||||
|
|
||||||
|
|
||||||
def make_rdv_url(collectivite_pk, collectivite_slug, lieu_pk, lieu_slug, date):
|
def make_rdv_url(collectivite_pk, collectivite_slug, lieu_pk, lieu_slug, date):
|
||||||
return reverse(
|
return f'rdv/{collectivite_slug}-{collectivite_pk}/{lieu_slug}-{lieu_pk}/{date.isoformat()}/'
|
||||||
'rdv-redirect',
|
|
||||||
kwargs={
|
|
||||||
'collectivite_pk': collectivite_pk,
|
|
||||||
'collectivite_slug': collectivite_slug,
|
|
||||||
'lieu_pk': lieu_pk,
|
|
||||||
'lieu_slug': lieu_slug,
|
|
||||||
'date': date,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class Plage(models.Model):
|
class Plage(models.Model):
|
||||||
|
|
Loading…
Reference in New Issue