Merge branch 'mdebray/date_des_reponses_aux_sondages' into 'master'

Date des reponses aux sondages

See merge request klub-dev-ens/Ernesto!22
This commit is contained in:
Lucie Galland 2022-03-15 11:29:37 +01:00
commit 5eb27e2171
6 changed files with 71 additions and 12 deletions

View file

@ -2,5 +2,27 @@ from django.contrib import admin
from .models import Event, Participants from .models import Event, Participants
class ParticipantsAdmin(admin.ModelAdmin):
fields = [
"event",
"participant",
"reponse",
"instrument",
"instrument_autre",
"dont_play_main",
"details",
"creationDate",
"updateDate",
]
readonly_fields = ["creationDate", "updateDate"]
list_display = ["participant", "event", "reponse", "creationDate", "updateDate"]
def has_add_permission(self, req):
return False
def has_change_permission(self,obj, change=False):
return False
# Add event by admin page return a 502 error # Add event by admin page return a 502 error
admin.site.register(Event) admin.site.register(Event)
admin.site.register(Participants, ParticipantsAdmin)

View file

@ -1,8 +1,8 @@
from django import forms from django import forms
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from gestion.models import ErnestoUser
from calendrier.models import Event, Participants from calendrier.models import Event, Participants
from gestion.models import ErnestoUser
class ModifEventForm(forms.ModelForm): class ModifEventForm(forms.ModelForm):

View file

@ -0,0 +1,31 @@
# Generated by Django 2.2.25 on 2022-03-14 23:20
import django.utils.timezone
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("calendrier", "0006_auto_20210929_1629"),
]
operations = [
migrations.AddField(
model_name="participants",
name="creationDate",
field=models.DateTimeField(
auto_now_add=True,
default=django.utils.timezone.now,
verbose_name="Date de création",
),
preserve_default=False,
),
migrations.AddField(
model_name="participants",
name="updateDate",
field=models.DateTimeField(
auto_now=True, verbose_name="Dernière mise à jour"
),
),
]

View file

@ -2,7 +2,6 @@ import uuid
from django.db import models from django.db import models
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from gestion.models import INSTRU_CHOICES, ErnestoUser from gestion.models import INSTRU_CHOICES, ErnestoUser
ANSWERS = ( ANSWERS = (
@ -73,3 +72,11 @@ class Participants(models.Model):
choices=[("Non", _("Non")), ("Oui", _("Oui"))], choices=[("Non", _("Non")), ("Oui", _("Oui"))],
) )
details = models.CharField(max_length=50, blank=True) details = models.CharField(max_length=50, blank=True)
creationDate = models.DateTimeField(
auto_now_add=True, verbose_name=_("Date de création")
)
updateDate = models.DateTimeField(
auto_now=True, verbose_name=_("Dernière mise à jour")
)
class Meta:
constraints = [ models.UniqueConstraint(fields=['event', 'participant'], name='reponse unique aux event') ]

View file

@ -4,7 +4,6 @@ from django.contrib.auth import get_user_model
from django.template.defaultfilters import urlencode from django.template.defaultfilters import urlencode
from django.test import Client, TestCase from django.test import Client, TestCase
from django.utils import timezone from django.utils import timezone
from gestion.models import ErnestoUser from gestion.models import ErnestoUser
from ..models import Event from ..models import Event

View file

@ -4,20 +4,20 @@ from calendar import monthrange
from collections import defaultdict from collections import defaultdict
from datetime import date, datetime from datetime import date, datetime
from actu.models import Actu
from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib.auth.mixins import LoginRequiredMixin
from django.db.models import Q from django.db.models import Q
from django.shortcuts import get_object_or_404, redirect, render from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse, reverse_lazy from django.urls import reverse, reverse_lazy
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from django.views.generic import DeleteView, TemplateView, UpdateView from django.views.generic import DeleteView, TemplateView, UpdateView
from gestion.mixins import ChefEventRequiredMixin, ChefRequiredMixin
from gestion.models import Photo
from actu.models import Actu
from calendrier.calend import EventCalendar from calendrier.calend import EventCalendar
from calendrier.forms import (ChangeDoodleName, EventForm, ModifEventForm, from calendrier.forms import (ChangeDoodleName, EventForm, ModifEventForm,
ParticipantsForm) ParticipantsForm)
from calendrier.models import Event, Participants from calendrier.models import Event, Participants
from gestion.mixins import ChefEventRequiredMixin, ChefRequiredMixin
from gestion.models import Photo
def generer(*args): def generer(*args):
@ -373,16 +373,16 @@ class ReponseEvent(LoginRequiredMixin, TemplateView):
return context return context
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
form = self.form_class(request.POST)
ev = get_object_or_404(Event, id=self.kwargs["id"]) ev = get_object_or_404(Event, id=self.kwargs["id"])
part = request.user.profile part = request.user.profile
try:
p = Participants.objects.get(event=ev, participant=part)
except Participants.DoesNotExist:
p = None
form = self.form_class(request.POST, instance=p)
if form.is_valid(): if form.is_valid():
try:
p = Participants.objects.get(event=ev, participant=part)
p.delete()
except Participants.DoesNotExist:
pass
obj = form.save(commit=False) obj = form.save(commit=False)
# Si la participation existe déjà, ces 2 ligne sont redondantes
obj.event = ev obj.event = ev
obj.participant = part obj.participant = part
obj.save() obj.save()