Skip to content

Commit

Permalink
Add prijs change permission condition
Browse files Browse the repository at this point in the history
  • Loading branch information
Floris272 committed Dec 9, 2024
1 parent a9ebe0d commit 46fba80
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 0 deletions.
6 changes: 6 additions & 0 deletions src/open_producten/producttypen/admin/prijs.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from django.contrib import admin
from django.core.exceptions import ValidationError
from django.forms import BaseInlineFormSet
from django.utils.datetime_safe import datetime
from django.utils.translation import gettext_lazy as _

from ..models import Prijs, PrijsOptie
Expand Down Expand Up @@ -36,3 +37,8 @@ class PrijsAdmin(admin.ModelAdmin):

def get_queryset(self, request):
return super().get_queryset(request).select_related("product_type")

def has_change_permission(self, request, obj=None):
if obj and obj.actief_vanaf < datetime.today().date():
return False
return super().has_change_permission(request, obj)
34 changes: 34 additions & 0 deletions src/open_producten/producttypen/tests/test_prijs.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,16 @@
from datetime import date, timedelta
from decimal import Decimal

from django.contrib.admin.sites import AdminSite
from django.core.exceptions import ValidationError
from django.test import TestCase

from freezegun import freeze_time

from open_producten.producttypen.admin import PrijsAdmin
from open_producten.producttypen.models import Prijs

from ...accounts.tests.factories import UserFactory
from .factories import PrijsFactory, PrijsOptieFactory, ProductTypeFactory


Expand All @@ -26,6 +33,33 @@ def test_min_date_validation(self):
prijs = PrijsFactory.build(actief_vanaf=date(2020, 1, 1))
prijs.full_clean()

@freeze_time("2024-01-02")
def test_change_permission_on_old_price(self):
instance = PrijsFactory.create(actief_vanaf=date(2024, 1, 1))
admin = PrijsAdmin(Prijs, AdminSite())
request = self.client.request()
request.user = UserFactory(superuser=True)

self.assertFalse(admin.has_change_permission(request, instance))

@freeze_time("2024-01-02")
def test_change_permission_on_future_price(self):
instance = PrijsFactory.create(actief_vanaf=date(2024, 3, 1))
admin = PrijsAdmin(Prijs, AdminSite())
request = self.client.request()
request.user = UserFactory(superuser=True)

self.assertTrue(admin.has_change_permission(request, instance))

@freeze_time("2024-01-02")
def test_change_permission_on_current_price(self):
instance = PrijsFactory.create(actief_vanaf=date(2024, 1, 2))
admin = PrijsAdmin(Prijs, AdminSite())
request = self.client.request()
request.user = UserFactory(superuser=True)

self.assertTrue(admin.has_change_permission(request, instance))


class TestPrijsOptie(TestCase):
def setUp(self):
Expand Down

0 comments on commit 46fba80

Please sign in to comment.