Browse Source

Création interface modif distances

master
Christophe SCAYA 3 years ago
parent
commit
b38a9b8ec9
  1. 36
      app/templates/app/distances.html
  2. 3
      app/urls.py
  3. 43
      app/views.py

36
app/templates/app/distances.html

@ -0,0 +1,36 @@
{% extends 'admin_template.html' %}{% block 'contenu' %}
<form id="form" action="{% url "app:admin-distances" %}" method="POST">{% csrf_token %}
<table class="table">
<thead>
<tr>
<th scope="col" ></th>{% for row in data %}
<th scope="col">{{row.zone.nom}}</th>{% endfor %}
</tr>
</thead>
<tbody>{% for row in data %}
<tr>
<td>{{row.zone.nom}}</td>{% for col in row.distances %}
{% if col.class != "table-secondary" %}
<td class="{{col.class}}"><input type="number" name="{{col.ref}}" onchange="changeHandler(event)" class="form-control" maxlength="2" value="{{col.value}}"></td>
{% else %}
<td class="{{col.class}}">{{col.value}}</td>
{% endif %}{% endfor %}
</tr>{% endfor %}
</tbody>
</table>
<input id="update" type="submit" value="Valider">
<input type="button" value="Reset" onclick="resetForm()">
</form>
<script>
function resetForm() {
document.getElementById("form").reset();
var inputs = document.querySelectorAll('input'), i;
for (i = 0; i < inputs.length-2; ++i) {
inputs[i].parentNode.className = "";
}
}
function changeHandler(evt) {
evt.target.parentNode.className = "table-warning";
}
</script>{% endblock %}

3
app/urls.py

@ -7,7 +7,8 @@ urlpatterns = [
path('', views.displayZone, name='displayZone'), path('', views.displayZone, name='displayZone'),
path('<int:zone_id>/', views.displayZone, name='displayZone'), path('<int:zone_id>/', views.displayZone, name='displayZone'),
path('setEquipe/', views.setEquipe, name='setEquipe'), path('setEquipe/', views.setEquipe, name='setEquipe'),
path('dashboard/', views.dashboard, name='admin-dashboard'),
path('admin-dashboard/', views.dashboard, name='admin-dashboard'), path('admin-dashboard/', views.dashboard, name='admin-dashboard'),
path('admin-distances/', views.dashboard, name='admin-distances'), path('admin-distances/', views.distances, name='admin-distances'),
path('dashboard/createNewGame', views.createNewGame, name='createNewGame'), path('dashboard/createNewGame', views.createNewGame, name='createNewGame'),
] ]

43
app/views.py

@ -173,6 +173,49 @@ def dashboard(request):
} }
return HttpResponse(template.render(context, request)) return HttpResponse(template.render(context, request))
def distances(request):
if request.method == 'POST':
for key, value in request.POST.items():
if key != 'csrfmiddlewaretoken':
zone1 = Zone.objects.filter(pk=key.split("_")[0])[0]
zone2 = Zone.objects.filter(pk=key.split("_")[1])[0]
if value == "":
value = 0
try:
distance = Distance.objects.filter(zone1=zone1,zone2=zone2)[0]
distance.distance = int(value)
distance.save()
except IndexError:
distance = Distance(zone1=zone1,zone2=zone2,distance=value)
distance.save()
try:
distance = Distance.objects.filter(zone1=zone2,zone2=zone1)[0]
distance.distance = int(value)
distance.save()
except IndexError:
distance = Distance(zone1=zone2,zone2=zone1,distance=value)
distance.save()
template = loader.get_template('app/distances.html')
liste_zones = Zone.objects.all().order_by("id")
data = list()
for zone_row in liste_zones:
row = list()
for zone_col in liste_zones:
if zone_col.id <= zone_row.id :
row.append({"class":"table-secondary","value":""})
else:
try:
distance = Distance.objects.filter(zone1=zone_row,zone2=zone_col)[0]
row.append({"class":"","value":distance.distance,"ref":str(zone_row.id)+"_"+str(zone_col.id)})
except IndexError:
row.append({"class":"","value":"","ref":str(zone_row.id)+"_"+str(zone_col.id)})
data.append({"zone":zone_row,"distances":row})
context = {
'data':data,
'title': "Gestion des distances",
}
return HttpResponse(template.render(context, request))
""" """
Fonction createNewGame Fonction createNewGame
Cette fonction efface les challenges présents en base pour en créer de nouveaux pour chacune des équipes Cette fonction efface les challenges présents en base pour en créer de nouveaux pour chacune des équipes

Loading…
Cancel
Save