Modify

Opened 3 years ago

Closed 3 years ago

Last modified 3 years ago

#11942 closed defect (worksforme)

using xref for duplicate ticket

Reported by: shorif2000 Owned by: Eli Carter
Priority: normal Component: AdvancedTicketWorkflowPlugin
Severity: normal Keywords: xref duplicate
Cc: Trac Release: 1.0

Description

I have this installed on trac 1.01, centos 6, python 2.6.

I have option TicketWorkflowOpOwnerComponent and TicketWorkflowOpXRef ticked. I want to imlement the duplicate functionality. I have added the following in config file



[ticket]
commit_ticket_update_check_perms = true
commit_ticket_update_commands.close =
commit_ticket_update_commands.refs = <ALL>
commit_ticket_update_envelope = []
commit_ticket_update_notify = true
default_component = other
default_milestone = Create/Update Project
default_version = v14
workflow = ConfigurableTicketWorkflow,TicketWorkflowOpOwnerReporter

[ticket-workflow]
accept = new -> assigned
accept.operations = set_owner_to_self
accept.permissions = TICKET_MODIFY
dup = * -> closed
dup.name = close
dup.operations = set_resolution,xref
dup.set_resolution = duplicate
dup.xref = Ticket %s has been marked as a duplicate of this ticket.
dup.xref_local = Closed as duplicate of %s.
leave = * -> *
leave.default = 1
leave.operations = leave_status
needinfo = * -> needinfo
needinfo.name = Need info
needinfo.operations = set_owner_to_reporter
reassign = new,assigned,reopened -> new
reassign.operations = set_owner
reassign.permissions = TICKET_MODIFY
reopen = closed -> reopened
reopen.operations = del_resolution
reopen.permissions = TICKET_CREATE
resolve = new,assigned,reopened -> closed
resolve.operations = set_resolution
resolve.permissions = TICKET_MODIFY

When i go to modify a ticket and set as duplicate. there is no text box to enter the duplicate reference ticket.

Attachments (0)

Change History (7)

comment:1 Changed 3 years ago by Ryan J Ollos

Have you enabled the plugin through the plugin admin page? You've opened 5 tickets now claiming plugins don't work. My money is on something wrong or missed in your install steps. Please do a careful read of the TracPlugins page and then ask on the trac:MailingList before opening more tickets for install issues.

comment:2 Changed 3 years ago by shorif2000

Yes its enabled. below is full config

# cat /opt/html/trac/paradox/conf/trac.ini
# -*- coding: utf-8 -*-

[announcer]
email_enabled = true
email_from = trac@domain.com
email_from_name = Paradox
email_replyto = noreply@domain.com
email_sender = SmtpEmailSender
email_subject_prefix = __default__
smtp_always_cc = Ramy.Mahmoud@domain.com, support@domain.com
smtp_default_domain = domain.com
smtp_password = 
smtp_port = 25
smtp_replyto = no-reply@domain.com
smtp_server = hero.uk.domain.com
smtp_subject_prefix = __default__
smtp_user = 
use_public_cc = true
use_short_addr = false
use_tls = false

[changeset]
max_diff_files = 0

[components]
advancedworkflow.controller.ticketworkflowopownercomponent = enabled
advancedworkflow.controller.ticketworkflowopownerfield = disabled
advancedworkflow.controller.ticketworkflowopownerprevious = disabled
advancedworkflow.controller.ticketworkflowopownerreporter = disabled
advancedworkflow.controller.ticketworkflowopresetmilestone = disabled
advancedworkflow.controller.ticketworkflowoprunexternal = disabled
advancedworkflow.controller.ticketworkflowopstatusprevious = disabled
advancedworkflow.controller.ticketworkflowoptriage = disabled
advancedworkflow.controller.ticketworkflowopxref = enabled
announcer.api.announcementsystem = enabled
announcer.api.subscriptionresolver = enabled
announcer.distributors.mail.emaildistributor = enabled
announcer.distributors.mail.sendmailemailsender = enabled
announcer.distributors.mail.smtpemailsender = enabled
announcer.email_decorators.announceremaildecorator = enabled
announcer.email_decorators.staticemaildecorator = enabled
announcer.email_decorators.threadingemaildecorator = enabled
announcer.email_decorators.ticketaddlheaderemaildecorator = enabled
announcer.email_decorators.ticketsubjectemaildecorator = enabled
announcer.email_decorators.wikisubjectemaildecorator = enabled
announcer.filters.defaultpermissionfilter = enabled
announcer.formatters.ticketformatter = enabled
announcer.formatters.wikiformatter = enabled
announcer.opt.subscribers.allticketsubscriber = enabled
announcer.opt.subscribers.generalwikisubscriber = enabled
announcer.opt.subscribers.joinablegroupsubscriber = enabled
announcer.opt.subscribers.ticketcomponentownersubscriber = enabled
announcer.opt.subscribers.ticketcomponentsubscriber = enabled
announcer.opt.subscribers.ticketcustomfieldsubscriber = enabled
announcer.opt.subscribers.userchangesubscriber = enabled
announcer.opt.subscribers.watchsubscriber = enabled
announcer.pref.announcerpreferences = enabled
announcer.pref.subscriptionmanagementpanel = enabled
announcer.producers.attachmentchangeproducer = enabled
announcer.producers.ticketchangeproducer = enabled
announcer.producers.wikichangeproducer = enabled
announcer.resolvers.defaultdomainemailresolver = enabled
announcer.resolvers.sessionemailresolver = enabled
announcer.resolvers.specifiedemailresolver = enabled
announcer.resolvers.specifiedxmppresolver = enabled
announcer.subscribers.carboncopysubscriber = enabled
announcer.subscribers.ticketownersubscriber = enabled
announcer.subscribers.ticketreportersubscriber = enabled
announcer.subscribers.ticketupdatersubscriber = enabled
ticketchangesets.* = enabled
ticketlog.* = enabled
trac.db.mysql_backend.mysqlconnector = disabled
trac.db.postgres_backend.postgresqlconnector = disabled
tracdragdrop.* = enabled
tracduplicates.web_ui = enabled
tracopt.mimeview.enscript.enscriptrenderer = enabled
tracopt.mimeview.php.phprenderer = enabled
tracopt.ticket.clone.ticketclonebutton = enabled
tracopt.ticket.commit_updater.committicketreferencemacro = enabled
tracopt.ticket.commit_updater.committicketupdater = enabled
tracopt.ticket.deleter.ticketdeleter = enabled
tracopt.versioncontrol.svn.svn_fs.subversionconnector = enabled
tracopt.versioncontrol.svn.svn_prop.subversionmergepropertydiffrenderer = enabled
tracopt.versioncontrol.svn.svn_prop.subversionmergepropertyrenderer = enabled
tracopt.versioncontrol.svn.svn_prop.subversionpropertyrenderer = enabled

[header_logo]
alt = 
link = http://intranet/trac/paradox/
src = common/trac_banner.png

[logging]
log_level = DEBUG
log_type = file

[notification]
always_notify_owner = true
always_notify_reporter = true
always_notify_updater = true
email_enabled = true
email_ldap_basedn = ou=Sites,dc=domain,dc=com
email_ldap_binddn = cn=ldaplookup,cn=Users,dc=domain,dc=com
email_ldap_bindpw = ***
email_ldap_port = 389
email_ldap_serveruri = ldap://ldapauth.domain.com
email_sender = SmtpEmailSender
smtp_always_cc = Ramy.Mahmoud@domain.com, support@domain.com
smtp_enabled = true
smtp_from = trac@domain.com
smtp_from_author = Paradox
smtp_from_name = Paradox
smtp_password = 
smtp_port = 25
smtp_replyto = no-reply@domain.com
smtp_server = hero.uk.domain.com
smtp_subject_prefix = __default__
smtp_user = 
use_public_cc = true
use_short_addr = false
use_tls = false

[project]
descr = Paradox replacement
name = Paradox
url = http://intranet/sidb

[ticket]
commit_ticket_update_check_perms = true
commit_ticket_update_commands.close = 
commit_ticket_update_commands.refs = <ALL>
commit_ticket_update_envelope = []
commit_ticket_update_notify = true
default_component = other
default_milestone = Create/Update Project
default_version = v14
workflow = ConfigurableTicketWorkflow,TicketWorkflowOpOwnerReporter

[ticket-changesets]
collapsed = false
commands.close = close closed closes fix fixed fixes
commands.refs = addresses re references refs see
compact = true
envelope = 
hide_when_none = false
notify = true
ticket_comments = false

[ticket-workflow]
accept = new -> assigned
accept.operations = set_owner_to_self
accept.permissions = TICKET_MODIFY
dup = * -> closed
dup.name = close
dup.operations = set_resolution,xref
dup.set_resolution = duplicate
dup.xref = Ticket %s has been marked as a duplicate of this ticket.
dup.xref_local = Closed as duplicate of %s.
leave = * -> *
leave.default = 1
leave.operations = leave_status
needinfo = * -> needinfo
needinfo.name = Need info
needinfo.operations = set_owner_to_reporter
reassign = new,assigned,reopened -> new
reassign.operations = set_owner
reassign.permissions = TICKET_MODIFY
reopen = closed -> reopened
reopen.operations = del_resolution
reopen.permissions = TICKET_CREATE
resolve = new,assigned,reopened -> closed
resolve.operations = set_resolution
resolve.permissions = TICKET_MODIFY

[ticketlog]
log_message_maxlength = 100
log_pattern = \s*#%s\s+.*

[trac]
base_url = http://intranet/trac/paradox/
check_auth_ip = true
default_date_format = iso8601
default_language = 
default_timezone = 
metanav = login,logout,settings,help,about
repository_dir = /hero/subversion/paradox

comment:3 Changed 3 years ago by Jun Omae

In addition, would you please provide System Information and Installed Plugins from "About Trac" page in your Trac instance?

comment:4 Changed 3 years ago by shorif2000

see below

System Information


Package

Version



Trac
1.0.1 

Trac
1.0.1 

Babel
0.9.4 

Genshi
0.7 (without speedups) 

mod_python
3.3.1 

Pygments
1.1.1 

pysqlite
2.4.1 

Python
2.6.6 (r266:84292, Jan 22 2014, 09:42:36) [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] 

Python
2.6.6 (r266:84292, Jan 22 2014, 09:42:36) [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] 

setuptools
0.6 

setuptools
0.6 

SQLite
3.6.20 

Subversion
1.6.11 (r934486) 

jQuery
1.7.2 


Installed Plugins


Name

Version

Location



AdvancedTicketWorkflowPlugin 
0.11dev-r13338 /usr/lib/python2.6/site-packages/AdvancedTicketWorkflowPlugin-0.11dev_r13338-py2.6.egg 

TracAnnouncer 
1.0dev-r13984 /usr/lib/python2.6/site-packages/TracAnnouncer-1.0dev_r13984-py2.6.egg 

TracDragDrop 
0.12.0.12-r13613 /usr/lib/python2.6/site-packages/TracDragDrop-0.12.0.12_r13613-py2.6.egg 

TracTicketChangelogPlugin 
0.2dev-r13960 /usr/lib/python2.6/site-packages/TracTicketChangelogPlugin-0.2dev_r13960-py2.6.egg 


Configuration


Section

Name

Value



announcer
always_notify_cc true 
always_notify_cc_distributor email 
always_notify_component_owner true 
always_notify_component_owner_distributor email 
always_notify_custom_cc true 
always_notify_custom_cc_distributor email 
always_notify_owner true 
always_notify_owner_distributor email 
always_notify_reporter true 
always_notify_reporter_distributor email 
ctxtnav_names Watch This, Unwatch This 
custom_cc_fields  
default_email_format text/plain 
email_address_resolvers SpecifiedEmailResolver, SessionEmailResolver, DefaultDomainEmailResolver 
email_always_bcc  
email_always_cc  
email_crypto  
email_default_domain  
email_enabled true 
email_from trac@domain.com 
email_from_name Paradox 
email_replyto noreply@domain.com 
email_sender SmtpEmailSender 
email_subject_prefix __default__ 
email_threaded_realms ticket,wiki 
email_to undisclosed-recipients: ; 
filter_exception_realms acct_mgr 
gpg_binary gpg 
gpg_home  
gpg_signing_key  
ignore_cc_changes false 
joinable_groups  
mime_encoding base64 
never_notify_updater false 
never_notify_updater_distributor email 
rcpt_allow_regexp  
rcpt_local_regexp  
smtp_always_cc Ramy.Mahmoud@domain.com, support@domain.com 
smtp_default_domain domain.com 
smtp_password  
smtp_port 25 
smtp_replyto no-reply@domain.com 
smtp_server hero.uk.domain.com 
smtp_subject_prefix __default__ 
smtp_user  
subscription_resolvers SubscriptionResolver 
ticket_email_header_fields owner, reporter, milestone, priority, severity 
ticket_email_subject Ticket #${ticket.id}: ${ticket['summary']} {% if action %}[${action}]{% end %} 
ticket_link_with_comment false 
use_public_cc true 
use_short_addr false 
use_threaded_delivery false 
use_tls false 
watchable_paths wiki/*,ticket/* 
wiki_email_diff true 
wiki_email_subject Page: ${page.name} ${action} 

attachment
max_size 262144 
max_zip_size 2097152 
render_unsafe_content false 

browser
color_scale True 
downloadable_paths /trunk, /branches/*, /tags/* 
hide_properties svk:merge 
intermediate_color  
intermediate_point  
newest_color (255, 136, 136) 
oldest_color (136, 136, 255) 
oneliner_properties trac:summary 
render_unsafe_content false 
wiki_properties trac:description 

changeset
max_diff_bytes 10000000 
max_diff_files 0 
wiki_format_messages true 

components
advancedworkflow.controller.ticketworkflowopownercomponent enabled 
advancedworkflow.controller.ticketworkflowopownerfield disabled 
advancedworkflow.controller.ticketworkflowopownerprevious disabled 
advancedworkflow.controller.ticketworkflowopownerreporter disabled 
advancedworkflow.controller.ticketworkflowopresetmilestone disabled 
advancedworkflow.controller.ticketworkflowoprunexternal disabled 
advancedworkflow.controller.ticketworkflowopstatusprevious disabled 
advancedworkflow.controller.ticketworkflowoptriage disabled 
advancedworkflow.controller.ticketworkflowopxref enabled 
announcer.api.announcementsystem enabled 
announcer.api.subscriptionresolver enabled 
announcer.distributors.mail.emaildistributor enabled 
announcer.distributors.mail.sendmailemailsender enabled 
announcer.distributors.mail.smtpemailsender enabled 
announcer.email_decorators.announceremaildecorator enabled 
announcer.email_decorators.staticemaildecorator enabled 
announcer.email_decorators.threadingemaildecorator enabled 
announcer.email_decorators.ticketaddlheaderemaildecorator enabled 
announcer.email_decorators.ticketsubjectemaildecorator enabled 
announcer.email_decorators.wikisubjectemaildecorator enabled 
announcer.filters.defaultpermissionfilter enabled 
announcer.formatters.ticketformatter enabled 
announcer.formatters.wikiformatter enabled 
announcer.opt.subscribers.allticketsubscriber enabled 
announcer.opt.subscribers.generalwikisubscriber enabled 
announcer.opt.subscribers.joinablegroupsubscriber enabled 
announcer.opt.subscribers.ticketcomponentownersubscriber enabled 
announcer.opt.subscribers.ticketcomponentsubscriber enabled 
announcer.opt.subscribers.ticketcustomfieldsubscriber enabled 
announcer.opt.subscribers.userchangesubscriber enabled 
announcer.opt.subscribers.watchsubscriber enabled 
announcer.pref.announcerpreferences enabled 
announcer.pref.subscriptionmanagementpanel enabled 
announcer.producers.attachmentchangeproducer enabled 
announcer.producers.ticketchangeproducer enabled 
announcer.producers.wikichangeproducer enabled 
announcer.resolvers.defaultdomainemailresolver enabled 
announcer.resolvers.sessionemailresolver enabled 
announcer.resolvers.specifiedemailresolver enabled 
announcer.resolvers.specifiedxmppresolver enabled 
announcer.subscribers.carboncopysubscriber enabled 
announcer.subscribers.ticketownersubscriber enabled 
announcer.subscribers.ticketreportersubscriber enabled 
announcer.subscribers.ticketupdatersubscriber enabled 
ticketchangesets.* enabled 
ticketlog.* enabled 
trac.db.mysql_backend.mysqlconnector disabled 
trac.db.postgres_backend.postgresqlconnector disabled 
tracdragdrop.* enabled 
tracduplicates.web_ui enabled 
tracopt.mimeview.enscript.enscriptrenderer enabled 
tracopt.mimeview.php.phprenderer enabled 
tracopt.ticket.clone.ticketclonebutton enabled 
tracopt.ticket.commit_updater.committicketreferencemacro enabled 
tracopt.ticket.commit_updater.committicketupdater enabled 
tracopt.ticket.deleter.ticketdeleter enabled 
tracopt.versioncontrol.svn.svn_fs.subversionconnector enabled 
tracopt.versioncontrol.svn.svn_prop.subversionmergepropertydiffrenderer enabled 
tracopt.versioncontrol.svn.svn_prop.subversionmergepropertyrenderer enabled 
tracopt.versioncontrol.svn.svn_prop.subversionpropertyrenderer enabled 

header_logo
alt  
height -1 
link http://intranet/trac/paradox/ 
src common/trac_banner.png 
width -1 

inherit
htdocs_dir  
plugins_dir  
templates_dir  

logging
log_file trac.log 
log_format  
log_level DEBUG 
log_type file 

milestone
stats_provider DefaultTicketGroupStatsProvider 

mimeviewer
enscript_modes text/x-dylan:dylan:4 
enscript_path enscript 
max_preview_size 262144 
mime_map text/x-dylan:dylan, text/x-idl:ice, text/x-ada:ads:adb 
mime_map_patterns text/plain:README|INSTALL|COPYING.* 
php_path php 
pygments_default_style trac 
pygments_modes  
tab_width 8 
treat_as_binary application/octet-stream, application/pdf, application/postscript, application/msword,application/rtf, 

notification
admit_domains  
always_notify_owner true 
always_notify_reporter true 
always_notify_updater true 
ambiguous_char_width single 
batch_subject_template $prefix Batch modify: $tickets_descr 
email_enabled true 
email_ldap_basedn ou=Sites,dc=domain,dc=com 
email_ldap_binddn cn=ldaplookup,cn=Users,dc=domain,dc=com 
email_ldap_bindpw ***
email_ldap_port 389 
email_ldap_serveruri ldap://ldapauth.domain.com 
email_sender SmtpEmailSender 
ignore_domains  
mime_encoding none 
sendmail_path sendmail 
smtp_always_bcc  
smtp_always_cc Ramy.Mahmoud@domain.com, support@domain.com 
smtp_default_domain  
smtp_enabled true 
smtp_from trac@domain.com 
smtp_from_author Paradox 
smtp_from_name Paradox 
smtp_password  
smtp_port 25 
smtp_replyto no-reply@domain.com 
smtp_server hero.uk.domain.com 
smtp_subject_prefix __default__ 
smtp_user  
ticket_subject_template $prefix #$ticket.id: $summary 
use_public_cc true 
use_short_addr false 
use_tls false 

project
admin  
admin_trac_url . 
descr Paradox replacement 
footer Visit the Trac open source project at<br /><a href="http://trac.edgewall.org/">http://trac.edgewall.org/</a> 
icon common/trac.ico 
name Paradox 
url http://intranet/sidb 

query
default_anonymous_query status!=closed&cc~=$USER 
default_query status!=closed&owner=$USER 
items_per_page 100 
ticketlink_query ?status=!closed 

report
items_per_page 100 
items_per_page_rss  

revisionlog
default_log_limit 100 
graph_colors #cc0#0c0#0cc#00c#c0c#c00 

roadmap
stats_provider DefaultTicketGroupStatsProvider 

search
default_disabled_filters  
min_query_length 3 

sendmail
sendmail_path sendmail 

smtp
debuglevel  
password  
port 25 
server localhost 
timeout 10 
use_ssl false 
use_tls false 
user  

sqlite
extensions  

svn
branches trunk, branches/* 
tags tags/* 

ticket
commit_ticket_update_check_perms true 
commit_ticket_update_commands.close  
commit_ticket_update_commands.refs <ALL> 
commit_ticket_update_envelope [] 
commit_ticket_update_notify true 
default_cc  
default_component other 
default_description  
default_keywords  
default_milestone Create/Update Project 
default_owner < default > 
default_priority major 
default_resolution fixed 
default_severity  
default_summary  
default_type defect 
default_version v14 
max_comment_size 262144 
max_description_size 262144 
preserve_newlines default 
restrict_owner false 
workflow ConfigurableTicketWorkflow,TicketWorkflowOpOwnerReporter 

ticket-changesets
collapsed false 
commands.close close closed closes fix fixed fixes 
commands.refs addresses re references refs see 
compact true 
envelope  
hide_when_none false 
notify true 
ticket_comments false 

ticket-workflow
accept new -> assigned 
accept.operations set_owner_to_self 
accept.permissions TICKET_MODIFY 
dup * -> closed 
dup.name close 
dup.operations set_resolution,xref 
dup.set_resolution duplicate 
dup.xref Ticket %s has been marked as a duplicate of this ticket. 
dup.xref_local Closed as duplicate of %s. 
leave * -> * 
leave.default 1 
leave.operations leave_status 
needinfo * -> needinfo 
needinfo.name Need info 
needinfo.operations set_owner_to_reporter 
reassign new,assigned,reopened -> new 
reassign.operations set_owner 
reassign.permissions TICKET_MODIFY 
reopen closed -> reopened 
reopen.operations del_resolution 
reopen.permissions TICKET_CREATE 
resolve new,assigned,reopened -> closed 
resolve.operations set_resolution 
resolve.permissions TICKET_MODIFY 

ticketlog
log_message_maxlength 100 
log_pattern \s*#%s\s+.* 

timeline
abbreviated_messages True 
changeset_collapse_events false 
changeset_long_messages false 
changeset_show_files 0 
default_daysback 30 
max_daysback 90 
newticket_formatter oneliner 
ticket_show_details false 

trac
auth_cookie_lifetime  
auth_cookie_path  
authz_file  
authz_module_name  
auto_preview_timeout 2.0 
auto_reload  
backup_dir db 
base_url http://intranet/trac/paradox/ 
check_auth_ip true 
database sqlite:db/trac.db 
debug_sql  
default_charset utf-8 
default_date_format iso8601 
default_dateinfo_format relative 
default_handler WikiModule 
default_language  
default_timezone  
genshi_cache_size 128 
htdocs_location  
ignore_auth_case false 
jquery_location  
jquery_ui_location  
jquery_ui_theme_location  
mainnav wiki, timeline, roadmap, browser, tickets, newticket, search 
metanav login,logout,settings,help,about 
never_obfuscate_mailto false 
permission_policies DefaultPermissionPolicy, LegacyAttachmentPolicy 
permission_store DefaultPermissionStore 
repository_dir /hero/subversion/paradox 
repository_sync_per_request (default) 
repository_type svn 
request_filters  
resizable_textareas true 
secure_cookies  
show_email_addresses false 
show_ip_addresses false 
timeout 20 
use_base_url_for_redirect  
use_xsendfile false 

versioncontrol
allowed_repository_dir_prefixes  

wiki
ignore_missing_pages false 
max_size 262144 
render_unsafe_content false 
safe_schemes cvs, file, ftp, git, irc, http, https, news, sftp, smb, ssh, svn, svn+ssh 
split_page_names false 

Version 0, edited 3 years ago by shorif2000 (next)

comment:5 Changed 3 years ago by Ryan J Ollos

You have:

[trac]
workflow = ConfigurableTicketWorkflow,TicketWorkflowOpOwnerReporter

However, if you wish to use TicketWorkflowOpOwnerComponent and TicketWorkflowOpXRef, you must add those to the workflow list:

[trac]
workflow = ConfigurableTicketWorkflow,TicketWorkflowOpOwnerComponent,TicketWorkflowOpXRef

You have simply copied the example from AdvancedTicketWorkflowPlugin#Example, however note the comment on the page - Add the individual controller to the workflow controller list: ... (The individual controller name is listed in parenthesis after the operation name in the documentation section below.)

comment:6 Changed 3 years ago by Ryan J Ollos

Resolution: worksforme
Status: newclosed

Feel free to follow-up if it's not working for you, though as stated elsewhere, the trac:MailingList should be used for support requests before opening a ticket.

comment:7 Changed 3 years ago by Ryan J Ollos

Additional documentation added in wiki:AdvancedTicketWorkflowPlugin@26?action=diff.

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain Eli Carter.
The resolution will be deleted.

Add Comment


E-mail address and name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.