On Thu, Jul 15, 2010 at 5:26 PM, Philip Neustrom <phil...@gmail.com> wrote:
> Looks basically good. > > One note, though: This is going to grab the blacklist page on a > per-wiki basis, rather than being global. You'll want to specific a > wiki id in there to grab from the hub (primary) wiki. > > -p > > On Thu, Jul 15, 2010 at 5:03 PM, Sean Robinson <seankrobin...@gmail.com> > wrote: > > On Sat, Jul 10, 2010 at 4:01 PM, Ryan Tucker <rtuc...@gmail.com> wrote: > >> > >> On Sat, Jul 10, 2010 at 5:06 PM, Sean Robinson <seankrobin...@gmail.com > > > >> wrote: > >> > After looking at blacklist.py (but not running it), it appears that > >> > the list of restricted URLs are hard coded into the source file. Is > anyone > >> > interested in making this use a wiki page for the list of URLs? > >> > >> If someone's looking for inspiration on how to retrieve the list from > >> a wiki page, the spell-checking code does this. There's probably some > >> good room for code reuse (or modularization!) there, for sure. -rt > >> > > > > The following is an attempt at a new blacklist.py. I am seeking > comments > > and criticism to see if I understood what I was reading in the spell > check > > code and whether I am using PageEditor correctly, etc. This is an early > > draft of non-working code, but I would appreciate feedback about my > > approach. > > > > # -*- coding: utf-8 -*- > > # blacklist against wiki spammers > > > > # WikiSpot admins can add a URL to 'Global Blacklist Page' to disallow an > > # edit which contains that URL. > > > > import re, types > > from Sycamore import config > > from Sycamore.PageEditor import PageEditor > > from Sycamore.request import RequestDummy > > from Sycamore.security import Permissions > > > > # get the global blacklist page contents > > request = RequestDummy() > > blacklist_page = PageEditor(config.global_blacklist_page, request) > > if blacklist_page: > > blacklist = blacklist_page.get_raw_body() > > self.blacklist_re = "|".join(map(lambda s: "%s" % s.strip(), > > blacklist.strip().split("\n"))) > > self.blacklist_re = re.compile(self.blacklist_re) > > > > class SecurityPolicy(Permissions): > > def save(self, editor, newtext, datestamp, **kw): > > match = blacklist_re.search(newtext) > > if match: > > print "blacklist match: %s" % match.group() > > return match == None > > > > > How do I create multiple wikis in a local Sycamore install? I would like to test using the hub wiki blacklist page from child wikis. Below is a second version that works within limits and has been tested on a local Sycamore install. I would again appreciate comments. # -*- coding: utf-8 -*- # blacklist against wiki spammers # WikiSpot admins can add a URL to 'Global Blacklist' to disallow an # edit which contains that URL. from Sycamore.security import Permissions class SecurityPolicy(Permissions): def save(self, editor, newtext, datestamp, **kw): # do not enforce URL blacklisting in blacklist page if editor.request.pagename == editor.request.config.page_global_blacklist: return True import re, types from Sycamore.PageEditor import PageEditor blacklist_page = PageEditor(editor.request.config.page_global_blacklist, editor.request) if blacklist_page: blacklist = blacklist_page.get_raw_body() blacklist_re = "|".join(map(lambda s: "%s" % s.strip(), blacklist.strip().split("\n"))) blacklist_re = re.compile(blacklist_re) match = blacklist_re.search(newtext) if match: print "blacklist match: %s" % match.group() return match == None -- Sean Robinson WiFi Radar - http://wifi-radar.berlios.de Python WiFi - http://pythonwifi.wikispot.org
_______________________________________________ Sycamore-Dev mailing list sycamore-...@wikispot.org http://www.projectsycamore.org/ https://tools.cernio.com/pipermail/sycamore-dev/ https://tools.cernio.com/mailman/listinfo/sycamore-dev