[Mailman-Users] Is it possible to add the Description field onthelist create web interface?

Mark Sapiro msapiro at value.net
Thu Feb 24 06:50:11 CET 2005


Brian Ensor wrote:
>
>I do want to make the description field mandatory on list creation, so
>modifying the Mailman/Cgi/create.py is most likely the route I would like to
>pursue.
>
>In viewing the config and determining the changes to be made, I would be
>editing as follows:
>
>def process_request(doc, cgidata):
>    # Lowercase the listname since this is treated as the "internal" name.
>    listname = cgidata.getvalue('listname', '').strip().lower()
>    owner    = cgidata.getvalue('owner', '').strip()
>    # Added following line to support description field
>    description = cgidata.getvalue('description', '').strip()


Looks OK


># Sanity Check
>    # Added following line to support description field
>    if not description:
>        request_creation(doc, cgidata,
>                         _('You forgot to specify the list description'))
>        return


The issue here is _() is an i18n method to substitute text in the
appropriate language for the English text. As long as you're only
dealing in English, this won't be a problem, but this message won't be
available in other languages.


># And send the notice to the list owner.
>       # Added description to mlist 
>       text = Utils.maketext(
>            'newlist.txt',
>            {'listname'    : listname,
>             'password'    : password,
>             'admin_url'   : mlist.GetScriptURL('admin', absolute=1),
>             'listinfo_url': mlist.GetScriptURL('listinfo', absolute=1),
>             'requestaddr' : mlist.GetRequestEmail(),
>             'siteowner'   : siteadmin,
>             'description' : description,
>             }, mlist=mlist)


This only adds 'description' and it's value to the dictionary for
interpolation into the template. You still need to edit the
newlist.txt template (see
http://www.python.org/cgi-bin/faqw-mm.py?req=show&file=faq04.048.htp)
to include appropriate text with '%(description)s' to receive the
description.


># in Dummy section modify page text to indicate requirement for description
>    <p>You also need to enter the email address of the initial list owner
>and
>    a brief description of the list. Once the list is created, the list
>owner
>    will be given notification, along with the initial list password.  The
>    list owner will then be able to modify the password and add or remove
>    additional list owners.
>
># Also in Dummy section
>    safedescription = Utils.websafe(cgidata.getvalue('description', ''))
>    ftable.AddRow([Label(_('Brief description of list:')),
>                   TextBox('description', safedescription)])
>    ftable.AddCellInfo(ftable.GetCurrentRowIndex(), 0, bgcolor=GREY)
>    ftable.AddCellInfo(ftable.GetCurrentRowIndex(), 1, bgcolor=GREY)
>
>
>I am not sure if the information above is 100% correct, but I believe it is.
>The part that is not addressed above is the actual list creation.  This is
>called by mlist.Create, which I believe is from the /Mailman/MailList.py
>file.  Here is how I believe the call should be done in create.py to
>accomplish what I want:
>
>                # Added description to this command line
>                mlist.Create(listname, owner, pw, langs, emailhost,
>description)


Do not change the mlist.Create() call.


>Now that I am passing another parameter, how can I ensure it is handled
>correctly?  Will there be some changes required in MailList.py or another
>file to make sure the field is handled correctly?  Is description the
>correct name to use?


You don't pass the parameter in the Create() call.

You 'update' it after the list is created. Just before the last
'finally:' in the outer of three 'try:'s around the Create() you'll see

        # Initialize the host_name and web_page_url attributes, based on
        # virtual hosting settings and the request environment
variables.
        mlist.default_member_moderation = moderate
        mlist.web_page_url = mm_cfg.DEFAULT_URL_PATTERN % hostname
        mlist.host_name = emailhost

add after this and before mlist.Save()

        mlist.description = description


--
Mark Sapiro <msapiro at value.net>       The highway is for gamblers,
San Francisco Bay Area, California    better use your sense - B. Dylan




More information about the Mailman-Users mailing list