mirror of
https://github.com/ae-utbm/sith.git
synced 2025-06-26 21:25:21 +00:00
commit
9a19f34ea2
@ -17,6 +17,7 @@ from datetime import timedelta
|
||||
from decimal import Decimal
|
||||
|
||||
import pytest
|
||||
from dateutil.relativedelta import relativedelta
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.models import Permission, make_password
|
||||
from django.core.cache import cache
|
||||
@ -823,3 +824,53 @@ class TestClubCounterClickAccess(TestCase):
|
||||
self.client.force_login(self.user)
|
||||
res = self.client.get(self.click_url)
|
||||
assert res.status_code == 200
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
class TestCounterLogout:
|
||||
def test_logout_simple(self, client: Client):
|
||||
perm_counter = baker.make(Counter, type="BAR")
|
||||
permanence = baker.make(
|
||||
Permanency,
|
||||
counter=perm_counter,
|
||||
start=now() - timedelta(hours=1),
|
||||
activity=now() - timedelta(minutes=10),
|
||||
)
|
||||
with freeze_time():
|
||||
res = client.post(
|
||||
reverse("counter:logout", kwargs={"counter_id": permanence.counter_id}),
|
||||
data={"user_id": permanence.user_id},
|
||||
)
|
||||
assertRedirects(
|
||||
res,
|
||||
reverse(
|
||||
"counter:details", kwargs={"counter_id": permanence.counter_id}
|
||||
),
|
||||
)
|
||||
permanence.refresh_from_db()
|
||||
assert permanence.end == now()
|
||||
|
||||
def test_logout_doesnt_change_old_permanences(self, client: Client):
|
||||
perm_counter = baker.make(Counter, type="BAR")
|
||||
permanence = baker.make(
|
||||
Permanency,
|
||||
counter=perm_counter,
|
||||
start=now() - timedelta(hours=1),
|
||||
activity=now() - timedelta(minutes=10),
|
||||
)
|
||||
old_end = now() - relativedelta(year=10)
|
||||
old_permanence = baker.make(
|
||||
Permanency,
|
||||
counter=perm_counter,
|
||||
end=old_end,
|
||||
activity=now() - relativedelta(year=8),
|
||||
)
|
||||
with freeze_time():
|
||||
client.post(
|
||||
reverse("counter:logout", kwargs={"counter_id": permanence.counter_id}),
|
||||
data={"user_id": permanence.user_id},
|
||||
)
|
||||
permanence.refresh_from_db()
|
||||
assert permanence.end == now()
|
||||
old_permanence.refresh_from_db()
|
||||
assert old_permanence.end == old_end
|
||||
|
@ -13,10 +13,10 @@
|
||||
#
|
||||
#
|
||||
|
||||
from django.db.models import F
|
||||
from django.http import HttpRequest, HttpResponseRedirect
|
||||
from django.shortcuts import get_object_or_404, redirect
|
||||
from django.utils import timezone
|
||||
from django.utils.timezone import now
|
||||
from django.views.decorators.http import require_POST
|
||||
|
||||
from core.views.forms import LoginForm
|
||||
@ -47,7 +47,7 @@ def counter_login(request: HttpRequest, counter_id: int) -> HttpResponseRedirect
|
||||
@require_POST
|
||||
def counter_logout(request: HttpRequest, counter_id: int) -> HttpResponseRedirect:
|
||||
"""End the permanency of a user in this counter."""
|
||||
Permanency.objects.filter(counter=counter_id, user=request.POST["user_id"]).update(
|
||||
end=F("activity")
|
||||
)
|
||||
Permanency.objects.filter(
|
||||
counter=counter_id, user=request.POST["user_id"], end=None
|
||||
).update(end=now())
|
||||
return redirect("counter:details", counter_id=counter_id)
|
||||
|
Loading…
x
Reference in New Issue
Block a user