misc: improve TypeDeRdv interface
gitea/ants-hub/pipeline/head This commit looks good Details

This commit is contained in:
Benjamin Dauvergne 2023-04-05 16:18:53 +02:00
parent 0974ce8372
commit 7199504489
4 changed files with 32 additions and 11 deletions

View File

@ -85,8 +85,8 @@ def available_time_slots_parse_qs(request):
end_date = min(end_date, start_date + datetime.timedelta(days=180))
reason = request.GET.get('reason', 'CNI').strip()
try:
reason = TypeDeRdv.from_label(reason)
except ValueError:
reason = TypeDeRdv.from_ants_name(reason)
except KeyError:
reason = TypeDeRdv.CNI
try:
documents_number = min(int(request.GET.get('documents_number', '').strip()), 4)

View File

@ -152,7 +152,13 @@ class RendezVousDisponibleView(View):
for plage in plages:
try:
date = datetime.date.fromisoformat(plage['date'])
types_rdv = [TypeDeRdv.from_label(typ) for typ in plage['types_rdv']]
types_rdv = set()
for typ in plage['types_rdv']:
typ = typ.replace('-', '_')
try:
types_rdv.add(TypeDeRdv.from_ants_name(typ))
except KeyError:
types_rdv.add(TypeDeRdv.CNI)
if not types_rdv:
types_rdv = [TypeDeRdv.CNI]
personnes = plage.get('personnes', 1)

View File

@ -113,15 +113,16 @@ class HoraireField(models.TextField):
class TypeDeRdv(models.IntegerChoices):
CNI = 1, 'CNI'
PASSPORT = 2, 'PASSPORT'
CNI_PASSPORT = 3, 'CNI-PASSPORT'
PASSPORT = 2, 'Passeport'
CNI_PASSPORT = 3, 'CNI et passeport'
@property
def ants_name(self):
return super().name.replace('_', '-')
@classmethod
def from_label(cls, label):
for value, _label in cls.choices:
if label == _label:
return value
raise ValueError(label)
def from_ants_name(cls, name):
return cls[name.replace('-', '_')]
class TypeDeRdvField(models.SmallIntegerField):

View File

@ -1,8 +1,22 @@
# ANTS-Hub - Copyright (C) Entr'ouvert
from ants_hub.data.models import Raccordement
from ants_hub.data.models import Raccordement, TypeDeRdv
def test_raccordement(db):
apikey = Raccordement.objects.create(name='Example')
assert len(apikey.apikey) >= 32
def test_type_de_rdv():
assert TypeDeRdv.CNI.ants_name == 'CNI'
assert TypeDeRdv.PASSPORT.ants_name == 'PASSPORT'
assert TypeDeRdv.CNI_PASSPORT.ants_name == 'CNI-PASSPORT'
assert TypeDeRdv.CNI.label == 'CNI'
assert TypeDeRdv.PASSPORT.label == 'Passeport'
assert TypeDeRdv.CNI_PASSPORT.label == 'CNI et passeport'
assert TypeDeRdv.from_ants_name('CNI') == TypeDeRdv.CNI
assert TypeDeRdv.from_ants_name('PASSPORT') == TypeDeRdv.PASSPORT
assert TypeDeRdv.from_ants_name('CNI-PASSPORT') == TypeDeRdv.CNI_PASSPORT