From 5128de314bd429cf2ccb93d3be2e6cf9d75e8582 Mon Sep 17 00:00:00 2001 From: Christophe SCAYA <> Date: Sat, 24 Sep 2022 10:15:15 +0200 Subject: [PATCH] Settings en BDD; correction divers bugs --- Docs/Zones CDG 2022.md | 15 ------- EscapeGame/templates/admin_template.html | 4 +- app/admin.py | 30 ++++++++++++-- app/apps.py | 1 - app/forms.py | 3 ++ app/functions.py | 9 ++++- app/migrations/0001_initial.py | 33 +++++++++++++++ .../0002_alter_zone_code_alter_zone_etat.py | 23 +++++++++++ ...one_code_alter_distance_unique_together.py | 22 ++++++++++ .../0004_equipe_alter_zone_code_challenge.py | 40 +++++++++++++++++++ ...allenge_code_alter_equipe_code_and_more.py | 29 ++++++++++++++ app/migrations/0006_alter_zone_code.py | 19 +++++++++ ...ime_alter_challenge_start_time_and_more.py | 33 +++++++++++++++ ...ime_alter_challenge_start_time_and_more.py | 33 +++++++++++++++ app/migrations/0009_challenge_rank.py | 18 +++++++++ app/migrations/0010_alter_challenge_zone.py | 19 +++++++++ app/migrations/0011_alter_challenge_zone.py | 19 +++++++++ app/migrations/0012_zone_description.py | 18 +++++++++ .../0013_remove_challenge_code_zone_mdp.py | 23 +++++++++++ app/migrations/0014_alter_zone_mdp.py | 19 +++++++++ app/migrations/0015_settings.py | 20 ++++++++++ app/migrations/__init__.py | 0 app/models.py | 3 ++ app/templates/app/settings.html | 10 +++++ app/templates/app/zone.html | 2 +- app/urls.py | 1 + app/views.py | 34 ++++++++++++++-- 27 files changed, 453 insertions(+), 27 deletions(-) delete mode 100644 Docs/Zones CDG 2022.md create mode 100644 app/migrations/0001_initial.py create mode 100644 app/migrations/0002_alter_zone_code_alter_zone_etat.py create mode 100644 app/migrations/0003_alter_zone_code_alter_distance_unique_together.py create mode 100644 app/migrations/0004_equipe_alter_zone_code_challenge.py create mode 100644 app/migrations/0005_alter_challenge_code_alter_equipe_code_and_more.py create mode 100644 app/migrations/0006_alter_zone_code.py create mode 100644 app/migrations/0007_alter_challenge_end_time_alter_challenge_start_time_and_more.py create mode 100644 app/migrations/0008_alter_challenge_end_time_alter_challenge_start_time_and_more.py create mode 100644 app/migrations/0009_challenge_rank.py create mode 100644 app/migrations/0010_alter_challenge_zone.py create mode 100644 app/migrations/0011_alter_challenge_zone.py create mode 100644 app/migrations/0012_zone_description.py create mode 100644 app/migrations/0013_remove_challenge_code_zone_mdp.py create mode 100644 app/migrations/0014_alter_zone_mdp.py create mode 100644 app/migrations/0015_settings.py create mode 100644 app/migrations/__init__.py create mode 100644 app/templates/app/settings.html diff --git a/Docs/Zones CDG 2022.md b/Docs/Zones CDG 2022.md deleted file mode 100644 index e81000f..0000000 --- a/Docs/Zones CDG 2022.md +++ /dev/null @@ -1,15 +0,0 @@ -**Zone : salle 202**
-***Mdp :*** 1200
-***Description :***
-Bienvenue dans l’antre de Mendeleïev ! Pour trouver le code de cette salle, rendez-vous près du tableau périodique et effectuez la somme des numéros atomiques de tous les éléments commençant par les lettres P et R. - -**Zone : salle 209**
-***Mdp :*** 1365
-***Description :***
-Bienvenue dans l'antre de la robotique. Pour sortir de la salle, commencez d'abord par chercher où se trouvent les petits robots bleus. Allumez ensuite dans l'ordre les robots 2, 4, 6 et 8. A l'allumage, chaque robot fournit un code de couleur qui correspond à un chiffre (voir feuille collée sur l'armoire). Le code pour sortir de la salle correspond à l'assemblage de ces 4 chiffres ! -Nb : Si vous voulez revoir le code couleur d'un robot, il suffit de l'éteindre et de la rallumer. Merci d'éteindre les robots une fois le code trouvé ! - -**Zone : toiture terrasse**
-***Mdp :*** 9412
-***Description :***
-Contrairement à ce que l’on pourrait croire, la « toiture terrasse inaccessible » du CDI, n’est pas si inaccessible qu’il n’y paraît. À vous de trouver comment vous y rendre. Une fois sur place, regardez votre plan, le code se trouve sur l’objet représenté par un cercle noir. \ No newline at end of file diff --git a/EscapeGame/templates/admin_template.html b/EscapeGame/templates/admin_template.html index b9b4219..35f683b 100644 --- a/EscapeGame/templates/admin_template.html +++ b/EscapeGame/templates/admin_template.html @@ -58,8 +58,8 @@ aria-expanded="true" aria-controls="collapseTwo">
-Initialisier jeu -blabla +Initialisier jeu +Paramètres
diff --git a/app/admin.py b/app/admin.py index 89e0c17..3cc74bc 100644 --- a/app/admin.py +++ b/app/admin.py @@ -2,7 +2,29 @@ from django.contrib import admin from .models import Zone, Distance, Equipe, Challenge -admin.site.register(Zone) -admin.site.register(Distance) -admin.site.register(Equipe) -admin.site.register(Challenge) +class zoneAdmin(admin.ModelAdmin): + list_display = ('zone', 'etat') + def zone(self, obj): + return obj.nom+" ("+str(obj.code)+")" + +class distanceAdmin(admin.ModelAdmin): + list_display = ('zone1','zone2', 'distance') + def zone1(self, obj): + return obj.zone1.nom + def zone2(self, obj): + return obj.zone2.nom + +class equipeAdmin(admin.ModelAdmin): + list_display = ('pk','nom') + +class challengeAdmin(admin.ModelAdmin): + list_display = ('equipe','zone','rank') + def equipe(self, obj): + return obj.equipe.nom + def zone(self, obj): + return obj.zone.nom + +admin.site.register(Zone, zoneAdmin) +admin.site.register(Distance, distanceAdmin) +admin.site.register(Equipe, equipeAdmin) +admin.site.register(Challenge, challengeAdmin) diff --git a/app/apps.py b/app/apps.py index 97d9751..d626b4b 100644 --- a/app/apps.py +++ b/app/apps.py @@ -3,4 +3,3 @@ from django.apps import AppConfig class AppConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'app' - nb_challenges = 4 diff --git a/app/forms.py b/app/forms.py index 62df739..af04008 100644 --- a/app/forms.py +++ b/app/forms.py @@ -15,3 +15,6 @@ class LoginForm(forms.Form): class ZoneForm(forms.Form): code = forms.DecimalField(label="Code", min_value=1000, max_value=9999, decimal_places=0) + +class SettingsForm(forms.Form): + nb_challenges = forms.DecimalField(label="Nombre de challenges", min_value=1, max_value=10, decimal_places=0) diff --git a/app/functions.py b/app/functions.py index 35b0560..ab31877 100644 --- a/app/functions.py +++ b/app/functions.py @@ -3,6 +3,13 @@ from django.db.models import Max; from django.apps import apps from datetime import datetime +def getSettings(): + try: + settings = Settings.objects.all()[0] + return settings + except IndexError: + return None + def getMaxChallenge(equipe): max_rank = Challenge.objects.filter(equipe=equipe).aggregate(max_rank=Max("rank"))['max_rank'] if max_rank is None: @@ -28,7 +35,7 @@ def createChallenge(equipe): challenge = Challenge(equipe=equipe,zone=attributeZone(),rank=1) challenge.save() return challenge - if max_rank < apps.get_app_config('app').nb_challenges: + if max_rank < getSettings().nb_challenges: challenge = Challenge(equipe=equipe,zone=attributeZone(equipe),rank=max_rank+1) challenge.save() return challenge diff --git a/app/migrations/0001_initial.py b/app/migrations/0001_initial.py new file mode 100644 index 0000000..e55d0f2 --- /dev/null +++ b/app/migrations/0001_initial.py @@ -0,0 +1,33 @@ +# Generated by Django 4.1 on 2022-08-09 19:24 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Zone', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('nom', models.CharField(max_length=50)), + ('etat', models.CharField(choices=[('L', 'Libre'), ('A', 'Attibuée'), ('O', 'Occupée')], max_length=1)), + ('code', models.IntegerField()), + ], + ), + migrations.CreateModel( + name='Distance', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('distance', models.IntegerField()), + ('zone1', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='zone1', to='app.zone')), + ('zone2', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='zone2', to='app.zone')), + ], + ), + ] diff --git a/app/migrations/0002_alter_zone_code_alter_zone_etat.py b/app/migrations/0002_alter_zone_code_alter_zone_etat.py new file mode 100644 index 0000000..8ccbd51 --- /dev/null +++ b/app/migrations/0002_alter_zone_code_alter_zone_etat.py @@ -0,0 +1,23 @@ +# Generated by Django 4.1 on 2022-08-09 19:31 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='zone', + name='code', + field=models.IntegerField(default=6258), + ), + migrations.AlterField( + model_name='zone', + name='etat', + field=models.CharField(choices=[('L', 'Libre'), ('A', 'Attibuée'), ('O', 'Occupée')], default='L', max_length=1), + ), + ] diff --git a/app/migrations/0003_alter_zone_code_alter_distance_unique_together.py b/app/migrations/0003_alter_zone_code_alter_distance_unique_together.py new file mode 100644 index 0000000..b06156e --- /dev/null +++ b/app/migrations/0003_alter_zone_code_alter_distance_unique_together.py @@ -0,0 +1,22 @@ +# Generated by Django 4.1 on 2022-08-09 19:36 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0002_alter_zone_code_alter_zone_etat'), + ] + + operations = [ + migrations.AlterField( + model_name='zone', + name='code', + field=models.IntegerField(default=2017), + ), + migrations.AlterUniqueTogether( + name='distance', + unique_together={('zone1', 'zone2')}, + ), + ] diff --git a/app/migrations/0004_equipe_alter_zone_code_challenge.py b/app/migrations/0004_equipe_alter_zone_code_challenge.py new file mode 100644 index 0000000..7ffee96 --- /dev/null +++ b/app/migrations/0004_equipe_alter_zone_code_challenge.py @@ -0,0 +1,40 @@ +# Generated by Django 4.1 on 2022-08-12 12:03 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0003_alter_zone_code_alter_distance_unique_together'), + ] + + operations = [ + migrations.CreateModel( + name='Equipe', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('nom', models.CharField(max_length=50)), + ('code', models.IntegerField(default=3892)), + ('start_time', models.TimeField()), + ('end_time', models.TimeField()), + ], + ), + migrations.AlterField( + model_name='zone', + name='code', + field=models.IntegerField(default=4254), + ), + migrations.CreateModel( + name='Challenge', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('code', models.IntegerField(default=6920)), + ('start_time', models.TimeField()), + ('end_time', models.TimeField()), + ('equipe', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='app.equipe')), + ('zone', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='app.zone')), + ], + ), + ] diff --git a/app/migrations/0005_alter_challenge_code_alter_equipe_code_and_more.py b/app/migrations/0005_alter_challenge_code_alter_equipe_code_and_more.py new file mode 100644 index 0000000..fd7cbcc --- /dev/null +++ b/app/migrations/0005_alter_challenge_code_alter_equipe_code_and_more.py @@ -0,0 +1,29 @@ +# Generated by Django 4.1 on 2022-08-22 14:30 + +import app.models +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0004_equipe_alter_zone_code_challenge'), + ] + + operations = [ + migrations.AlterField( + model_name='challenge', + name='code', + field=models.IntegerField(default=app.models.random_string, unique=True), + ), + migrations.AlterField( + model_name='equipe', + name='code', + field=models.IntegerField(default=app.models.random_string, unique=True), + ), + migrations.AlterField( + model_name='zone', + name='code', + field=models.IntegerField(default=3734), + ), + ] diff --git a/app/migrations/0006_alter_zone_code.py b/app/migrations/0006_alter_zone_code.py new file mode 100644 index 0000000..28839f0 --- /dev/null +++ b/app/migrations/0006_alter_zone_code.py @@ -0,0 +1,19 @@ +# Generated by Django 4.1 on 2022-08-22 14:32 + +import app.models +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0005_alter_challenge_code_alter_equipe_code_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='zone', + name='code', + field=models.IntegerField(default=app.models.random_string, unique=True), + ), + ] diff --git a/app/migrations/0007_alter_challenge_end_time_alter_challenge_start_time_and_more.py b/app/migrations/0007_alter_challenge_end_time_alter_challenge_start_time_and_more.py new file mode 100644 index 0000000..cc71456 --- /dev/null +++ b/app/migrations/0007_alter_challenge_end_time_alter_challenge_start_time_and_more.py @@ -0,0 +1,33 @@ +# Generated by Django 4.1 on 2022-08-23 13:45 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0006_alter_zone_code'), + ] + + operations = [ + migrations.AlterField( + model_name='challenge', + name='end_time', + field=models.TimeField(null=True), + ), + migrations.AlterField( + model_name='challenge', + name='start_time', + field=models.TimeField(null=True), + ), + migrations.AlterField( + model_name='equipe', + name='end_time', + field=models.TimeField(null=True), + ), + migrations.AlterField( + model_name='equipe', + name='start_time', + field=models.TimeField(null=True), + ), + ] diff --git a/app/migrations/0008_alter_challenge_end_time_alter_challenge_start_time_and_more.py b/app/migrations/0008_alter_challenge_end_time_alter_challenge_start_time_and_more.py new file mode 100644 index 0000000..7b2fd64 --- /dev/null +++ b/app/migrations/0008_alter_challenge_end_time_alter_challenge_start_time_and_more.py @@ -0,0 +1,33 @@ +# Generated by Django 4.1 on 2022-08-23 13:47 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0007_alter_challenge_end_time_alter_challenge_start_time_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='challenge', + name='end_time', + field=models.TimeField(blank=True, null=True), + ), + migrations.AlterField( + model_name='challenge', + name='start_time', + field=models.TimeField(blank=True, null=True), + ), + migrations.AlterField( + model_name='equipe', + name='end_time', + field=models.TimeField(blank=True, null=True), + ), + migrations.AlterField( + model_name='equipe', + name='start_time', + field=models.TimeField(blank=True, null=True), + ), + ] diff --git a/app/migrations/0009_challenge_rank.py b/app/migrations/0009_challenge_rank.py new file mode 100644 index 0000000..c9fba80 --- /dev/null +++ b/app/migrations/0009_challenge_rank.py @@ -0,0 +1,18 @@ +# Generated by Django 4.1 on 2022-08-24 13:43 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0008_alter_challenge_end_time_alter_challenge_start_time_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='challenge', + name='rank', + field=models.IntegerField(default=1), + ), + ] diff --git a/app/migrations/0010_alter_challenge_zone.py b/app/migrations/0010_alter_challenge_zone.py new file mode 100644 index 0000000..aa973b2 --- /dev/null +++ b/app/migrations/0010_alter_challenge_zone.py @@ -0,0 +1,19 @@ +# Generated by Django 4.1 on 2022-08-24 13:56 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0009_challenge_rank'), + ] + + operations = [ + migrations.AlterField( + model_name='challenge', + name='zone', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='app.zone'), + ), + ] diff --git a/app/migrations/0011_alter_challenge_zone.py b/app/migrations/0011_alter_challenge_zone.py new file mode 100644 index 0000000..c6f7529 --- /dev/null +++ b/app/migrations/0011_alter_challenge_zone.py @@ -0,0 +1,19 @@ +# Generated by Django 4.1 on 2022-08-24 20:49 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0010_alter_challenge_zone'), + ] + + operations = [ + migrations.AlterField( + model_name='challenge', + name='zone', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='app.zone'), + ), + ] diff --git a/app/migrations/0012_zone_description.py b/app/migrations/0012_zone_description.py new file mode 100644 index 0000000..a6af2b0 --- /dev/null +++ b/app/migrations/0012_zone_description.py @@ -0,0 +1,18 @@ +# Generated by Django 4.1 on 2022-09-01 20:56 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0011_alter_challenge_zone'), + ] + + operations = [ + migrations.AddField( + model_name='zone', + name='description', + field=models.TextField(default=''), + ), + ] diff --git a/app/migrations/0013_remove_challenge_code_zone_mdp.py b/app/migrations/0013_remove_challenge_code_zone_mdp.py new file mode 100644 index 0000000..cec808a --- /dev/null +++ b/app/migrations/0013_remove_challenge_code_zone_mdp.py @@ -0,0 +1,23 @@ +# Generated by Django 4.1 on 2022-09-05 21:36 + +import app.models +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0012_zone_description'), + ] + + operations = [ + migrations.RemoveField( + model_name='challenge', + name='code', + ), + migrations.AddField( + model_name='zone', + name='mdp', + field=models.IntegerField(default=app.models.random_string), + ), + ] diff --git a/app/migrations/0014_alter_zone_mdp.py b/app/migrations/0014_alter_zone_mdp.py new file mode 100644 index 0000000..42bd029 --- /dev/null +++ b/app/migrations/0014_alter_zone_mdp.py @@ -0,0 +1,19 @@ +# Generated by Django 4.1 on 2022-09-05 21:39 + +import app.models +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0013_remove_challenge_code_zone_mdp'), + ] + + operations = [ + migrations.AlterField( + model_name='zone', + name='mdp', + field=models.IntegerField(default=app.models.random_string, unique=True), + ), + ] diff --git a/app/migrations/0015_settings.py b/app/migrations/0015_settings.py new file mode 100644 index 0000000..1b5bd8a --- /dev/null +++ b/app/migrations/0015_settings.py @@ -0,0 +1,20 @@ +# Generated by Django 4.1 on 2022-09-23 21:32 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0014_alter_zone_mdp'), + ] + + operations = [ + migrations.CreateModel( + name='Settings', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('nb_challenges', models.IntegerField(default=1)), + ], + ), + ] diff --git a/app/migrations/__init__.py b/app/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/models.py b/app/models.py index 6656639..e0747f4 100644 --- a/app/models.py +++ b/app/models.py @@ -45,3 +45,6 @@ class Challenge(models.Model): end_time = models.TimeField(null=True, blank=True) def __str__(self): return self.equipe.nom+" -> salle : "+self.zone.nom+" rang : "+str(self.rank) + +class Settings(models.Model): + nb_challenges = models.IntegerField(default = 1) diff --git a/app/templates/app/settings.html b/app/templates/app/settings.html new file mode 100644 index 0000000..de82b5b --- /dev/null +++ b/app/templates/app/settings.html @@ -0,0 +1,10 @@ +{% extends 'admin_template.html' %}{% block 'contenu' %} +
{% csrf_token %} +
+{{ form.as_div }} +
+
+ +
+
+{% endblock %} diff --git a/app/templates/app/zone.html b/app/templates/app/zone.html index de938a4..91504ba 100644 --- a/app/templates/app/zone.html +++ b/app/templates/app/zone.html @@ -1,6 +1,6 @@ {% extends 'default_template.html' %} {% block 'contenu' %} -
+
{{zone.description |safe}}
{% if zone.description %} diff --git a/app/urls.py b/app/urls.py index 9a505b2..974dea4 100644 --- a/app/urls.py +++ b/app/urls.py @@ -11,5 +11,6 @@ urlpatterns = [ path('dashboard/', views.createNewGame, name='createNewGame'), path('admin-dashboard/', views.dashboard, name='admin-dashboard'), path('admin-distances/', views.distances, name='admin-distances'), + path('settings/', views.settings, name='settings'), path('dashboard/createNewGame', views.createNewGame, name='createNewGame'), ] diff --git a/app/views.py b/app/views.py index 4c904b0..5545842 100644 --- a/app/views.py +++ b/app/views.py @@ -105,7 +105,7 @@ def setEquipe(request): max_rank = Challenge.objects.filter(equipe=equipe).aggregate(max_rank=Max("rank"))['max_rank'] if max_rank is None: max_rank = 0 - if max_rank < apps.get_app_config('app').nb_challenges: + if max_rank < getSettings().nb_challenges: context = { 'zone': getMaxChallenge(Equipe.objects.get(code=request.session['equipe_code'])).zone.nom, 'equipe_nom': request.session['equipe_nom'], @@ -126,7 +126,7 @@ def dashboard(request): return redirect("/admin/login/?next=/admin-dashboard") template = loader.get_template('app/dashboard.html') - liste_equipe = Equipe.objects.all() + liste_equipe = Equipe.objects.all().order_by('nom') liste_equipe_challenges = list() for equipe in liste_equipe: @@ -163,7 +163,7 @@ def dashboard(request): liste_equipe_challenges.append(data) nb_challenges = list() - for i in range(apps.get_app_config('app').nb_challenges): + for i in range(getSettings().nb_challenges): nb_challenges.append(i+1) context = { @@ -215,6 +215,34 @@ def distances(request): 'title': "Gestion des distances", } return HttpResponse(template.render(context, request)) + +def settings(request): + template = loader.get_template('app/settings.html') + if request.method == 'POST': + form = SettingsForm(request.POST) + if form.is_valid(): + settings = getSettings() + if settings is None: + settings = Settings(nb_challenges = int(form.cleaned_data['nb_challenges'])) + settings.save() + else: + settings.nb_challenges = int(form.cleaned_data['nb_challenges']) + settings.save() + try: + settings = Settings.objects.all()[0] + initial_values = { + "nb_challenges":settings.nb_challenges, + } + context = { + 'form': SettingsForm(initial = initial_values), + 'title': "Paramètres", + } + except IndexError: + context = { + 'form': SettingsForm(), + 'title': "Paramètres", + } + return HttpResponse(template.render(context, request)) """ Fonction createNewGame