| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import os
- from django.contrib.staticfiles import finders
- from django.core.management.base import LabelCommand
- class Command(LabelCommand):
- help = "Finds the absolute paths for the given static file(s)."
- label = "staticfile"
- def add_arguments(self, parser):
- super().add_arguments(parser)
- parser.add_argument(
- "--first",
- action="store_false",
- dest="all",
- help="Only return the first match for each static file.",
- )
- def handle_label(self, path, **options):
- verbosity = options["verbosity"]
- result = finders.find(path, all=options["all"])
- if verbosity >= 2:
- searched_locations = (
- "\nLooking in the following locations:\n %s"
- % "\n ".join([str(loc) for loc in finders.searched_locations])
- )
- else:
- searched_locations = ""
- if result:
- if not isinstance(result, (list, tuple)):
- result = [result]
- result = (os.path.realpath(path) for path in result)
- if verbosity >= 1:
- file_list = "\n ".join(result)
- return "Found '%s' here:\n %s%s" % (
- path,
- file_list,
- searched_locations,
- )
- else:
- return "\n".join(result)
- else:
- message = ["No matching file found for '%s'." % path]
- if verbosity >= 2:
- message.append(searched_locations)
- if verbosity >= 1:
- self.stderr.write("\n".join(message))
|