def technical_info(request): """ Version numbers for applications in use. Borrowed from the django-debug-toolbar. """ # Reject non-superusers if not request.user.is_superuser: raise Http404('Superusers only.') # Module version information versions = [('Python', '%d.%d.%d' % sys.version_info[:3])] for app in list(settings.INSTALLED_APPS) + ['django']: name = app.split('.')[-1].replace('_', ' ').capitalize() app = import_module(app) if hasattr(app, 'get_version'): get_version = app.get_version if callable(get_version): version = get_version() else: version = get_version elif hasattr(app, 'VERSION'): version = app.VERSION elif hasattr(app, '__version__'): version = app.__version__ else: continue if isinstance(version, (list, tuple)): version = '.'.join(str(o) for o in version) versions.append((name, version)) versions = sorted(versions, key=lambda version: version[0]) # Return environment variables with sensitive content cleansed environ = cleanse_dictionary(os.environ) return render( request, 'doctor/technical_info.html', { 'doctor': TEMPLATE_CONTEXT, 'versions': SortedDict(versions), 'environ': environ, 'paths': sys.path, })
def technical_info(request): """ Version numbers for applications in use. Borrowed from the django-debug-toolbar. """ # Reject non-superusers if not request.user.is_superuser: raise Http404('Superusers only.') # Module version information versions = [('Python', '%d.%d.%d' % sys.version_info[:3])] for app in list(settings.INSTALLED_APPS) + ['django']: name = app.split('.')[-1].replace('_', ' ').capitalize() app = import_module(app) if hasattr(app, 'get_version'): get_version = app.get_version if callable(get_version): version = get_version() else: version = get_version elif hasattr(app, 'VERSION'): version = app.VERSION elif hasattr(app, '__version__'): version = app.__version__ else: continue if isinstance(version, (list, tuple)): version = '.'.join(str(o) for o in version) versions.append((name, version)) versions = sorted(versions, key=lambda version: version[0]) # Return environment variables with sensitive content cleansed environ = cleanse_dictionary(os.environ) return render(request, 'doctor/technical_info.html', { 'doctor': TEMPLATE_CONTEXT, 'versions': SortedDict(versions), 'environ': environ, 'paths': sys.path, })
def get_settings(self): """ Returns dictionary of relevant storage settings, with sensitive variables cleansed. """ email_settings = SortedDict({}) relevant_settings = ( 'EMAIL_BACKEND', 'EMAIL_HOST', 'EMAIL_HOST_USER', 'EMAIL_HOST_PASSWORD', 'EMAIL_USE_TLS', 'EMAIL_PORT', ) for key in relevant_settings: email_settings[key] = getattr(settings, key, '') return cleanse_dictionary(email_settings)