"""
:mod:`django-debug-toolbar-user-panel`
======================================
Panel for the `Django Debug Toolbar <https://github.com/jazzband/django-debug-toolbar>`_
to easily and quickly switch between users.
* View details on the currently logged in user.
* Login as any user from an arbitrary email address, username or user ID.
* Easily switch between recently logged in users.
Installation
------------
Add ``debug_toolbar_user_switcher`` to your ``INSTALLED_APPS``::
INSTALLED_APPS = (
...
'debug_toolbar_user_switcher',
...
)
Add ``debug_toolbar_user_switcher.panels.UserPanel`` to ``DEBUG_TOOLBAR_PANELS``::
DEBUG_TOOLBAR_PANELS = (
'debug_toolbar_user_switcher.panels.UserPanel'
'debug_toolbar.panels.version.VersionDebugPanel',
'debug_toolbar.panels.timer.TimerDebugPanel',
'debug_toolbar.panels.settings_vars.SettingsVarsDebugPanel',
'debug_toolbar.panels.headers.HeaderDebugPanel',
'debug_toolbar.panels.request_vars.RequestVarsDebugPanel',
'debug_toolbar.panels.sql.SQLDebugPanel',
'debug_toolbar.panels.template.TemplateDebugPanel',
'debug_toolbar.panels.signals.SignalDebugPanel',
'debug_toolbar.panels.logger.LoggingPanel',
)
"""
from django import VERSION
from django.conf import settings
from django.http import HttpResponseForbidden
from django.conf.urls import url
from django.template.loader import render_to_string
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth import get_user_model
from debug_toolbar.panels import Panel
from . import views
from .forms import UserForm
class UserPanel(Panel):
"""
Panel that allows you to login as other recently-logged in users.
"""
name = "User"
has_content = True
template = "debug_toolbar_user_switcher/panel.html"
@property
def nav_title(self):
return _("User")
@property
def url(self):
return ""
@property
def title(self):
return _("User")
@property
def nav_subtitle(self):
return self.is_authenticated(self.request) and self.request.user
@property
def content(self):
if not getattr(settings, "DEBUG_TOOLBAR_USER_DEBUG", settings.DEBUG):
return HttpResponseForbidden()
current = []
if self.is_authenticated(self.request):
for field in get_user_model()._meta.fields:
if field.name == "password":
continue
current.append(
(field.attname, getattr(self.request.user, field.attname))
)
return render_to_string(
self.template,
{
"user": self.request.user,
"form": UserForm(),
"next": self.request.GET.get("next"),
"users": get_user_model().objects.order_by("-last_login")[:10],
"current": current,
},
)
def is_authenticated(self, request):
return request.user.is_authenticated
def process_request(self, request):
self.request = request
return self.get_response(request)
@classmethod
def get_urls(cls):
return (
url(r"^users/login/$", views.login_form, name="debug-userpanel-login-form"),
url(
r"^users/login/(?P<pk>-?\d+)$",
views.login,
name="debug-userpanel-login",
),
url(r"^users/logout$", views.logout, name="debug-userpanel-logout"),
)
Python库 | django-debug-toolbar-user-switcher-2.0.3.tar.gz
版权申诉
118 浏览量
2022-04-08
02:19:25
上传
评论
收藏 3KB GZ 举报
挣扎的蓝藻
- 粉丝: 12w+
- 资源: 15万+
最新资源
- 三菱PLC例程源码fx2nplc与三台丹佛斯变频器458通讯定位.定尺源程序
- 三菱PLC例程源码FX2NPLC与安川G7变频器通讯(原创)有注释,MEMOBUS的写方式
- 三菱PLC例程源码FX2NPLC与A700变频器RUT通讯
- 小智搜搜-必备搜索工具,搜索快启更胜一筹
- 三菱PLC例程源码FX2NPLC和变频器,F930通讯控制的程序有注解拉丝机程序
- 三菱PLC例程源码FX2NPLC+2AD+4ADTC+2DA+电阻尺+编码器+PID温控
- 安装和配置指引,通俗易懂
- 三菱PLC例程源码FX2NPLC+2AD+4ADTC+2DA+电阻尺+编码器+PID温控完整注释程式+UG330人机
- 三菱PLC例程源码FX2N-INV通讯程序
- 三菱PLC例程源码FX2N-INV通讯
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈