Hi, all.

I got a strange url mapping issue in my app, but i don't know why it
happened. Please help me to find the root case. Thanks :)

Error msg:
----
Traceback (most recent call last):
  File "/usr/lib/python2.4/site-packages/web/application.py", line
241, in process
    return self.handle()
  File "/usr/lib/python2.4/site-packages/web/application.py", line
232, in handle
    return self._delegate(fn, self.fvars, args)
  File "/usr/lib/python2.4/site-packages/web/application.py", line
407, in _delegate
    mod = __import__(mod, globals(), locals(), [""])
ImportError: No module named /antispam/blacklist/helo/page/
controllers.policyd.wblist
----

URL mapping:
----
re_ip = r"""\b25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.25[0-5]|2[0-4]
[0-9]|[01]?[0-9][0-9]?|%\.25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|%\.25
[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|%$"""
re_sender = r'[\w\-][\w\-\...@[\w\-][\w\-\.]+[a-za-z]{1,4}'
re_dnsname = r'[\w\-][\w\-\.]+[a-zA-Z]{1,4}'

re_ip_f = r"""\b\d{1,3}|%$"""

urls = (
        '/antispam',
'controllers.policyd.wblist.Whitelist',

        #
        # @/page/0  List ALL records without offset and limit in SQL.
        #

        # Whitelist: IP addresses.
        '/antispam/(whitelist)',
'controllers.policyd.wblist.Whitelist',
        '/antispam/(whitelist)/(ip)',
'controllers.policyd.wblist.Whitelist',
        '/antispam/(whitelist)/(ip)/record/(%s)/(%s)/(%s)/(%s)' % (
            re_ip_f, re_ip_f, re_ip_f, re_ip_f, ),
'controllers.policyd.wblist.WhitelistView',
        '/antispam/(whitelist)/(ip)/page/([01-9]\d*)',
'controllers.policyd.wblist.Whitelist',

        # Whitelist: Sender addresses.
        '/antispam/(whitelist)/(sender)',
'controllers.policyd.wblist.Whitelist',
        '/antispam/(whitelist)/(sender)/%s' % re_ip,
'controllers.policyd.wblist.Whitelist',
        '/antispam/(whitelist)/(sender)/page/([01-9]\d*)',
'controllers.policyd.wblist.Whitelist',

        # Whitelist: DNS name.
        '/antispam/(whitelist)/(dnsname)',
'controllers.policyd.wblist.Whitelist',
        '/antispam/(whitelist)/(dnsname)/%s' % re_dnsname,
'controllers.policyd.wblist.Whitelist',
        '/antispam/(whitelist)/(dnsname)/page/([01-9]\d*)',
'controllers.policyd.wblist.Whitelist',

        # Blacklist: IP addresses.
        '/antispam/(blacklist)',
'controllers.policyd.wblist.Blacklist',
        '/antispam/(blacklist)/(ip)',
'controllers.policyd.wblist.Blacklist',
        '/antispam/(blacklist)/(ip)/%s' % re_ip,
'controllers.policyd.wblist.Blacklist',
        '/antispam/(blacklist)/(ip)/page/([01-9]\d*)',
'controllers.policyd.wblist.Blacklist',

        # Blacklist: Sender addresses.
        '/antispam/(blacklist)/(sender)',
'controllers.policyd.wblist.Blacklist',
        '/antispam/(blacklist)/(sender)/%s' % re_ip,
'controllers.policyd.wblist.Blacklist',
        '/antispam/(blacklist)/(sender)/page/([01-9]\d*)',
'controllers.policyd.wblist.Blacklist',

        # Blacklist: DNS name.
        '/antispam/(blacklist)/(dnsname)',
'controllers.policyd.wblist.Blacklist',
        '/antispam/(blacklist)/(dnsname)/%s' % re_dnsname,
'controllers.policyd.wblist.Blacklist',
        '/antispam/(blacklist)/(dnsname)/page/([01-9]\d*)',
'controllers.policyd.wblist.Blacklist',

        # Blacklist: DNS name.
        '/antispam/(blacklist)/(helo)',
'controllers.policyd.wblist.Blacklist',
        '/antispam/(blacklist)/(helo)/page/([01-9]\d*)',
'controllers.policyd.wblist.Blacklist',
        '/antispam/(blacklist)/(helo)/(%s)' % re_dnsname,
'controllers.policyd.wblist.Blacklist',
        )
----

Directory structure:

----
$ find controllers/policyd
controllers/policyd
controllers/policyd/__init__.py
controllers/policyd/urls.py
controllers/policyd/wblist.py
----

Content of controllers/policyd/wblist.py.
class Whitelist works fine, but class Blacklist doesn't work as
expected, error msg is pasted above.

----
import sys
import web
from web import ctx, render_policyd as render
from controllers import base
from libs.policyd import whitelist, blacklist

cfg = web.iredconfig
session = web.config.get('_session')

whitelistLib = whitelist.Whitelist()
blacklistLib = blacklist.Blacklist()

class Whitelist:
    @base.require_global_admin
    def GET(self, listname='whitelist', listcategory='ip',
cur_page=1,):
        self.listname = web.safestr(listname)
        self.listcategory = web.safestr(listcategory)
        self.cur_page = int(cur_page)

        total, entries = whitelistLib.list
(listcategory=self.listcategory, cur_page=self.cur_page,)

        if self.cur_page > total and self.cur_page != 1:
            # Redirect to last page if cur_page > total
            if total % session.pagesizelimit > 0:
                page = total/session.pagesizelimit + 1
            else:
                page = total/session.pagesizelimit
            web.seeother(ctx.homepath + '/%s/%s/page/%d' % (listname,
listcategory, page))
        else:
            return render.wblist(
                    total=total,
                    entries=entries,
                    listname=self.listname,
                    listcategory=self.listcategory,
                    cur_page=self.cur_page,
                    )

class Blacklist:
    @base.require_global_admin
    def GET(self, listname='blacklist', listcategory='ip',
cur_page=1,):
        self.listname = web.safestr(listname)
        self.listcategory = web.safestr(listcategory)
        self.cur_page = int(cur_page)

        total, entries = blacklistLib.list
(listcategory=self.listcategory, cur_page=self.cur_page)

        if self.cur_page > total and self.cur_page != 1:
            # Redirect to last page if cur_page > total
            if total % session.pagesizelimit > 0:
                page = total/session.pagesizelimit + 1
            else:
                page = total/session.pagesizelimit
            web.seeother(ctx.homepath + '/%s/%s/page/%d' % (listname,
listcategory, page))
        else:
            return render.wblist(
                    total=total,
                    entries=entries,
                    listname=self.listname,
                    listcategory=self.listcategory,
                    cur_page=self.cur_page,
                    )
----
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web.py" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [email protected]
For more options, visit this group at http://groups.google.com/group/webpy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to