> 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