Warn if URL namespaces used in applications aren't unique.
(app_configs, **kwargs)
| 32 | |
| 33 | @register(Tags.urls) |
| 34 | def check_url_namespaces_unique(app_configs, **kwargs): |
| 35 | """ |
| 36 | Warn if URL namespaces used in applications aren't unique. |
| 37 | """ |
| 38 | if not getattr(settings, "ROOT_URLCONF", None): |
| 39 | return [] |
| 40 | |
| 41 | from django.urls import get_resolver |
| 42 | |
| 43 | resolver = get_resolver() |
| 44 | all_namespaces = _load_all_namespaces(resolver) |
| 45 | counter = Counter(all_namespaces) |
| 46 | non_unique_namespaces = [n for n, count in counter.items() if count > 1] |
| 47 | errors = [] |
| 48 | for namespace in non_unique_namespaces: |
| 49 | errors.append( |
| 50 | Warning( |
| 51 | "URL namespace '{}' isn't unique. You may not be able to reverse " |
| 52 | "all URLs in this namespace".format(namespace), |
| 53 | id="urls.W005", |
| 54 | ) |
| 55 | ) |
| 56 | return errors |
| 57 | |
| 58 | |
| 59 | def _load_all_namespaces(resolver, parents=()): |