Development of an internal social media platform with personalised dashboards for students
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

request.py 1.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. from __future__ import absolute_import, unicode_literals
  2. from django.http import Http404
  3. from django.urls import resolve
  4. from django.utils.encoding import force_text
  5. from django.utils.translation import ugettext_lazy as _
  6. from debug_toolbar.panels import Panel
  7. from debug_toolbar.utils import get_name_from_obj
  8. class RequestPanel(Panel):
  9. """
  10. A panel to display request variables (POST/GET, session, cookies).
  11. """
  12. template = 'debug_toolbar/panels/request.html'
  13. title = _("Request")
  14. @property
  15. def nav_subtitle(self):
  16. """
  17. Show abbreviated name of view function as subtitle
  18. """
  19. view_func = self.get_stats().get('view_func', '')
  20. return view_func.rsplit('.', 1)[-1]
  21. def generate_stats(self, request, response):
  22. self.record_stats({
  23. 'get': [(k, request.GET.getlist(k)) for k in sorted(request.GET)],
  24. 'post': [(k, request.POST.getlist(k)) for k in sorted(request.POST)],
  25. 'cookies': [(k, request.COOKIES.get(k)) for k in sorted(request.COOKIES)],
  26. })
  27. view_info = {
  28. 'view_func': _("<no view>"),
  29. 'view_args': 'None',
  30. 'view_kwargs': 'None',
  31. 'view_urlname': 'None',
  32. }
  33. try:
  34. match = resolve(request.path)
  35. func, args, kwargs = match
  36. view_info['view_func'] = get_name_from_obj(func)
  37. view_info['view_args'] = args
  38. view_info['view_kwargs'] = kwargs
  39. view_info['view_urlname'] = getattr(match, 'url_name',
  40. _("<unavailable>"))
  41. except Http404:
  42. pass
  43. self.record_stats(view_info)
  44. if hasattr(request, 'session'):
  45. self.record_stats({
  46. 'session': [(k, request.session.get(k))
  47. for k in sorted(request.session.keys(), key=force_text)]
  48. })