Merge branch 'kerl/fix_revente_crash' into 'master'

Fix crash on /bda/revente/<id>/manage

Closes #228

See merge request klub-dev-ens/gestioCOF!370
This commit is contained in:
Ludovic Stephan 2019-10-06 12:01:53 +02:00
commit fba6b592f5
3 changed files with 44 additions and 3 deletions

View file

@ -1,3 +1,4 @@
- Fix erreur 500 sur /bda/revente/<tirage_id>/manage
- Si on essaie d'accéder au compte que qqn d'autre on a une 404 (et plus une 403) - Si on essaie d'accéder au compte que qqn d'autre on a une 404 (et plus une 403)
- On ne peut plus modifier des comptes COF depuis l'interface K-Fêt - On ne peut plus modifier des comptes COF depuis l'interface K-Fêt
- Le champ de paiement BdA se fait au niveau des attributions - Le champ de paiement BdA se fait au niveau des attributions

View file

@ -1,12 +1,17 @@
import json import json
from datetime import timedelta from datetime import timedelta
from unittest import mock
from django.test import TestCase from django.contrib.auth import get_user_model
from django.test import Client, TestCase
from django.urls import reverse
from django.utils import formats, timezone from django.utils import formats, timezone
from ..models import Participant from ..models import Participant, Tirage
from .testcases import BdATestHelpers, BdAViewTestCaseMixin from .testcases import BdATestHelpers, BdAViewTestCaseMixin
User = get_user_model()
class InscriptionViewTestCase(BdATestHelpers, BdAViewTestCaseMixin, TestCase): class InscriptionViewTestCase(BdATestHelpers, BdAViewTestCaseMixin, TestCase):
url_name = "bda-tirage-inscription" url_name = "bda-tirage-inscription"
@ -320,6 +325,41 @@ class CatalogueViewTestCase(BdATestHelpers, BdAViewTestCaseMixin, TestCase):
) )
# ----- BdA Revente --------------------------------------- #
def make_participant(name: str, tirage: Tirage) -> User:
user = User.objects.create_user(username=name, password=name)
user.profile.is_cof = True
user.profile.save()
Participant.objects.create(user=user, tirage=tirage)
return user
class TestReventeManageTest(TestCase):
def setUp(self):
self.tirage = Tirage.objects.create(
title="tirage1",
ouverture=timezone.now(),
fermeture=timezone.now() + timedelta(days=90),
)
self.user = make_participant("toto", self.tirage)
self.url = reverse("bda-revente-manage", args=[self.tirage.id])
# Signals handlers on login/logout send messages.
# Due to the way the Django' test Client performs login, this raise an
# error. As workaround, we mock the Django' messages module.
patcher_messages = mock.patch("gestioncof.signals.messages")
patcher_messages.start()
self.addCleanup(patcher_messages.stop)
def test_can_get(self):
client = Client()
client.force_login(self.user)
r = client.get(self.url)
self.assertEqual(r.status_code, 200)
class TestBdaRevente: class TestBdaRevente:
pass pass
# TODO # TODO

View file

@ -381,7 +381,7 @@ def revente_manage(request, tirage_id):
- Annulation d'une revente après que le tirage a eu lieu - Annulation d'une revente après que le tirage a eu lieu
""" """
tirage = get_object_or_404(Tirage, id=tirage_id) tirage = get_object_or_404(Tirage, id=tirage_id)
participant, created = Participant.annotate_paid().get_or_create( participant, created = Participant.objects.annotate_paid().get_or_create(
user=request.user, tirage=tirage user=request.user, tirage=tirage
) )