Procházet zdrojové kódy

Fixes #11223 - Accept app_label for reindex

Alef Burzmali před 3 roky
rodič
revize
ae440c9edf
1 změnil soubory, kde provedl 20 přidání a 9 odebrání
  1. 20 9
      netbox/extras/management/commands/reindex.py

+ 20 - 9
netbox/extras/management/commands/reindex.py

@@ -27,17 +27,28 @@ class Command(BaseCommand):
         # Return only indexers for the specified models
         # Return only indexers for the specified models
         else:
         else:
             for label in model_names:
             for label in model_names:
-                try:
-                    app_label, model_name = label.lower().split('.')
-                except ValueError:
+                labels = label.lower().split('.')
+
+                # Label specifies an exact model
+                if len(labels) == 2:
+                    app_label, model_name = labels
+                    try:
+                        idx = registry['search'][f'{app_label}.{model_name}']
+                        indexers[idx.model] = idx
+                    except KeyError:
+                        raise CommandError(f"No indexer registered for {label}")
+
+                # Label specifies all the models of an app
+                elif len(labels) == 1:
+                    app_label = labels[0] + '.'
+                    for indexer_label, idx in registry['search'].items():
+                        if indexer_label.startswith(app_label):
+                            indexers[idx.model] = idx
+
+                else:
                     raise CommandError(
                     raise CommandError(
-                        f"Invalid model: {label}. Model names must be in the format <app_label>.<model_name>."
+                        f"Invalid model: {label}. Model names must be in the format <app_label> or <app_label>.<model_name>."
                     )
                     )
-                try:
-                    idx = registry['search'][f'{app_label}.{model_name}']
-                    indexers[idx.model] = idx
-                except KeyError:
-                    raise CommandError(f"No indexer registered for {label}")
 
 
         return indexers
         return indexers