Skip to content

Commit 7d307f2

Browse files
author
flyskyer
committed
适配Django2.1
1 parent 04fb46c commit 7d307f2

File tree

8 files changed

+30
-25
lines changed

8 files changed

+30
-25
lines changed

xadmin/plugins/filters.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from django.db import models
99
from django.db.models.fields import FieldDoesNotExist
1010
from django.db.models.constants import LOOKUP_SEP
11-
from django.db.models.sql.constants import QUERY_TERMS
11+
# from django.db.models.sql.constants import QUERY_TERMS
1212
from django.template import loader
1313
from django.utils import six
1414
from django.utils.encoding import smart_str
@@ -45,8 +45,8 @@ def lookup_allowed(self, lookup, value):
4545

4646
# Last term in lookup is a query term (__exact, __startswith etc)
4747
# This term can be ignored.
48-
if len(parts) > 1 and parts[-1] in QUERY_TERMS:
49-
parts.pop()
48+
# if len(parts) > 1 and parts[-1] in QUERY_TERMS:
49+
# parts.pop()
5050

5151
# Special case -- foo__id__exact and foo__id queries are implied
5252
# if foo has been specificially included in the lookup list; so

xadmin/plugins/images.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class AdminImageWidget(forms.FileInput):
4242
def __init__(self, attrs={}):
4343
super(AdminImageWidget, self).__init__(attrs)
4444

45-
def render(self, name, value, attrs=None):
45+
def render(self, name, value, attrs=None, renderer=None):
4646
output = []
4747
if value and hasattr(value, "url"):
4848
label = self.attrs.get('label', name)

xadmin/plugins/inline.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,10 +227,11 @@ def instance_form(self, **kwargs):
227227
form.readonly_fields = []
228228
inst = form.save(commit=False)
229229
if inst:
230+
meta_field_names = [field.name for field in inst._meta.get_fields()]
230231
for readonly_field in readonly_fields:
231232
value = None
232233
label = None
233-
if readonly_field in inst._meta.get_all_field_names():
234+
if readonly_field in meta_field_names:
234235
label = inst._meta.get_field(readonly_field).verbose_name
235236
value = smart_text(getattr(inst, readonly_field))
236237
elif inspect.ismethod(getattr(inst, readonly_field, None)):

xadmin/plugins/passwords.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# coding=utf-8
22
from django.contrib.auth.forms import PasswordResetForm, SetPasswordForm
33
from django.contrib.auth.tokens import default_token_generator
4-
from django.contrib.auth.views import password_reset_confirm
4+
from django.contrib.auth.views import PasswordResetConfirmView as password_reset_confirm
55
from django.template.response import TemplateResponse
66
from django.utils.translation import ugettext as _
77

@@ -53,14 +53,17 @@ def post(self, request, *args, **kwargs):
5353
else:
5454
return self.get(request, form=form)
5555

56+
5657
site.register_view(r'^xadmin/password_reset/$', ResetPasswordSendView, name='xadmin_password_reset')
5758

59+
5860
class ResetLinkPlugin(BaseAdminPlugin):
5961

6062
def block_form_bottom(self, context, nodes):
6163
reset_link = self.get_admin_url('xadmin_password_reset')
6264
return '<div class="text-info" style="margin-top:15px;"><a href="%s"><i class="fa fa-question-sign"></i> %s</a></div>' % (reset_link, _('Forgotten your password or username?'))
6365

66+
6467
site.register_plugin(ResetLinkPlugin, LoginView)
6568

6669

@@ -75,11 +78,11 @@ class ResetPasswordComfirmView(BaseAdminView):
7578
def do_view(self, request, uidb36, token, *args, **kwargs):
7679
context = super(ResetPasswordComfirmView, self).get_context()
7780
return password_reset_confirm(request, uidb36, token,
78-
template_name=self.password_reset_confirm_template,
79-
token_generator=self.password_reset_token_generator,
80-
set_password_form=self.password_reset_set_form,
81-
post_reset_redirect=self.get_admin_url('xadmin_password_reset_complete'),
82-
current_app=self.admin_site.name, extra_context=context)
81+
template_name=self.password_reset_confirm_template,
82+
token_generator=self.password_reset_token_generator,
83+
set_password_form=self.password_reset_set_form,
84+
post_reset_redirect=self.get_admin_url('xadmin_password_reset_complete'),
85+
current_app=self.admin_site.name, extra_context=context)
8386

8487
def get(self, request, uidb36, token, *args, **kwargs):
8588
return self.do_view(request, uidb36, token)
@@ -91,8 +94,9 @@ def get_media(self):
9194
return super(ResetPasswordComfirmView, self).get_media() + \
9295
self.vendor('xadmin.page.form.js', 'xadmin.form.css')
9396

97+
9498
site.register_view(r'^xadmin/password_reset/(?P<uidb36>[0-9A-Za-z]{1,13})-(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
95-
ResetPasswordComfirmView, name='xadmin_password_reset_confirm')
99+
ResetPasswordComfirmView, name='xadmin_password_reset_confirm')
96100

97101

98102
class ResetPasswordCompleteView(BaseAdminView):
@@ -107,5 +111,5 @@ def get(self, request, *args, **kwargs):
107111

108112
return TemplateResponse(request, self.password_reset_complete_template, context)
109113

110-
site.register_view(r'^xadmin/password_reset/complete/$', ResetPasswordCompleteView, name='xadmin_password_reset_complete')
111114

115+
site.register_view(r'^xadmin/password_reset/complete/$', ResetPasswordCompleteView, name='xadmin_password_reset_complete')

xadmin/views/edit.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,6 @@ def get_form_layout(self):
224224

225225
return layout
226226

227-
@filter_hook
228227
def get_form_helper(self):
229228
helper = FormHelper()
230229
helper.form_tag = False

xadmin/views/list.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,6 @@ def get_list_display_links(self):
169169

170170
def make_result_list(self):
171171
# Get search parameters from the query string.
172-
self.base_queryset = self.queryset()
173172
self.list_queryset = self.get_list_queryset()
174173
self.ordering_field_columns = self.get_ordering_field_columns()
175174
self.paginator = self.get_paginator()

xadmin/views/website.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
from django.utils.translation import ugettext as _
33
from django.contrib.auth import REDIRECT_FIELD_NAME
44
from django.views.decorators.cache import never_cache
5-
from django.contrib.auth.views import login
6-
from django.contrib.auth.views import logout
5+
from django.contrib.auth.views import LoginView as login
6+
from django.contrib.auth.views import LogoutView as logout
77
from django.http import HttpResponse
88

99
from .base import BaseAdminView, filter_hook
@@ -63,7 +63,8 @@ def get(self, request, *args, **kwargs):
6363
'template_name': self.login_template or 'xadmin/views/login.html',
6464
}
6565
self.update_params(defaults)
66-
return login(request, **defaults)
66+
# return login(request, **defaults)
67+
return login.as_view(**defaults)(request)
6768

6869
@never_cache
6970
def post(self, request, *args, **kwargs):
@@ -91,7 +92,8 @@ def get(self, request, *args, **kwargs):
9192
defaults['template_name'] = self.logout_template
9293

9394
self.update_params(defaults)
94-
return logout(request, **defaults)
95+
# return logout(request, **defaults)
96+
return logout.as_view(**defaults)(request)
9597

9698
@never_cache
9799
def post(self, request, *args, **kwargs):

xadmin/widgets.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ def __init__(self, attrs=None, format=None):
3131
final_attrs.update(attrs)
3232
super(AdminDateWidget, self).__init__(attrs=final_attrs, format=format)
3333

34-
def render(self, name, value, attrs=None):
35-
input_html = super(AdminDateWidget, self).render(name, value, attrs)
34+
def render(self, name, value, attrs=None, renderer=None):
35+
input_html = super(AdminDateWidget, self).render(name, value, attrs, renderer)
3636
return mark_safe('<div class="input-group date bootstrap-datepicker"><span class="input-group-addon"><i class="fa fa-calendar"></i></span>%s'
3737
'<span class="input-group-btn"><button class="btn btn-default" type="button">%s</button></span></div>' % (input_html, _(u'Today')))
3838

@@ -49,8 +49,8 @@ def __init__(self, attrs=None, format=None):
4949
final_attrs.update(attrs)
5050
super(AdminTimeWidget, self).__init__(attrs=final_attrs, format=format)
5151

52-
def render(self, name, value, attrs=None):
53-
input_html = super(AdminTimeWidget, self).render(name, value, attrs)
52+
def render(self, name, value, attrs=None, renderer=None):
53+
input_html = super(AdminTimeWidget, self).render(name, value, attrs, renderer)
5454
return mark_safe('<div class="input-group time bootstrap-clockpicker"><span class="input-group-addon"><i class="fa fa-clock-o">'
5555
'</i></span>%s<span class="input-group-btn"><button class="btn btn-default" type="button">%s</button></span></div>' % (input_html, _(u'Now')))
5656

@@ -73,8 +73,8 @@ def __init__(self, attrs=None):
7373
# we want to define widgets.
7474
forms.MultiWidget.__init__(self, widgets, attrs)
7575

76-
def render(self, name, value, attrs=None):
77-
input_html = [ht for ht in super(AdminSplitDateTime, self).render(name, value, attrs).replace('/><input', '/>\n<input').split('\n') if ht != '']
76+
def render(self, name, value, attrs=None, renderer=None):
77+
input_html = [ht for ht in super(AdminSplitDateTime, self).render(name, value, attrs, renderer).replace('><input', '>\n<input').split('\n') if ht != '']
7878
# return input_html
7979
return mark_safe('<div class="datetime clearfix"><div class="input-group date bootstrap-datepicker"><span class="input-group-addon"><i class="fa fa-calendar"></i></span>%s'
8080
'<span class="input-group-btn"><button class="btn btn-default" type="button">%s</button></span></div>'

0 commit comments

Comments
 (0)