MCPcopy
hub / github.com/django/django / check_models_permissions

Function check_models_permissions

django/contrib/auth/checks.py:123–236  ·  view source on GitHub ↗
(app_configs, **kwargs)

Source from the content-addressed store, hash-verified

121
122
123def check_models_permissions(app_configs, **kwargs):
124 if app_configs is None:
125 models = apps.get_models()
126 else:
127 models = chain.from_iterable(
128 app_config.get_models() for app_config in app_configs
129 )
130
131 Permission = apps.get_model("auth", "Permission")
132 permission_name_max_length = Permission._meta.get_field("name").max_length
133 permission_codename_max_length = Permission._meta.get_field("codename").max_length
134 errors = []
135
136 for model in models:
137 opts = model._meta
138 builtin_permissions = dict(_get_builtin_permissions(opts))
139 # Check builtin permission name length.
140 max_builtin_permission_name_length = (
141 max(len(name) for name in builtin_permissions.values())
142 if builtin_permissions
143 else 0
144 )
145 if max_builtin_permission_name_length > permission_name_max_length:
146 verbose_name_max_length = permission_name_max_length - (
147 max_builtin_permission_name_length - len(opts.verbose_name_raw)
148 )
149 errors.append(
150 checks.Error(
151 "The verbose_name of model '%s' must be at most %d "
152 "characters for its builtin permission names to be at "
153 "most %d characters."
154 % (opts.label, verbose_name_max_length, permission_name_max_length),
155 obj=model,
156 id="auth.E007",
157 )
158 )
159 # Check builtin permission codename length.
160 max_builtin_permission_codename_length = (
161 max(len(codename) for codename in builtin_permissions.keys())
162 if builtin_permissions
163 else 0
164 )
165 if max_builtin_permission_codename_length > permission_codename_max_length:
166 model_name_max_length = permission_codename_max_length - (
167 max_builtin_permission_codename_length - len(opts.model_name)
168 )
169 errors.append(
170 checks.Error(
171 "The name of model '%s' must be at most %d characters "
172 "for its builtin permission codenames to be at most %d "
173 "characters."
174 % (
175 opts.label,
176 model_name_max_length,
177 permission_codename_max_length,
178 ),
179 obj=model,
180 id="auth.E011",

Callers

nothing calls this directly

Calls 8

_get_builtin_permissionsFunction · 0.85
get_modelsMethod · 0.45
get_modelMethod · 0.45
get_fieldMethod · 0.45
valuesMethod · 0.45
appendMethod · 0.45
keysMethod · 0.45
addMethod · 0.45

Tested by

no test coverage detected