fix access to the subscription page

This commit is contained in:
imperosol 2024-12-18 14:13:39 +01:00
parent 6416de237f
commit be6a077c8e
2 changed files with 13 additions and 8 deletions

View File

@ -530,10 +530,8 @@ class User(AbstractBaseUser):
@cached_property @cached_property
def can_create_subscription(self) -> bool: def can_create_subscription(self) -> bool:
from club.models import Membership return self.is_root or (
self.memberships.board()
return (
Membership.objects.board()
.ongoing() .ongoing()
.filter(club_id__in=settings.SITH_CAN_CREATE_SUBSCRIPTIONS) .filter(club_id__in=settings.SITH_CAN_CREATE_SUBSCRIPTIONS)
.exists() .exists()

View File

@ -90,13 +90,20 @@ def test_form_new_user(settings: SettingsWrapper):
@pytest.mark.django_db @pytest.mark.django_db
@pytest.mark.parametrize( @pytest.mark.parametrize(
"user_factory", [lambda: baker.make(User, is_superuser=True), board_user.make] ("user_factory", "status_code"),
[
(lambda: baker.make(User, is_superuser=True), 200),
(board_user.make, 200),
(subscriber_user.make, 403),
],
) )
def test_load_page(client: Client, user_factory: Callable[[], User]): def test_page_access(
"""Just check the page doesn't crash.""" client: Client, user_factory: Callable[[], User], status_code: int
):
"""Check that only authorized users may access this page."""
client.force_login(user_factory()) client.force_login(user_factory())
res = client.get(reverse("subscription:subscription")) res = client.get(reverse("subscription:subscription"))
assert res.status_code == 200 assert res.status_code == status_code
@pytest.mark.django_db @pytest.mark.django_db