Skip to content

Commit

Permalink
Test field permissions on ModelViewTest
Browse files Browse the repository at this point in the history
  • Loading branch information
RealOrangeOne authored and gasman committed May 1, 2024
1 parent 46389e8 commit b5e068e
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 48 deletions.
29 changes: 29 additions & 0 deletions wagtail/admin/tests/viewsets/test_model_viewset.py
Original file line number Diff line number Diff line change
Expand Up @@ -1470,6 +1470,35 @@ def test_edit_form_rendered_with_panels(self):
modal_workflow_script = soup.select_one(f'script[src="{modal_workflow_js}"]')
self.assertIsNotNone(modal_workflow_script)

def test_field_permissions(self):
self.user.is_superuser = False
self.user.save()
self.user.user_permissions.add(
Permission.objects.get(
content_type__app_label="wagtailadmin", codename="access_admin"
),
Permission.objects.get(
content_type__app_label=self.object._meta.app_label,
codename=get_permission_codename("change", self.object._meta),
),
)

response = self.client.get(self.url)
self.assertEqual(response.status_code, 200)
self.assertEqual(list(response.context["form"].fields), ["name"])

self.user.user_permissions.add(
Permission.objects.get(
codename="can_set_release_date",
)
)

response = self.client.get(self.url)
self.assertEqual(response.status_code, 200)
self.assertEqual(
list(response.context["form"].fields), ["name", "release_date"]
)


class TestDefaultMessages(WagtailTestUtils, TestCase):
def setUp(self):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Generated by Django 4.2.11 on 2024-04-23 13:53
# Generated by Django 4.2.11 on 2024-04-25 15:51

from django.db import migrations, models
import django.db.models.deletion
Expand All @@ -7,65 +7,36 @@
class Migration(migrations.Migration):

dependencies = [
("wagtailcore", "0091_remove_revision_submitted_for_moderation"),
("tests", "0033_customcopyformpage"),
('wagtailcore', '0091_remove_revision_submitted_for_moderation'),
('tests', '0033_customcopyformpage'),
]

operations = [
migrations.CreateModel(
name="TestPermissionedGenericSetting",
name='TestPermissionedGenericSetting',
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("title", models.CharField(max_length=100)),
("sensitive_email", models.EmailField(max_length=50)),
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=100)),
('sensitive_email', models.EmailField(max_length=50)),
],
options={
"permissions": [
(
"can_edit_sensitive_email_generic_setting",
"Can edit sensitive email generic setting.",
)
],
'permissions': [('can_edit_sensitive_email_generic_setting', 'Can edit sensitive email generic setting.')],
},
),
migrations.AlterModelOptions(
name='featurecompletetoy',
options={'permissions': [('can_set_release_date', 'Can set release date')]},
),
migrations.CreateModel(
name="TestPermissionedSiteSetting",
name='TestPermissionedSiteSetting',
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("title", models.CharField(max_length=100)),
("sensitive_email", models.EmailField(max_length=50)),
(
"site",
models.OneToOneField(
editable=False,
on_delete=django.db.models.deletion.CASCADE,
to="wagtailcore.site",
),
),
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=100)),
('sensitive_email', models.EmailField(max_length=50)),
('site', models.OneToOneField(editable=False, on_delete=django.db.models.deletion.CASCADE, to='wagtailcore.site')),
],
options={
"permissions": [
(
"can_edit_sensitive_email_site_setting",
"Can edit sensitive email site setting.",
)
],
'permissions': [('can_edit_sensitive_email_site_setting', 'Can edit sensitive email site setting.')],
},
),
]
3 changes: 3 additions & 0 deletions wagtail/test/testapp/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -2272,6 +2272,9 @@ def is_cool(self):
def __str__(self):
return f"{self.name} ({self.release_date})"

class Meta:
permissions = [("can_set_release_date", "Can set release date")]


class PurgeRevisionsProtectedTestModel(models.Model):
revision = models.OneToOneField(
Expand Down
2 changes: 1 addition & 1 deletion wagtail/test/testapp/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ class FeatureCompleteToyViewSet(ModelViewSet):

panels = [
FieldPanel("name"),
FieldPanel("release_date"),
FieldPanel("release_date", permission="tests.can_set_release_date"),
]


Expand Down

0 comments on commit b5e068e

Please sign in to comment.