mirror of
https://gitlab.com/animath/si/plateforme-corres2math.git
synced 2024-12-05 02:06:52 +00:00
We can only register during the first phase
This commit is contained in:
parent
ece1e800ab
commit
d3e18a8fbb
@ -65,7 +65,7 @@ class Team(models.Model):
|
|||||||
"education",
|
"education",
|
||||||
raise_error=False,
|
raise_error=False,
|
||||||
)
|
)
|
||||||
if self.pk and self.participation.valid:
|
if self.pk and self.participation.valid: # pragma: no cover
|
||||||
get_sympa_client().subscribe(self.email, "equipes", False, f"Equipe {self.name}")
|
get_sympa_client().subscribe(self.email, "equipes", False, f"Equipe {self.name}")
|
||||||
get_sympa_client().subscribe(self.email, f"probleme-{self.participation.problem}", False,
|
get_sympa_client().subscribe(self.email, f"probleme-{self.participation.problem}", False,
|
||||||
f"Equipe {self.name}")
|
f"Equipe {self.name}")
|
||||||
@ -76,7 +76,7 @@ class Team(models.Model):
|
|||||||
"""
|
"""
|
||||||
Drop the Sympa mailing list, if the team is empty or if the trigram changed.
|
Drop the Sympa mailing list, if the team is empty or if the trigram changed.
|
||||||
"""
|
"""
|
||||||
if self.participation.valid:
|
if self.participation.valid: # pragma: no cover
|
||||||
get_sympa_client().unsubscribe(self.email, "equipes", False)
|
get_sympa_client().unsubscribe(self.email, "equipes", False)
|
||||||
get_sympa_client().unsubscribe(self.email, f"probleme-{self.participation.problem}", False)
|
get_sympa_client().unsubscribe(self.email, f"probleme-{self.participation.problem}", False)
|
||||||
else:
|
else:
|
||||||
@ -292,10 +292,8 @@ class Phase(models.Model):
|
|||||||
qs = Phase.objects.filter(start__lte=timezone.now(), end__gte=timezone.now())
|
qs = Phase.objects.filter(start__lte=timezone.now(), end__gte=timezone.now())
|
||||||
if qs.exists():
|
if qs.exists():
|
||||||
return qs.get()
|
return qs.get()
|
||||||
qs = Phase.objects.order_by("phase_number").all()
|
qs = Phase.objects.filter(start__lte=timezone.now()).order_by("phase_number").all()
|
||||||
if timezone.now() < qs.first().start:
|
return qs.last() if qs.exists() else None
|
||||||
return qs.first()
|
|
||||||
return qs.last()
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return _("Phase {phase_number:d} starts on {start:%Y-%m-%d %H:%M} and ends on {end:%Y-%m-%d %H:%M}")\
|
return _("Phase {phase_number:d} starts on {start:%Y-%m-%d %H:%M} and ends on {end:%Y-%m-%d %H:%M}")\
|
||||||
|
@ -575,7 +575,7 @@ class TestStudentParticipation(TestCase):
|
|||||||
for i in range(1, 5):
|
for i in range(1, 5):
|
||||||
Phase.objects.filter(phase_number=i).update(start=timezone.now() + timedelta(days=2 * i),
|
Phase.objects.filter(phase_number=i).update(start=timezone.now() + timedelta(days=2 * i),
|
||||||
end=timezone.now() + timedelta(days=2 * i + 1))
|
end=timezone.now() + timedelta(days=2 * i + 1))
|
||||||
self.assertEqual(Phase.current_phase().phase_number, 1)
|
self.assertEqual(Phase.current_phase(), None)
|
||||||
|
|
||||||
# We are after the end
|
# We are after the end
|
||||||
for i in range(1, 5):
|
for i in range(1, 5):
|
||||||
|
@ -4,6 +4,7 @@ from django.contrib.auth.models import User
|
|||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
from django.forms import FileInput
|
from django.forms import FileInput
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
from participation.models import Phase
|
||||||
|
|
||||||
from .models import AdminRegistration, CoachRegistration, StudentRegistration
|
from .models import AdminRegistration, CoachRegistration, StudentRegistration
|
||||||
|
|
||||||
@ -28,6 +29,11 @@ class SignupForm(UserCreationForm):
|
|||||||
self.fields["last_name"].required = True
|
self.fields["last_name"].required = True
|
||||||
self.fields["email"].required = True
|
self.fields["email"].required = True
|
||||||
|
|
||||||
|
def clean(self):
|
||||||
|
if Phase.current_phase() is None or Phase.current_phase().phase_number >= 2:
|
||||||
|
self.add_error(None, _("You can't register now."))
|
||||||
|
return super().clean()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = User
|
||||||
fields = ('first_name', 'last_name', 'email', 'password1', 'password2', 'role',)
|
fields = ('first_name', 'last_name', 'email', 'password1', 'password2', 'role',)
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
from datetime import timedelta
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from corres2math.tokens import email_validation_token
|
from corres2math.tokens import email_validation_token
|
||||||
@ -7,8 +8,10 @@ from django.contrib.sites.models import Site
|
|||||||
from django.core.management import call_command
|
from django.core.management import call_command
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
from django.utils import timezone
|
||||||
from django.utils.encoding import force_bytes
|
from django.utils.encoding import force_bytes
|
||||||
from django.utils.http import urlsafe_base64_encode
|
from django.utils.http import urlsafe_base64_encode
|
||||||
|
from participation.models import Phase
|
||||||
|
|
||||||
from .models import AdminRegistration, CoachRegistration, StudentRegistration
|
from .models import AdminRegistration, CoachRegistration, StudentRegistration
|
||||||
|
|
||||||
@ -84,6 +87,23 @@ class TestRegistration(TestCase):
|
|||||||
response = self.client.get(reverse("registration:signup"))
|
response = self.client.get(reverse("registration:signup"))
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
|
# After first phase
|
||||||
|
response = self.client.post(reverse("registration:signup"), data=dict(
|
||||||
|
last_name="Toto",
|
||||||
|
first_name="Toto",
|
||||||
|
email="toto@example.com",
|
||||||
|
password1="azertyuiopazertyuiop",
|
||||||
|
password2="azertyuiopazertyuiop",
|
||||||
|
role="participant",
|
||||||
|
student_class=12,
|
||||||
|
school="God",
|
||||||
|
give_contact_to_animath=False,
|
||||||
|
))
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
|
Phase.objects.filter(phase_number__gte=2).update(start=timezone.now() + timedelta(days=1),
|
||||||
|
end=timezone.now() + timedelta(days=2))
|
||||||
|
|
||||||
# Incomplete form
|
# Incomplete form
|
||||||
response = self.client.post(reverse("registration:signup"), data=dict(
|
response = self.client.post(reverse("registration:signup"), data=dict(
|
||||||
last_name="Toto",
|
last_name="Toto",
|
||||||
|
Loading…
Reference in New Issue
Block a user