Description
When using the moin script command to clean the cache, an error happens.
Steps to reproduce
open dos command in C:\moin\Lib\site-packages\MoinMoin\script (or where moin.py is installed)
enter moin.py --wiki-url=monwiki:8090/ maint cleancache (or the command you usually use to clean the cache)
the script stops with an TypeError from random_string() function
Example
moin.py --wiki-url=monwiki:8090/ maint cleancache (...) File "C:\moin\Lib\site-packages\MoinMoin\script\..\..\MoinMoin\session.py", line 295, in generate_new_id return random_string(self._SESSION_NAME_LEN, self._SESSION_NAME_CHARS) TypeError: random_string() takes exactly 1 argument (2 given)
Component selection
the error can be traced back to the session.py module (apparently introduced in 1.7.0), line 295:
return random_string(self._SESSION_NAME_LEN, self._SESSION_NAME_CHARS)
Details
C:\moin\Lib\site-packages\MoinMoin\script>moin.py --wiki-url=monwiki:8090/ maint cleancache 2008-07-03 12:26:26,921 INFO MoinMoin.log:108 using logging configuration read from "c:\moin\wikiserverlogging.conf" 2008-07-03 12:26:28,562 INFO MoinMoin.config.multiconfig:90 using farm config: c:\moin\farmconfig.pyc 2008-07-03 12:26:28,592 INFO MoinMoin.config.multiconfig:124 using wiki config: c:\moin\monwiki.pyc Traceback (most recent call last): File "C:\moin\Lib\site-packages\MoinMoin\script\moin.py", line 30, in <module> run() File "C:\moin\Lib\site-packages\MoinMoin\script\moin.py", line 15, in run MoinScript().run(showtime=0) File "C:\moin\Lib\site-packages\MoinMoin\script\__init__.py", line 138, in run self.mainloop() File "C:\moin\Lib\site-packages\MoinMoin\script\__init__.py", line 255, in mainloop plugin_class(args[2:], self.options).run() # all starts again there File "C:\moin\Lib\site-packages\MoinMoin\script\__init__.py", line 138, in run self.mainloop() File "C:\moin\Lib\site-packages\MoinMoin\script\..\..\MoinMoin\script\maint\cleancache.py", line 42, in mainloop self.init_request() File "C:\moin\Lib\site-packages\MoinMoin\script\__init__.py", line 178, in init_request self.request = request_cli.Request(self.options.wiki_url, self.options.page) File "C:\moin\Lib\site-packages\MoinMoin\request\request_cli.py", line 35, in __init__ RequestBase.__init__(self, properties) File "C:\moin\Lib\site-packages\MoinMoin\request\__init__.py", line 212, in __init__ user_obj = self.cfg.session_handler.start(self, self.cfg.session_id_handler) File "C:\moin\Lib\site-packages\MoinMoin\script\..\..\MoinMoin\session.py", line 414, in start session_name = session_id_handler.generate_new_id(request) File "C:\moin\Lib\site-packages\MoinMoin\script\..\..\MoinMoin\session.py", line 295, in generate_new_id return random_string(self._SESSION_NAME_LEN, self._SESSION_NAME_CHARS) TypeError: random_string() takes exactly 1 argument (2 given)
MoinMoin Version |
1.7.0 |
OS and Version |
XP SP3 |
Python Version |
2.5.2 |
Server Setup |
standalone |
Server Details |
|
Language you are using the wiki in (set in the browser/UserPreferences) |
en |
Workaround
Discussion
That error should not happen in 1.7.0 release code.
Are you maybe using some 1.7 alpha/beta? Or did your upgrade not replace all source files correctly?
This bug was also appearing with 1.7.1 when opening any page for some browsers (Camino on Mac, Firefox on WinXP) while working on others (Firefox on Mac + Ubuntu, Safari on Mac) and could be fixed using the workaround above (apparently not damaging functionality).
The current definition in session.generate_new_id is:
return random_string(self._SESSION_NAME_LEN, self._SESSION_NAME_CHARS)
and random_string is defined as:
def random_string(length, allowed_chars=None):
So please check your installation / searchpath. -- ReimarBauer 2008-07-25 12:44:07
Can you also please verify if you have called the new moin command and that you have a newer pyc file of util.__init__ than the py file.
The dates of util.__init__ show as:
__init__.py |
2008/02/20 |
__init__.pyc |
2008/04/19 |
However, the content of MoinMoin/util/__init__.py is clearly out of date. I ran a complete reinstall and everything works fine now.
Thank you for your help!
Plan
- Priority:
- Assigned to:
Status: not a 1.7.0 bug, random_string in MoinMoin/util/__init__.py code showing this behaviour must be at least 14 months old, the current (1.7.1) release archive has a random_string function that can take 2 arguments.