> By default, Python will only access modules in the Python libraries and
> the directory that contains the current module. Modules in the bin/
> directory for example get around this by importing 'paths' which is
> the bin/paths.py file which sets some additional directories in the
> search paths.
> 
> The easiest way to make this work for testing purposes is just to store
> your test file in the $prefix directory, i.e. the directory that
> contains the Mailman/, bin/, etc. directories.
> A key thing in Python code is indentation because that's how Python
> determines block structure. It is critical that things be indented
> consistently and that either tabs or spaces but not a mixture be used
> for indentation. The above snippet, properly indented looks like
> 
> for name in listnames:
>      if name in notshowns:
>         continue
>      mlist = MailList.MailList(name, lock=0)
>         if mlist.advertised:
> 
> It is critical that "if name in notshowns:" is indented exactly the
> same amount as "mlist = MailList.MailList(name, lock=0)" and that
> other indentation be preserved exactly as in the original.
> 

Thank you so much for your help. I got it to work!

I found out that I made two errors by testing the script from $PREFIX directory 
as you suggested. 
One was indentation. The other was the failure to clean up all the newlines 
when I extracted 
listnames that I wanted to hide from a file (one listname per line).


Here is what I have now:
myfile = '/var/mailman/Mailman/Cgi/notshown'
     noshowns = string.split(open(myfile).read())
     noshowns.sort()


     for name in listnames:
         if name in noshowns:
            continue
         mlist = MailList.MailList(name, lock=0)
         if mlist.advertised:
             if mm_cfg.VIRTUAL_HOST_OVERVIEW and \
                    mlist.web_page_url.find(hostname) == -1:
                 # List is for different identity of this host - skip it.
                 continue
             else:
                 advertised.append((mlist.GetScriptURL('listinfo'),
                                    mlist.real_name,
                                    mlist.description))

Since I need to store a few hundreds listnames in the file, I wonder if it 
might be better
to use regular expressions.  Five to six regular expressions should be 
sufficient to match all the
list names I want to hide.

Another option (if it is doable) is to use Mailman's supported advertise 
feature to hide these
  lists from both listinfo and admin page. I will subsequently bring up a third 
page, either a
"sub-admin" page showing only those hidden course lists, or a "supper admin" 
page displaying
all lists.  The goal is that future upgrades won't entail re-customizing the 
previously customized 
package files.  But I am afraid this may turn out to be so complicated as to 
involve security 
wrapper and other matters.

I would be very grateful to have your feed back.

Thanks.
Xiaoyan
------------------------------------------------------
Mailman-Users mailing list
Mailman-Users@python.org
http://mail.python.org/mailman/listinfo/mailman-users
Mailman FAQ: http://www.python.org/cgi-bin/faqw-mm.py
Searchable Archives: http://www.mail-archive.com/mailman-users%40python.org/
Unsubscribe: 
http://mail.python.org/mailman/options/mailman-users/archive%40jab.org

Security Policy: 
http://www.python.org/cgi-bin/faqw-mm.py?req=show&file=faq01.027.htp

Reply via email to