Skip to content

Commit 830253b

Browse files
committed
feat: implement custom form for CasbinRule to make optional fields
1 parent 859b930 commit 830253b

1 file changed

Lines changed: 21 additions & 0 deletions

File tree

openedx_authz/admin.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,29 @@
11
"""Admin configuration for openedx_authz."""
22

33
from casbin_adapter.models import CasbinRule
4+
from django import forms
45
from django.contrib import admin
56

67
from openedx_authz.models import ExtendedCasbinRule
78

89

10+
class CasbinRuleForm(forms.ModelForm):
11+
"""Custom form for CasbinRule to make v3, v4, v5 fields optional."""
12+
13+
class Meta:
14+
model = CasbinRule
15+
fields = "__all__"
16+
17+
def __init__(self, *args, **kwargs):
18+
super().__init__(*args, **kwargs)
19+
# Make v2, v3, v4, v5 optional in the form
20+
# These fields are not always required depending on the policy type
21+
self.fields["v2"].required = False
22+
self.fields["v3"].required = False
23+
self.fields["v4"].required = False
24+
self.fields["v5"].required = False
25+
26+
927
class ExtendedCasbinRuleInline(admin.StackedInline):
1028
"""Inline admin for ExtendedCasbinRule to display additional metadata."""
1129

@@ -18,6 +36,9 @@ class ExtendedCasbinRuleInline(admin.StackedInline):
1836

1937
@admin.register(CasbinRule)
2038
class CasbinRuleAdmin(admin.ModelAdmin):
39+
"""Admin for CasbinRule to display additional metadata."""
40+
41+
form = CasbinRuleForm
2142
list_display = ("id", "ptype", "v0", "v1", "v2", "v3", "v4", "v5")
2243
search_fields = ("ptype", "v0", "v1", "v2", "v3", "v4", "v5")
2344
list_filter = ("ptype",)

0 commit comments

Comments
 (0)