After standard egg installation, JS and CSS files are not present.
While building an egg with setup bdist_egg, html calatogue is not included within the egg - thus plugin does not work. The appropriate directory in .egg-cache dir in trac env does not get created.
After copying html directory manually to Lib/site-packages/trac/ in python installation, it appears to work, but just till the restart of the httpd server.
After restart it starts to conflict with requests to graphics and CSS from tracusermanagerplugin , every http request resulting in http 500 message with following error:
Trac detected an internal error:
KeyError: 'autocompleteusers\\htdocs'
and following traceback:
- File "C:\Python25\Lib\site-packages\trac\web\main.py", line 423, in _dispatch_request
Code fragment:
418. try:
419. if not env and env_error:
420. raise HTTPInternalError(env_error)
421. try:
422. dispatcher = RequestDispatcher(env)
423. dispatcher.dispatch(req)
424. except RequestDone:
425. pass
426. resp = req._response or []
427.
428. except HTTPException, e:
Local variables:
- Name Value
- after [u' except RequestDone:', u' pass', u' resp = ...
- before [u' try:', u' if not env and env_error:', u' raise ...
- dispatcher <trac.web.main.RequestDispatcher? object at 0x02ACE650>
- e KeyError?('autocompleteusers\\htdocs',)
- env <trac.env.Environment object at 0x0252B5B0>
- env_error None
- exc_info (<type 'exceptions.KeyError?'>, KeyError?('autocompleteusers\\htdocs',), ...
- filename 'C:\\Python25\\Lib\\site-packages\\trac\\web\\main.py'
- frames [{'function': '_dispatch_request', 'lines_before': [u' try:', u' ...
- has_admin True
- line u' dispatcher.dispatch(req)'
- lineno 422
- message u"KeyError?: 'autocompleteusers\\\\htdocs'"
- req <Request "GET u'/chrome/tracusermanager/img/no_picture.png'">
- resp []
- tb <traceback object at 0x02D698F0>
- tb_hide None
- traceback 'Traceback (most recent call last):\n File ...
- File "C:\Python25\Lib\site-packages\trac\web\main.py", line 197, in dispatch
Code fragment:
192. req.args.get('__FORM_TOKEN') != req.form_token:
193. raise HTTPBadRequest('Missing or invalid form token. '
194. 'Do you have cookies enabled?')
195.
196. # Process the request and render the template
197. resp = chosen_handler.process_request(req)
198. if resp:
199. if len(resp) == 2: # Clearsilver
200. chrome.populate_hdf(req)
201. template, content_type = \
202. self._post_process_request(req, *resp)
Local variables:
- Name Value
- chosen_handler <trac.web.chrome.Chrome object at 0x02ABF070>
- chrome <trac.web.chrome.Chrome object at 0x02ABF070>
- err (<type 'exceptions.KeyError?'>, KeyError?('autocompleteusers\\htdocs',), ...
- handler <trac.web.chrome.Chrome object at 0x02ABF070>
- req <Request "GET u'/chrome/tracusermanager/img/no_picture.png'">
- self <trac.web.main.RequestDispatcher? object at 0x02ACE650>
- File "C:\Python25\Lib\site-packages\trac\web\chrome.py", line 364, in process_request
Code fragment:
359. filename = req.args['filename']
360.
361. dirs = []
362. for provider in self.template_providers:
363. for dir in [os.path.normpath(dir[1]) for dir
364. in provider.get_htdocs_dirs() if dir[0] == prefix]:
365. dirs.append(dir)
366. path = os.path.normpath(os.path.join(dir, filename))
367. assert os.path.commonprefix([dir, path]) == dir
368. if os.path.isfile(path):
369. req.send_file(path, get_mimetype(path))
Local variables:
- Name Value
- _[1] []
- dir ('customfieldadmin', ...
- dirs []
- filename u'img/no_picture.png'
- prefix u'tracusermanager'
- provider <autocompleteusers.autocompleteusers.AutocompleteUsers? object at ...
- req <Request "GET u'/chrome/tracusermanager/img/no_picture.png'">
- self <trac.web.chrome.Chrome object at 0x02ABF070>
- File "build\bdist.win32\egg\autocompleteusers\autocompleteusers.py", line 88, in get_htdocs_dirs
Local variables:
- File "C:\Python25\Lib\site-packages\pkg_resources.py", line 841, in resource_filename
Code fragment:
836. )
837.
838. def resource_filename(self, package_or_requirement, resource_name):
839. """Return a true filesystem path for specified resource"""
840. return get_provider(package_or_requirement).get_resource_filename(
841. self, resource_name
842. )
843.
844. def resource_stream(self, package_or_requirement, resource_name):
845. """Return a readable file-like object for specified resource"""
846. return get_provider(package_or_requirement).get_resource_stream(
Local variables:
- Name Value
- package_or_requirement 'autocompleteusers.autocompleteusers'
- resource_name 'htdocs'
- self <pkg_resources.ResourceManager? instance at 0x024C1328>
- File "C:\Python25\Lib\site-packages\pkg_resources.py", line 1311, in get_resource_filename
Code fragment:
1306. zip_path = self._resource_to_zip(resource_name)
1307. eagers = self._get_eager_resources()
1308. if '/'.join(self._parts(zip_path)) in eagers:
1309. for name in eagers:
1310. self._extract_resource(manager, self._eager_to_zip(name))
1311. return self._extract_resource(manager, zip_path)
1312.
1313. def _extract_resource(self, manager, zip_path):
1314.
1315. if zip_path in self._index():
1316. for name in self._index()[zip_path]:
Local variables:
- Name Value
- eagers []
- manager <pkg_resources.ResourceManager? instance at 0x024C1328>
- resource_name 'htdocs'
- self <pkg_resources.ZipProvider? instance at 0x02E560A8>
- zip_path 'autocompleteusers\\htdocs'
- File "C:\Python25\Lib\site-packages\pkg_resources.py", line 1322, in _extract_resource
Code fragment:
1317. last = self._extract_resource(
1318. manager, os.path.join(zip_path, name)
1319. )
1320. return os.path.dirname(last) # return the extracted directory name
1321.
1322. zip_stat = self.zipinfo[zip_path]
1323. t,d,size = zip_stat[5], zip_stat[6], zip_stat[3]
1324. date_time = (
1325. (d>>9)+1980, (d>>5)&0xF, d&0x1F, # ymd
1326. (t&0xFFFF)>>11, (t>>5)&0x3F, (t&0x1F) * 2, 0, 0, -1 # hms, etc.
1327. )
Local variables:
- Name Value
- manager <pkg_resources.ResourceManager? instance at 0x024C1328>
- self <pkg_resources.ZipProvider? instance at 0x02E560A8>
- zip_path 'autocompleteusers\\htdocs'
We suspect that the problem is in line no.4 in a traceback - the refference to a nonexistent dirctory from build directory of an egg distribution.