(app_configs, **kwargs)
| 121 | |
| 122 | |
| 123 | def 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", |
nothing calls this directly
no test coverage detected