import os import regsub import string import mm_cfg, mm_utils import htmlformat class HTMLFormatter: def InitVars(self): self._template_dir = os.path.join(mm_cfg.TEMPLATE_DIR, self._internal_name) def GetMailmanFooter(self): owners_html = htmlformat.Container() for i in range(len(self.owner)): owner = self.owner[i] owners_html.AddItem(htmlformat.Link('mailto:%s' % owner, owner)) if i + 1 <> len(self.owner): owners_html.AddItem(', ') # Remove the .Format() when htmlformat conversion is done. return htmlformat.Container( '
',
'HTML generated by ',
htmlformat.Link(mm_cfg.MAILMAN_URL,
"Mailman v %s" % mm_cfg.VERSION)))).Format()
def SnarfHTMLTemplate(self, file):
filename = os.path.join(self._template_dir, file)
f = open(filename,'r')
str = f.read()
f.close()
return str
def FormatUsers(self, digest):
def NotHidden(x, s=self, v=mm_cfg.ConcealSubscription):
return not s.GetUserOption(x, v)
if self.closed:
return 'Sorry, not available over the web.'
if digest:
people = filter(NotHidden, self.digest_members)
num_concealed = len(self.digest_members) - len(people)
else:
people = filter(NotHidden, self.members)
num_concealed = len(self.digest_members) - len(people)
if (num_concealed > 0):
concealed = "
(%d private)
" % num_concealed
else:
concealed = ""
def FormatOneUser(person, me=self):
import htmlformat, os
id = mm_utils.ObscureEmail(person)
if me.obscure_addresses:
showing = mm_utils.ObscureEmail(person, for_text=1)
else:
showing = person
return htmlformat.Link(os.path.join(me.GetScriptURL('options'),
id), showing)
items = map(FormatOneUser, people)
# Just return the .Format() so this works until I finish
# converting everything to htmlformat...
return (apply(htmlformat.UnorderedList, tuple(items)).Format()
+ concealed)
def FormatOptionButton(self, type, value, user):
users_val = self.GetUserOption(user, type)
if users_val == value:
checked = ' CHECKED'
else:
checked = ''
name = { mm_cfg.DontReceiveOwnPosts : "dontreceive",
mm_cfg.DisableDelivery : "disablemail",
mm_cfg.EnableMime : "plaintext",
mm_cfg.AcknowlegePosts : "ackposts",
mm_cfg.Digests : "digest",
mm_cfg.ConcealSubscription : "conceal"
}[type]
import sys
return '' % (name, value, checked)
def FormatDigestButton(self):
if self.digest_is_default:
checked = ' CHECKED'
else:
checked = ''
return '' % checked
def FormatUndigestButton(self):
if self.digest_is_default:
checked = ''
else:
checked = ' CHECKED'
return '' % checked
def FormatFormStart(self, name, extra=''):
base_url = self.GetScriptURL(name)
full_url = os.path.join(base_url, extra)
return ('