11"""Admin configuration for openedx_authz."""
22
33from casbin_adapter .models import CasbinRule
4+ from django import forms
45from django .contrib import admin
56
67from 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+
927class 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 )
2038class 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