Browse Source

Modifs

Suite du dev de la vue displayZone

Corrections dans le modèle
master
Christophe SCAYA 3 years ago
parent
commit
b4199be71b
  1. 2
      EscapeGame/settings.py
  2. 23
      app/migrations/0013_remove_challenge_code_zone_mdp.py
  3. 19
      app/migrations/0014_alter_zone_mdp.py
  4. 7
      app/models.py
  5. 6
      app/templates/app/setEquipe.html
  6. 32
      app/templates/app/zone.html
  7. 16
      app/views.py

2
EscapeGame/settings.py

@ -28,7 +28,7 @@ SECRET_KEY = 'django-insecure-k!mw8ni52p!p*--q(6ma_)=$or^x)#4f5zc2=s+xm+bo6!$&k#
# SECURITY WARNING: don't run with debug turned on in production! # SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True DEBUG = True
ALLOWED_HOSTS = [] ALLOWED_HOSTS = ["*"]
# Application definition # Application definition

23
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),
),
]

19
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),
),
]

7
app/models.py

@ -3,7 +3,8 @@ import random
from django.db import models from django.db import models
def random_string(): def random_string():
return str(random.randint(1000, 9999)) value = str(random.randint(1000, 9999))
return value
class Zone(models.Model): class Zone(models.Model):
ETATS = ( ETATS = (
@ -13,7 +14,8 @@ class Zone(models.Model):
) )
nom = models.CharField(max_length=50) nom = models.CharField(max_length=50)
etat = models.CharField(max_length=1, choices=ETATS, default = 'L') etat = models.CharField(max_length=1, choices=ETATS, default = 'L')
code = models.IntegerField(default = random_string, unique=True) code = models.IntegerField(default = random_string, unique=True)#code pour accéder à la zone
mdp = models.IntegerField(default = random_string, unique=True)#code pour valider la zone
description = models.TextField(default = '') description = models.TextField(default = '')
def __str__(self): def __str__(self):
return self.nom+" : "+self.get_etat_display()+" ("+str(self.code)+")" return self.nom+" : "+self.get_etat_display()+" ("+str(self.code)+")"
@ -38,7 +40,6 @@ class Equipe(models.Model):
class Challenge(models.Model): class Challenge(models.Model):
equipe = models.ForeignKey(Equipe, on_delete=models.CASCADE) equipe = models.ForeignKey(Equipe, on_delete=models.CASCADE)
zone = models.ForeignKey(Zone, on_delete=models.CASCADE) zone = models.ForeignKey(Zone, on_delete=models.CASCADE)
code = models.IntegerField(default = random_string, unique=True)#code pour valider le challenge en cours
rank = models.IntegerField(default = 1)#rang du challenge dans la liste rank = models.IntegerField(default = 1)#rang du challenge dans la liste
start_time = models.TimeField(null=True, blank=True) start_time = models.TimeField(null=True, blank=True)
end_time = models.TimeField(null=True, blank=True) end_time = models.TimeField(null=True, blank=True)

6
app/templates/app/setEquipe.html

@ -5,12 +5,6 @@
<form action="{% url "app:setEquipe" %}" method="POST">{% csrf_token %} <form action="{% url "app:setEquipe" %}" method="POST">{% csrf_token %}
{{ form }} {{ form }}
<input type="submit" value="OK"> <input type="submit" value="OK">
<!--<table>
{{ form.as_table }}
<tr>
<td colspan="2"><input type="submit" value="OK"></td>
</tr>
</table>-->
</form>{% elif zone %} </form>{% elif zone %}
<h3>Bienvenue équipe {{equipe_nom}} ! Pour votre prochain challenge, rendez-vous dans la zone {{zone}} <h3>Bienvenue équipe {{equipe_nom}} ! Pour votre prochain challenge, rendez-vous dans la zone {{zone}}
et flashez le QR code pour connaître votre prochaine mission ! </h3> et flashez le QR code pour connaître votre prochaine mission ! </h3>

32
app/templates/app/zone.html

@ -1,3 +1,33 @@
{% extends 'default_template.html' %}{% block 'contenu' %} {% extends 'default_template.html' %}{% block 'contenu' %}
<main role="main" class="inner cover">{{zone.description |safe}} <main role="main" class="inner cover">{{zone.description |safe}}
</main>{% endblock %} </main>{% if zone.description %}
<div class="inner cover">
<form action="{% url 'app:displayZone' zone.code %}" method="POST">{% csrf_token %}
<div class="btn-group-vertical ml-4 mt-4 " role="group" aria-label="Basic example">
<div class="btn-group">
<input class="text-center form-control-lg mb-2" name="mdp" id="mdp" min="1000" max="9999" required type="number">
</div>
<div class="btn-group">
<button type="button" class="btn btn-outline-light py-3 w-100" onclick="document.getElementById('mdp').value=document.getElementById('mdp').value + '1';">1</button>
<button type="button" class="btn btn-outline-light py-3" onclick="document.getElementById('mdp').value=document.getElementById('mdp').value + '2';">2</button>
<button type="button" class="btn btn-outline-light py-3" onclick="document.getElementById('mdp').value=document.getElementById('mdp').value + '3';">3</button>
</div>
<div class="btn-group">
<button type="button" class="btn btn-outline-light py-3" onclick="document.getElementById('mdp').value=document.getElementById('mdp').value + '4';">4</button>
<button type="button" class="btn btn-outline-light py-3" onclick="document.getElementById('mdp').value=document.getElementById('mdp').value + '5';">5</button>
<button type="button" class="btn btn-outline-light py-3" onclick="document.getElementById('mdp').value=document.getElementById('mdp').value + '6';">6</button>
</div>
<div class="btn-group">
<button type="button" class="btn btn-outline-light py-3" onclick="document.getElementById('mdp').value=document.getElementById('mdp').value + '7';">7</button>
<button type="button" class="btn btn-outline-light py-3" onclick="document.getElementById('mdp').value=document.getElementById('mdp').value + '8';">8</button>
<button type="button" class="btn btn-outline-light py-3" onclick="document.getElementById('mdp').value=document.getElementById('mdp').value + '9';">9</button>
</div>
<div class="btn-group">
<button type="button" class="btn btn-outline-light py-3" onclick="document.getElementById('mdp').value=document.getElementById('mdp').value.slice(0, -1);">&lt;</button>
<button type="button" class="btn btn-outline-light py-3" onclick="document.getElementById('mdp').value=document.getElementById('mdp').value + '0';">0</button>
<button type="submit" class="btn btn-primary py-3">Go</button>
</div>
</div>
</form>
</div>{% endif %}
{% endblock %}

16
app/views.py

@ -33,8 +33,22 @@ def displayZone(request, zone_id=None):
else: else:
try: try:
zone = Zone.objects.filter(code=challenge.zone.code)[0] zone = Zone.objects.filter(code=challenge.zone.code)[0]
if zone_id == zone.code: if request.method == 'POST':
if int(request.POST.get('mdp')) == zone.mdp:
zone.etat = 'L'
zone.save()
#next_zone = attributeZone(zone)
messages.success(request, "Bon mot de passe")
else:
messages.warning(request, "Mauvais mot de passe")
context = {
'zone':zone,
'title': "Bienvenue dans la zone "+zone.nom,
}
elif zone_id == zone.code:
startChallengeTime(challenge) startChallengeTime(challenge)
zone.etat = 'O'
zone.save()
context = { context = {
'zone':zone, 'zone':zone,
'title': "Bienvenue dans la zone "+zone.nom, 'title': "Bienvenue dans la zone "+zone.nom,

Loading…
Cancel
Save