Skip to content

Commit ec64d71

Browse files
committed
add show_avatar and avatar_field logic
1 parent 517e7db commit ec64d71

File tree

3 files changed

+84
-5
lines changed

3 files changed

+84
-5
lines changed

adminlteui/admin.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,14 @@ class GeneralOptionForm(forms.Form):
6969
help_text=_("Login page welcome sign.")
7070
)
7171

72+
avatar_field = forms.CharField(label=_('Avatar Field'),
73+
widget=widgets.AdminTextInputWidget(),
74+
required=False,
75+
help_text=_(
76+
"which field is avatar."))
77+
show_avatar = forms.BooleanField(
78+
label=_('Show Avatar'), required=False)
79+
7280
def save(self):
7381
try:
7482
# clear site-logo
@@ -77,6 +85,16 @@ def save(self):
7785
obj.delete()
7886
self.changed_data.remove('site_logo')
7987

88+
if not self.data.get('show_avatar'):
89+
try:
90+
obj = Options.objects.get(option_name='show_avatar')
91+
obj.option_value = 'off'
92+
obj.save()
93+
except Exception:
94+
obj = Options.objects.create(option_name='show_avatar',
95+
option_value='off')
96+
obj.save()
97+
8098
for data_item in self.changed_data:
8199
try:
82100
obj = Options.objects.get(option_name=data_item)
@@ -164,7 +182,11 @@ def general_option_view(self, request):
164182
'welcome_sign': get_option(option_name='welcome_sign'),
165183
'site_logo': ImageBox(
166184
get_option(option_name='site_logo')) if get_option(
167-
option_name='site_logo') else ''
185+
option_name='site_logo') else '',
186+
'show_avatar': True if get_option(
187+
option_name='show_avatar') == 'on' else False,
188+
'avatar_field': get_option(
189+
option_name='avatar_field') or 'request.user.head_avatar',
168190
}
169191
form = GeneralOptionForm(initial=initial_value)
170192
else:
@@ -183,7 +205,11 @@ def general_option_view(self, request):
183205
'welcome_sign': get_option(option_name='welcome_sign'),
184206
'site_logo': ImageBox(
185207
get_option(option_name='site_logo')) if get_option(
186-
option_name='site_logo') else ''
208+
option_name='site_logo') else '',
209+
'show_avatar': True if get_option(
210+
option_name='show_avatar') == 'on' else False,
211+
'avatar_field': get_option(
212+
option_name='avatar_field') or 'request.user.head_avatar',
187213
}
188214
form = GeneralOptionForm(initial=initial_value)
189215
messages.add_message(request, messages.SUCCESS,

adminlteui/templates/admin/base.html

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,14 +76,28 @@
7676
<!-- User Account: style can be found in dropdown.less -->
7777
<li class="dropdown user user-menu">
7878
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
79+
{% get_adminlte_option 'show_avatar' as adminlte_show_avatar %}
80+
{% if adminlte_show_avatar.valid and adminlte_show_avatar.show_avatar == 'on' %}
81+
{% get_adminlte_option 'avatar_field' request as adminlte_avatar_field %}
82+
{% if adminlte_avatar_field.valid and adminlte_avatar_field.avatar_field %}
83+
<img src="{{ adminlte_avatar_field.avatar_field }}" class="user-image" alt="User Image" style="width: 25px; height:25px;">
84+
{% else %}
7985
<img src={% static "admin/dist/img/default.jpg" %} class="user-image" alt="User Image">
86+
{% endif %}
87+
{% endif %}
8088
<span class="hidden-xs">{{ request.user.username }}</span>
8189
</a>
8290
<ul class="dropdown-menu">
8391
<!-- User image -->
92+
{% get_adminlte_option 'show_avatar' as adminlte_show_avatar %}
93+
{% if adminlte_show_avatar.valid and adminlte_show_avatar.show_avatar == 'on' %}
8494
<li class="user-header">
95+
{% get_adminlte_option 'avatar_field' request as adminlte_avatar_field %}
96+
{% if adminlte_avatar_field.valid and adminlte_avatar_field.avatar_field %}
97+
<img src="{{ adminlte_avatar_field.avatar_field }}" class="img-circle" alt="User Image" style="width: 90px; height:90px;">
98+
{% else %}
8599
<img src={% static "admin/dist/img/default.jpg" %} class="img-circle" alt="User Image">
86-
100+
{% endif %}
87101
<p>
88102
{{ request.user.username }} -
89103
{% if request.user.is_superuser %}
@@ -98,6 +112,24 @@
98112
<small>{% trans "Register time" %}: {{ request.user.date_joined }}</small>
99113
</p>
100114
</li>
115+
{% else %}
116+
<li class="user-header" style="height: auto;">
117+
<p>
118+
{{ request.user.username }} -
119+
{% if request.user.is_superuser %}
120+
{% trans "Super manager" %}
121+
{% else %}
122+
{% if request.user.groups.all %}
123+
{% for i in request.user.groups.all %}{{ i.name }}{% endfor %}
124+
{% else %}
125+
{% trans 'Normal' %}
126+
{% endif %}
127+
{% endif %}
128+
<small>{% trans "Register time" %}: {{ request.user.date_joined }}</small>
129+
</p>
130+
</li>
131+
{% endif %}
132+
101133
<!-- Menu Body -->
102134
<!--<li class="user-body">-->
103135
<!--<div class="row">-->
@@ -137,15 +169,23 @@
137169
<!-- sidebar: style can be found in sidebar.less -->
138170
<section class="sidebar">
139171
<!-- Sidebar user panel -->
172+
{% get_adminlte_option 'show_avatar' as adminlte_show_avatar %}
173+
{% if adminlte_show_avatar.valid and adminlte_show_avatar.show_avatar == 'on' %}
140174
<div class="user-panel">
141175
<div class="pull-left image">
176+
{% get_adminlte_option 'avatar_field' request as adminlte_avatar_field %}
177+
{% if adminlte_avatar_field.valid and adminlte_avatar_field.avatar_field %}
178+
<img src="{{ adminlte_avatar_field.avatar_field }}" class="img-circle" alt="User Image" style="width: 45px; height:45px;">
179+
{% else %}
142180
<img src={% static "admin/dist/img/default.jpg" %} class="img-circle" alt="User Image">
181+
{% endif %}
143182
</div>
144183
<div class="pull-left info">
145184
<p>{{ request.user.username }}</p>
146185
<a href="#"><i class="fa fa-circle text-success"></i> {% trans "Online" %}</a>
147186
</div>
148187
</div>
188+
{% endif %}
149189
<!-- search form -->
150190
<form action="#" method="get" class="sidebar-form">
151191
<div class="input-group">
@@ -460,8 +500,8 @@ <h3 class="control-sidebar-heading">Chat Settings</h3>
460500
if (menuActions[i].href===window.location.origin + pathname) {
461501
continue
462502
}
463-
464503
console.log('menu matched.', window.location.href, menuActions[i].href);
504+
menuActions[i].parentNode.setAttribute('class', 'active');
465505
if (menuActions[i].parentNode.parentNode.getAttribute('class') !== 'sidebar-menu') {
466506
menuActions[i].parentNode.parentNode.setAttribute('class', 'treeview-menu menu-open');
467507
menuActions[i].parentNode.parentNode.parentNode.setAttribute('class', 'treeview active');
Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,30 @@
1+
import traceback
12
from django import template
23
from adminlteui.models import Options
4+
from django.conf import settings
35

46
register = template.Library()
57

68

79
@register.simple_tag
8-
def get_adminlte_option(option_name):
10+
def get_adminlte_option(option_name, request=None):
911
config_ = {}
1012
config_list = Options.objects.filter(valid=True)
1113

1214
if config_list.filter(option_name=option_name):
1315
config_[option_name] = config_list.get(
1416
option_name=option_name).option_value
17+
if request and option_name=='avatar_field':
18+
try:
19+
# request.user.head_avatar
20+
image_path = eval(config_[option_name]).name
21+
if image_path:
22+
config_[option_name] = settings.MEDIA_URL + image_path
23+
else:
24+
config_[option_name] = None
25+
except Exception as e:
26+
traceback.print_exc()
27+
config_[option_name] = None
1528
config_['valid'] = config_list.get(
1629
option_name=option_name).valid
1730
return config_

0 commit comments

Comments
 (0)