Commits (18)
......@@ -17,5 +17,5 @@
# Postorius. If not, see <http://www.gnu.org/licenses/>.
__version__ = '1.3.3rc1'
__version__ = '1.3.3rc2'
default_app_config = 'postorius.apps.PostoriusConfig'
......@@ -17,7 +17,7 @@
# Postorius. If not, see <http://www.gnu.org/licenses/>.
"""Postorius view decorators."""
from functools import wraps
from django.core.exceptions import PermissionDenied
......@@ -29,6 +29,7 @@ def list_owner_required(fn):
Assumes that the request object is the first arg and that list_id
is present in kwargs.
"""
@wraps(fn)
def wrapper(*args, **kwargs):
user = args[0].user
list_id = kwargs['list_id']
......@@ -49,6 +50,7 @@ def list_moderator_required(fn):
Assumes that the request object is the first arg and that list_id
is present in kwargs.
"""
@wraps(fn)
def wrapper(*args, **kwargs):
user = args[0].user
list_id = kwargs['list_id']
......@@ -68,6 +70,7 @@ def superuser_required(fn):
"""Make sure that the logged in user is a superuser or otherwise raise
PermissionDenied.
Assumes the request object to be the first arg."""
@wraps(fn)
def wrapper(*args, **kwargs):
user = args[0].user
if not user.is_superuser:
......
......@@ -18,10 +18,10 @@ You should have received a copy of the GNU Lesser General Public License
along with Postorius. If not, see <http://www.gnu.org/licenses/>.
1.3.3rc1
1.3.3rc2
========
(2020-05-09)
(2020-05-23)
* Expose additional list settings. (See !483)
* Correct description of Digest Frequency. (Closes #395)
......@@ -38,6 +38,10 @@ along with Postorius. If not, see <http://www.gnu.org/licenses/>.
* Un-handled ``HTTPError`` exception raised from MailmanClient now results in an
error page and proper logging instead of mysterious ``KeyError`` in logs.
(Closes #341)
* Change List settings navigation to be vertical instead of horizontal. (See
!509)
* Move bounce processing settings into a new vertical tab for better
visibility.
1.3.2
......
......@@ -221,6 +221,10 @@ class MemberPolicyForm(ListSettingsForm):
'Confirm then Moderate: First subscribers have to confirm,'
' then a moderator needs to authorize.'))
class BounceProcessingForm(ListSettingsForm):
"""List's bounce processing settings."""
process_bounces = forms.BooleanField(
widget=forms.RadioSelect(choices=((True, _('Yes')), (False, _('No')))),
required=False,
......