HEX
Server: LiteSpeed
System: Linux houston.panomity.com 6.8.0-100-generic #100-Ubuntu SMP PREEMPT_DYNAMIC Tue Jan 13 16:40:06 UTC 2026 x86_64
User: nudepix (1011)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //lib/python3/dist-packages/mailmanclient/restobjects/held_message.py
# Copyright (C) 2010-2023 by the Free Software Foundation, Inc.
#
# This file is part of mailmanclient.
#
# mailmanclient is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by the
# Free Software Foundation, version 3 of the License.
#
# mailmanclient is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
# License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with mailmanclient.  If not, see <http://www.gnu.org/licenses/>.

from mailmanclient.restbase.base import RESTObject

__metaclass__ = type
__all__ = [
    'HeldMessage'
]


class HeldMessage(RESTObject):

    _properties = ('hold_date', 'message_id', 'msg', 'reason', 'request_id',
                   'self_link', 'sender', 'subject', 'type')

    def __repr__(self):
        return '<HeldMessage {0!r} by {1}>'.format(
            self.request_id, self.sender)

    def moderate(self, action, comment=None):
        """Moderate a held message.

        :param action: Action to perform on held message.
        :type action: String.
        """
        data = dict(action=action)
        if comment is not None:
            data['comment'] = comment

        response, content = self._connection.call(
            self._url, data, 'POST')
        return response

    def discard(self):
        """Shortcut for moderate."""
        return self.moderate('discard')

    def reject(self, reason=None):
        """Shortcut for moderate.

        :param reason: An optional reason for rejecting the held message.
        """
        return self.moderate('reject', comment=reason)

    def defer(self):
        """Shortcut for moderate."""
        return self.moderate('defer')

    def accept(self):
        """Shortcut for moderate."""
        return self.moderate('accept')