"""Administrative GUI for digest deliveries."""
from Mailman import mm_cfg
from Mailman import Utils
from Mailman.i18n import _
from Mailman.Gui.GUIBase import GUIBase
ALLOWEDS = ('real_name', 'list_name', 'host_name', 'web_page_url',
'description', 'info', 'cgiext', '_internal_name',
)
class Digest(GUIBase):
def GetConfigCategory(self):
return 'digest', _('Digest options')
def GetConfigInfo(self, mlist, category, subcat=None):
if category <> 'digest':
return None
WIDTH = mm_cfg.TEXTFIELDWIDTH
info = [
_("Batched-delivery digest characteristics."),
('digestable', mm_cfg.Toggle, (_('No'), _('Yes')), 1,
_('Can list members choose to receive list traffic '
'bunched in digests?')),
('digest_is_default', mm_cfg.Radio,
(_('Regular'), _('Digest')), 0,
_('Which delivery mode is the default for new users?')),
('mime_is_default_digest', mm_cfg.Radio,
(_('Plain'), _('MIME')), 0,
_('When receiving digests, which format is default?')),
('digest_size_threshhold', mm_cfg.Number, 3, 0,
_('How big in Kb should a digest be before it gets sent out?')),
('digest_send_periodic', mm_cfg.Radio, (_('No'), _('Yes')), 1,
_('Should a digest be dispatched daily when the size threshold '
"isn't reached?")),
('digest_header', mm_cfg.Text, (4, WIDTH), 0,
_('Header added to every digest'),
_("Text attached (as an initial message, before the table"
" of contents) to the top of digests. ")
+ Utils.maketext('headfoot.html', raw=1, mlist=mlist)),
('digest_footer', mm_cfg.Text, (4, WIDTH), 0,
_('Footer added to every digest'),
_("Text attached (as a final message) to the bottom of digests. ")
+ Utils.maketext('headfoot.html', raw=1, mlist=mlist)),
('digest_volume_frequency', mm_cfg.Radio,
(_('Yearly'), _('Monthly'), _('Quarterly'),
_('Weekly'), _('Daily')), 0,
_('How often should a new digest volume be started?'),
_('''When a new digest volume is started, the volume number is
incremented and the issue number is reset to 1.''')),
('_new_volume', mm_cfg.Toggle, (_('No'), _('Yes')), 0,
_('Should Mailman start a new digest volume?'),
_('''Setting this option instructs Mailman to start a new volume
with the next digest sent out.''')),
('_send_digest_now', mm_cfg.Toggle, (_('No'), _('Yes')), 0,
_('''Should Mailman send the next digest right now, if it is not
empty?''')),
]
return info
def _setValue(self, mlist, property, val, doc):
if property == '_new_volume' and val:
mlist.bump_digest_volume()
volume = mlist.volume
number = mlist.next_digest_number
doc.AddItem(_("""The next digest will be sent as volume
%(volume)s, number %(number)s"""))
elif property == '_send_digest_now' and val:
status = mlist.send_digest_now()
if status:
doc.AddItem(_("""A digest has been sent."""))
else:
doc.AddItem(_("""There was no digest to send."""))
else:
if property in ('digest_header', 'digest_footer'):
val = self._convertString(mlist, property, ALLOWEDS, val, doc)
if val is None:
return
GUIBase._setValue(self, mlist, property, val, doc)