Skip to content

Commit 632a281

Browse files
committed
Merge branch 'release/1.5.2'
* release/1.5.2: bump version Bump version: 1.5.1 → 1.5.2 bug fixes
2 parents 56394f3 + 574a70a commit 632a281

File tree

5 files changed

+35
-25
lines changed

5 files changed

+35
-25
lines changed

.bumpversion.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[bumpversion]
2-
current_version = 1.5.1
2+
current_version = 1.5.2
33
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)
44
serialize = {major}.{minor}.{patch}
55
commit = True

CHANGES

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
1.5.2
2+
-----
3+
* bug fixing
4+
5+
16
1.5.1
27
-----
38
* bug fixing
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
NAME = 'django-admin-extra-buttons'
2-
VERSION = __version__ = '1.5.1'
2+
VERSION = __version__ = '1.5.2'
33
__author__ = 'sax'

src/admin_extra_buttons/buttons.py

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ def __init__(self, handler, context, label=None, visible=True, enabled=True,
1717
self.href = config.get('href', None)
1818
self.config = config
1919
self.handler = handler
20-
self.visible = visible
21-
self.enabled = enabled
20+
self._visible = visible
21+
self._enabled = enabled
2222
self.template = template or self.default_template
2323
self.context: RequestContext = context
2424
self.disable_on_click = True
@@ -56,29 +56,42 @@ def html_attrs(self):
5656
if self.disable_on_edit and "aeb-disable_on_edit" not in css_class:
5757
css_class += " aeb-disable_on_edit"
5858

59-
# enabled
6059
css_class = css_class.replace("disabled", "")
61-
if not self.enabled:
62-
css_class += " disabled"
63-
elif callable(self.enabled) and not self.enabled(self):
60+
if self.enabled:
61+
css_class += " enabled"
62+
else:
6463
css_class += " disabled"
6564

6665
attrs['class'] = css_class
6766
return attrs
6867

6968
def can_render(self):
70-
return self.authorized() and self.url and self.is_visible()
69+
return self.authorized() and self.url and self.visible
70+
71+
@property
72+
def enabled(self):
73+
if not self.context: # pragma: no cover
74+
raise ValueError("Button not initialised.")
75+
if callable(self._enabled):
76+
try:
77+
return self._enabled(self)
78+
except Exception: # pragma: no cover
79+
raise
80+
return False
7181

72-
def is_visible(self):
82+
return self._enabled
83+
84+
@property
85+
def visible(self):
7386
if not self.context: # pragma: no cover
7487
raise ValueError("Button not initialised.")
75-
if callable(self.visible):
88+
if callable(self._visible):
7689
try:
77-
return self.visible(self)
90+
return self._visible(self)
7891
except Exception: # pragma: no cover
7992
return False
8093

81-
return self.visible
94+
return self._visible
8295

8396
@property
8497
def request(self):
@@ -103,6 +116,8 @@ def authorized(self):
103116

104117
@property
105118
def url(self):
119+
if not self.enabled:
120+
return '#'
106121
func = self.config.get('get_url', self.get_url)
107122
return func(self.context)
108123

src/admin_extra_buttons/handlers.py

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -97,23 +97,13 @@ def __init__(self, func, html_attrs=None,
9797
**kwargs)
9898

9999
def get_button_params(self, context, **extra):
100-
request = context['request']
101-
if callable(self.enabled):
102-
enabled = bool(self.enabled(request))
103-
else:
104-
enabled = self.enabled
105-
106-
if callable(self.visible):
107-
visible = bool(self.visible(request))
108-
else:
109-
visible = self.visible
110100
return {'label': self.config.get('label', labelize(self.name)),
111101
'handler': self,
112102
'html_attrs': self.html_attrs,
113103
'change_list': self.change_list,
114104
'change_form': self.change_form,
115-
'visible': visible,
116-
'enabled': enabled,
105+
'visible': self.visible,
106+
'enabled': self.enabled,
117107
'context': context,
118108
'login_required': self.login_required,
119109
'permission': self.permission,

0 commit comments

Comments
 (0)