#33324: Missing static file errors are particularly hard to debug (no error 
email)
-------------------------------------+-------------------------------------
               Reporter:  Michael    |          Owner:  nobody
                   Type:             |         Status:  new
  Uncategorized                      |
              Component:             |        Version:  3.2
  contrib.staticfiles                |       Keywords:  static manifest
               Severity:  Normal     |  storage
           Triage Stage:             |      Has patch:  0
  Unreviewed                         |
    Needs documentation:  0          |    Needs tests:  0
Patch needs improvement:  0          |  Easy pickings:  0
                  UI/UX:  0          |
-------------------------------------+-------------------------------------
 Normally when there is an error, an email is sent about the error. However
 is there is a missing static file, and
 **django.contrib.staticfiles.storage.ManifestStaticFilesStorage** tries to
 calc the static URL, it falls over in an incredibley hard way to debug. If
 your error pages require the missing static file, that is even harder.

 Please consider sending an error email to the support email address if
 this kind of error occurs.
 Its raised in: **contrib/staticfiles/storage.py** line 417:
 {{{
     def stored_name(self, name):
         parsed_name = urlsplit(unquote(name))
         clean_name = parsed_name.path.strip()
         hash_key = self.hash_key(clean_name)
         cache_name = self.hashed_files.get(hash_key)
         if cache_name is None:
             if self.manifest_strict:
                 raise ValueError("Missing staticfiles manifest entry for
 '%s'" % clean_name)
 }}}

 As a temp fix I subclassed the storage:
 {{{
 from django.contrib.staticfiles.storage import ManifestStaticFilesStorage

 class ManifestStaticFilesWith404Storage(ManifestStaticFilesStorage):
     """If you have a manifest files error, the page to render the error
 probably
     has the same error, and then you can't debug it. This returns the
 error
     string so one can see in the rendered html there was a problem
     """
     pass
     def stored_name(self, name):
         try:
             return super().stored_name(name)
         except ValueError as e:
             return
 f"{name}.could_not_find_static_file_to_calc_manifest_hash"
 }}}

-- 
Ticket URL: <https://code.djangoproject.com/ticket/33324>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/053.2f74622a174cb69f9b3e7e0ac1b55e5d%40djangoproject.com.

Reply via email to