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">
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' %}
+
+{% 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