Environment:
- Trac: 1.0.1
- ExtendedVersion: revision 12688
- Milestone associated with a version
Steps to reproduce:
- If there is no milestone associated with a version:
- Assure ExtendedVersion has property roadmap_navigation in false (this is only to assure to get a binding relationship between milestone and version due to Admin View not having capability to do that binding).
- In Roadmap View select a Milestone
- Select edit and in Milestone Edit View, associate the milestone with a available version
- Go to Versions view -> crash with pile:
XXXX-XX-XX XX:XX:XX,XXX Trac[main] ERROR: Internal Server Error:
Traceback (most recent call last):
File "XXX\Trac-1.0.1-py2.7-win32.egg.tmp\trac\web\main.py", line 497, in _dispatch_request
dispatcher.dispatch(req)
File "XXX\Trac-1.0.1-py2.7-win32.egg.tmp\trac\web\main.py", line 214, in dispatch
resp = chosen_handler.process_request(req)
File "XXX\site-packages\extendedversiontracplugin-0.1dev-py2.7.egg\extendedversion\version.py", line 147, in process_request
return self._render_view(req, db, version)
File "XXX\site-packages\extendedversiontracplugin-0.1dev-py2.7.egg\extendedversion\version.py", line 315, in _render_view
milestone._from_database(row)
AttributeError: 'Milestone' object has no attribute '_from_database'
I think the problem comes for last changes in 1.0.1 version of Trac (ticket 10879). Revisions related with that ticket (especially changeset 11523) changes Milestone class (from 1.1.x branch).
ExtendedVersion plugin uses Milestone in the old way (<= 1.0), with _from_database method. With this changes of 1.1.x in 1.0.x, MilestoneCache must be used (fecth or factory) to make ExtendedVersion plugin work. Also due and complete fields of milestone has to be converted with from_utimestamp method if they are recovered directly from database.
The patch attached to ticket is a simple solution, not the best approach, but it's working.