With the proper names? Do you still have the error above?
Make sure you read chapter 13 of the book. This is explained there.

Massimo

On Nov 6, 11:52 am, "Mr. Electronic" <[email protected]> wrote:
> Hi
>
> I was trying to learn how to use plugins, so the filename could be
> totally wrong. It was just a small test file not a real plugin.
>
> I have discovered that you can't use subfolders in controller and
> views. My later attempt was /controller/plugin_cart.py and /views/
> plugin_cart/show.html
>
> Thanks for creating a good Python framework. I love it.
>
> Br.
> Rune
>
> On 6 Nov., 16:02, mdipierro <[email protected]> wrote:
>
> > will look into this but I do not understand this file:
>
> > plugin_init/default/index.html
>
> > It does not look like a plugin file. If it is a view it should be
>
> > views/plugin_init/index.html
>
> > On Nov 6, 5:20 am, "Mr. Electronic" <[email protected]> wrote:
>
> > > Hi
>
> > > I tried to create a plugin and then delete the one file that was in
> > > the plugin. Then I recieves an error ticket shown below.
>
> > > I created a file with name plugin_init/default/index.html and then
> > > clicked on the init plugin in the bottom of the init screen, looked at
> > > the file and then deleted it.
>
> > > Then it crashes and I think it has something do with that the plugin
> > > disappears when the last file has been deleted but the admin still
> > > tries to show all files that contains to the non existing plugin.
>
> > > Br.
> > > Mr. Electronic
>
> > > Ticket 83.89.69.186.2010-11-06.11-11-12.9954ddbe-b9e6-4424-93d4-
> > > ed8ea601a010
>
> > > Version
> > > web2py Version 1.88.2 (2010-10-29 23:04:43)
>
> > > Error traceback
>
> > > 1.
> > > 2.
> > > 3.
> > > 4.
> > > 5.
> > > 6.
> > > 7.
> > > 8.
> > > 9.
> > > 10.
> > > 11.
> > > 12.
>
> > > Traceback (most recent call last):
> > >   File "/home/6dstudio/web2py/gluon/restricted.py", line 188, in
> > > restricted
> > >     exec ccode in environment
> > >   File "/home/6dstudio/web2py/applications/admin/controllers/
> > > default.py", line 1134, in <module>
> > >   File "/home/6dstudio/web2py/gluon/globals.py", line 96, in <lambda>
> > >     self._caller = lambda f: f()
> > >   File "/home/6dstudio/web2py/applications/admin/controllers/
> > > default.py", line 807, in plugin
> > >     models=filter_plugins(models),
> > >   File "/home/6dstudio/web2py/applications/admin/controllers/
> > > default.py", line 803, in filter_plugins
> > >     regex=re.compile('^plugin_'+plugin+'(/.*|\..*)?$')
> > > TypeError: cannot concatenate 'str' and 'NoneType' objects
>
> > > Error snapshot
> > > Detailed traceback description
>
> > >     * Exception: <type 'exceptions.TypeError'>(cannot concatenate
> > > 'str' and 'NoneType' objects)
> > >       Exception instance attributes
> > >           o __setattr__: <method-wrapper '__setattr__' of
> > > exceptions.TypeError object>
> > >           o __reduce_ex__: <built-in method __reduce_ex__ of
> > > exceptions.TypeError object>
> > >           o __getslice__: <method-wrapper '__getslice__' of
> > > exceptions.TypeError object>
> > >           o __getitem__: <method-wrapper '__getitem__' of
> > > exceptions.TypeError object>
> > >           o __setstate__: <built-in method __setstate__ of
> > > exceptions.TypeError object>
> > >           o __getattribute__: <method-wrapper '__getattribute__' of
> > > exceptions.TypeError object>
> > >           o __str__: <method-wrapper '__str__' of exceptions.TypeError
> > > object>
> > >           o args: ("cannot concatenate 'str' and 'NoneType' objects",)
> > >           o __reduce__: <built-in method __reduce__ of
> > > exceptions.TypeError object>
> > >           o __format__: <built-in method __format__ of
> > > exceptions.TypeError object>
> > >           o __class__: <type 'exceptions.TypeError'>
> > >           o __dict__: {}
> > >           o __delattr__: <method-wrapper '__delattr__' of
> > > exceptions.TypeError object>
> > >           o __subclasshook__: <built-in method __subclasshook__ of
> > > type object>
> > >           o __repr__: <method-wrapper '__repr__' of
> > > exceptions.TypeError object>
> > >           o __init__: <method-wrapper '__init__' of
> > > exceptions.TypeError object>
> > >           o __hash__: <method-wrapper '__hash__' of
> > > exceptions.TypeError object>
> > >           o __sizeof__: <built-in method __sizeof__ of
> > > exceptions.TypeError object>
> > >           o __doc__: 'Inappropriate argument type.'
> > >           o __unicode__: <built-in method __unicode__ of
> > > exceptions.TypeError object>
> > >           o __new__: <built-in method __new__ of type object>
> > >     * Python 2.6.5: /usr/bin/python
>
> > > File /home/6dstudio/web2py/gluon/restricted.py in restricted at line
> > > 188
> > > [ code | arguments | variables ]
> > > Function argument list: (code='# coding: utf8 \n\nfrom gluon.admin
> > > import *\nfrom ...r(e)))\n\n\nresponse._vars=response._caller(plugin)
> > > \n', environment={'A': <class 'gluon.html.A'>, 'ALLOW_TOGGLE': 'true',
> > > 'B': <class 'gluon.html.B'>, 'BEAUTIFY': <class
> > > 'gluon.html.BEAUTIFY'>, 'BODY': <class 'gluon.html.BODY'>, 'BR':
> > > <class 'gluon.html.BR'>, 'CENTER': <class 'gluon.html.CENTER'>,
> > > 'CHECK_VERSION': True, 'CLEANUP': <class 'gluon.validators.CLEANUP'>,
> > > 'CODE': <class 'gluon.html.CODE'>, ...}, layer='/home/6dstudio/web2py/
> > > applications/admin/controllers/default.py')
>
> > > 183.
> > > 184.
> > > 185.
> > > 186.
> > > 187.
> > > 188.
>
> > > 189.
> > > 190.
> > > 191.
> > > 192.
>
> > >         if type(code) == types.CodeType:
> > >             ccode = code
> > >         else:
> > >             ccode = compile2(code,layer)
>
> > > exec ccode in environment
>
> > >     except HTTP:
> > >         raise
> > >     except Exception:
> > >         # XXX Show exception in Wing IDE if running in debugger
>
> > >     * environment: {'A': <class 'gluon.html.A'>, 'ALLOW_TOGGLE':
> > > 'true', 'B': <class 'gluon.html.B'>, 'BEAUTIFY': <class
> > > 'gluon.html.BEAUTIFY'>, 'BODY': <class 'gluon.html.BODY'>, 'BR':
> > > <class 'gluon.html.BR'>, 'CENTER': <class 'gluon.html.CENTER'>,
> > > 'CHECK_VERSION': True, 'CLEANUP': <class 'gluon.validators.CLEANUP'>,
> > > 'CODE': <class 'gluon.html.CODE'>, ...}
> > >     * ccode: <code object <module> at 0x7f8b441c9e40, file
> > > "/...plications/admin/controllers/default.py", line 3>
>
> > > File /home/6dstudio/web2py/applications/admin/controllers/default.py
> > > in <module> at line 1134
> > > [ code | arguments | variables ]
> > > Function argument list: ()
>
> > > 1123.
> > > 1124.
> > > 1125.
> > > 1126.
> > > 1127.
> > > 1128.
> > > 1129.
> > > 1130.
> > > 1131.
> > > 1132.
>
> > >     session.forget()
> > >     session._unlock(response)
> > >     import gluon.tools
> > >     import gluon.contrib.simplejson as sj
> > >     try:
> > >         page = gluon.tools.fetch('http://twitter.com/web2py?
> > > format=json')
> > >         return sj.loads(page)['#timeline']
> > >     except Exception, e:
> > >         return DIV(T('Unable to download because'),PRE(str(e)))
>
> > > File /home/6dstudio/web2py/gluon/globals.py in <lambda> at line 96
> > > [ code | arguments | variables ]
> > > Function argument list: (f=<function plugin>)
>
> > > 91.
> > > 92.
> > > 93.
> > > 94.
> > > 95.
> > > 96.
>
> > > 97.
> > > 98.
> > > 99.
> > > 100.
>
> > >         self.flash = ''           # used by the default view layout
> > >         self.meta = Storage()     # used by web2py_ajax.html
> > >         self.menu = []            # used by the default view layout
> > >         self.files = []           # used by web2py_ajax.html
> > >         self._vars = None
> > > self._caller = lambda f: f()
>
> > >         self._view_environment = None
> > >         self._custom_commit = None
> > >         self._custom_rollback = None
>
> > >     * self: undefined
> > >     * f: <function plugin>
>
> > > File /home/6dstudio/web2py/applications/admin/controllers/default.py
> > > in plugin at line 807
> > > [ code | arguments | variables ]
> > > Function argument list: ()
>
> > > 802.
> > > 803.
> > > 804.
> > > 805.
> > > 806.
> > > 807.
>
> > > 808.
> > > 809.
> > > 810.
> > > 811.
>
> > >     def filter_plugins(items):
> > >         regex=re.compile('^plugin_'+plugin+'(/.*|\..*)?$')
> > >         return [item for item in items if regex.match(item)]
>
> > >     return dict(app=app,
> > > models=filter_plugins(models),
>
> > >                 defines=defines,
> > >                 controllers=filter_plugins(controllers),
> > >                 functions=functions,
> > >                 views=filter_plugins(views),
>
> > >     * models: []
> > >     * filter_plugins: <function filter_plugins>
>
> > > File /home/6dstudio/web2py/applications/admin/controllers/default.py
> > > in filter_plugins at line 803
> > > [ code | arguments | variables ]
> > > Function argument list: (items=[])
>
> > > 798.
> > > 799.
> > > 800.
> > > 801.
> > > 802.
> > > 803.
>
> > > 804.
> > > 805.
> > > 806.
> > > 807.
>
> > >     if not os.path.exists(crontab):
> > >         safe_open(crontab,'w').write('#crontab')
>
> > >     def filter_plugins(items):
> > > regex=re.compile('^plugin_'+plugin+'(/.*|\..*)?$')
>
> > >         return [item for item in items if regex.match(item)]
>
> > >     return dict(app=app,
> > >                 models=filter_plugins(models),
>
> > >     * regex: undefined
> > >     * global re: <module 're' from '/usr/lib/python2.6/re.pyc'>
> > >     * re.compile: <function compile>
> > >     * plugin: None
>
> > > locals
> > > locals
> > > items   :
> > > []
> > > plugin  :
> > > None
> > > request
> > > request
> > > ajax    :
> > > False
> > > application     :
> > > 'admin'
> > > args    :
> > > ['init']
> > > body    :
> > > <cStringIO.StringO object>
> > > cid     :
> > > None
> > > client  :
> > > '83.89.69.186'
> > > controller      :
> > > 'default'
> > > cookies :
> > > <SimpleCookie: session_id_admin='83-89-69-186-8f...-89-69-186-3db8d937-
> > > c1ef-4c43-931f-54e267fb56a9'>
> > > env     :
> > > <Storage
>
> ...
>
> read more »

Reply via email to