#27827: Raising InvalidTemplateLibrary completely masks out real exception in
get_package_libraries
-------------------------------------+-------------------------------------
               Reporter:             |          Owner:  (none)
  kehindeadewusi                     |
                   Type:             |         Status:  new
  Cleanup/optimization               |
              Component:  Error      |        Version:  1.10
  reporting                          |
               Severity:  Normal     |       Keywords:  debugging
           Triage Stage:             |      Has patch:  0
  Unreviewed                         |
    Needs documentation:  0          |    Needs tests:  0
Patch needs improvement:  0          |  Easy pickings:  0
                  UI/UX:  0          |
-------------------------------------+-------------------------------------
 **Summary**
 In django/template/backends/django.py, function get_package_libraries on
 line 119 completely masks out the ImportError and raises
 InvalidTemplateLibrary. This makes it incredibly difficult to debug
 application issues.
 Probably better not to handle the exception in the first place since it
 only raises another type and inner exception looses the stack trace.

 **To reproduce**
 Create two apps e.g. form_utils and reports.
 Write a template tag in reports e.g. reports.templatetags.report_tags.
 (reports/templatetags/report_tags.py
 Add a simple module in form_utils e.g. widgets.py.
 In widgets.py, import a none-existent module e.g. from django.forms.util
 import flatatt (was removed in > django 1.4)
 import form_utils.widget in report_tags e.g. from form_utils.widgets
 import CalendarWidget
 A quick way to reproduce the error would be to register some models with
 admin and navigate to /admin

 The following error will be raised in get_package_libraries:

 InvalidTemplateLibrary at /admin/login/

 Invalid template library specified. ImportError raised when trying to load
 'reports.templatetags.report_tags': No module named util

 Request Method:         GET
 Request URL:    http://localhost:2017/admin/login/?next=/admin/
 Django Version:         1.10.1
 Exception Type:         InvalidTemplateLibrary
 Exception Value:
 Invalid template library specified. ImportError raised when trying to load
 'reports.templatetags.report_tags': No module named util
 Exception Location:     D:\repo\django110\lib\site-
 packages\django\template\backends\django.py in get_package_libraries, line
 130

 **However, if the exception was not caught and "wrongly" re-raised as an
 InvalidTemplateLibrary, the following errors would be printed:**

 ImportError at /admin/login/
 No module named util
 Request Method:         GET
 Request URL:    http://localhost:2017/admin/login/?next=/admin/
 Django Version:         1.10.1
 Exception Type:         ImportError
 Exception Value:
 No module named util
 Exception Location:
 D:\repo\projects\evincehr\apps\form_utils\widgets.py in <module>, line 3

 **The second behavior is more appropriate to debugging the error and the
 error would be quickly found.**

--
Ticket URL: <https://code.djangoproject.com/ticket/27827>
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 post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/057.42746cc816918251278068d4c38adb36%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to