annotate doc/features.txt @ 8411:ef1ea918b07a reauth-confirm_id

feat(security): Add user confirmation/reauth for sensitive changes Auditors can raise Reauth(reason) exception to require the user to enter a token (e.g. account password) to verify the user is performing the change. Naming is subject to change. actions.py: New ReauthAction class handler and verifyPassword() method for overriding if needed. client.py: Handle Reauth exception by calling Client:reauth() method. Default client:reauth method. Add 'reauth' action declaration. exceptions.py: Define and document Reauth exception as a subclass of RoundupCGIException. templating.py: Define method utils.embed_form_fields(). The original form making a change to the database has a lot of form fields. These need to be resubmitted to Roundup as part of the form submission that verifies the user's password. This method turns all non file form fields into type=hidden inputs. It escapes the names and values to prevent XSS. For file form fields, it base64 encodes the contents and puts them in hidden pre blocks. The pre blocks have data attributes for the filename, filetype and the original field name. (Note the original field name is not used.) This stops the file content data (maybe binary e.g. jpegs) from breaking the html page. The reauth template runs JavaScript that turns the encoded data inside the pre tags back into a file. Then it adds a multiple file input control to the page and attaches all the files to it. This file input is submitted with the rest of the fields. _generic.reauth.html (multiple tracker templates): Generates a form with id=reauth_form to: display any message from the Reauth exception to the user (e.g. why user is asked to auth). get the user's password submit the form embed all the form data that triggered the reauth recreate any file data that was submitted as part of the form and generate a new file input to push the data to the back end It has the JavaScript routine (as an IIFE) that regenerates a file input without user intervention. All the TAL based tracker templates use the same form. There is also one for the jinja2 template. The JavaScript for both is the same. reference.txt: document embed_form_fields utility method. upgrading.txt: initial upgrading docs. TODO: Finalize naming. I am leaning toward ConfirmID rather than Reauth. Still looking for a standard name for this workflow. Externalize the javascript in _generic.reauth.html to a seperate file and use utils.readfile() to embed it or change the script to load it from a @@file url. Clean up upgrading.txt with just steps to implement and less feature detail/internals. Document internals/troubleshooting in reference.txt. Add tests using live server.
author John Rouillard <rouilj@ieee.org>
date Mon, 11 Aug 2025 14:01:12 -0400
parents a0f9ef08c36c
children 695399dea532
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6586
24e2eeb2ed9a Add meta description to some doc pages.
John Rouillard <rouilj@ieee.org>
parents: 6262
diff changeset
1 .. meta::
6774
e7b4ad2c57ac landmarks, skiplink, remove bad attrs, autocomplete search
John Rouillard <rouilj@ieee.org>
parents: 6762
diff changeset
2 :description:
6586
24e2eeb2ed9a Add meta description to some doc pages.
John Rouillard <rouilj@ieee.org>
parents: 6262
diff changeset
3 Features of using the Roundup Issue Tracker. Describes
24e2eeb2ed9a Add meta description to some doc pages.
John Rouillard <rouilj@ieee.org>
parents: 6262
diff changeset
4 all access methods, configuration and workflow capabilities.
24e2eeb2ed9a Add meta description to some doc pages.
John Rouillard <rouilj@ieee.org>
parents: 6262
diff changeset
5 Links to detailed documentation.
24e2eeb2ed9a Add meta description to some doc pages.
John Rouillard <rouilj@ieee.org>
parents: 6262
diff changeset
6
739
c612747b1126 Added a Features doc
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
7 ================
c612747b1126 Added a Features doc
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
8 Roundup Features
c612747b1126 Added a Features doc
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
9 ================
c612747b1126 Added a Features doc
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
10
7990
788afca5aa15 docs: fixups to features lists.
John Rouillard <rouilj@ieee.org>
parents: 7794
diff changeset
11 Roundup is an easy-to-use and -install issue-tracking system with
788afca5aa15 docs: fixups to features lists.
John Rouillard <rouilj@ieee.org>
parents: 7794
diff changeset
12 web, e-mail and command-line interfaces. Based on the winning design
8390
00d4cbce319c doc: fix formatting, typos.
John Rouillard <rouilj@ieee.org>
parents: 8389
diff changeset
13 from Ka-Ping Yee in the :index:`Software Carpentry` "Track" design
00d4cbce319c doc: fix formatting, typos.
John Rouillard <rouilj@ieee.org>
parents: 8389
diff changeset
14 competition.
739
c612747b1126 Added a Features doc
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
15
8033
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
16 **Installation and Setup**
8027
4ed91247e8dc docs: trying to cleanup/categorize features better.
John Rouillard <rouilj@ieee.org>
parents: 7990
diff changeset
17
8034
b1ff8c0e3e1d docs: fix spellings.
John Rouillard <rouilj@ieee.org>
parents: 8033
diff changeset
18 - Start using the software in `instant-gratification (demo) mode`_ with
8033
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
19 ``python demo.py`` or `a Docker container`_ in under 5 minutes.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
20 - Choose from `five included templates`_ for your tracker.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
21 - `Customize`_ and use the demo as a template for your production tracker.
8380
76050d59e41f doc: remove python 2.7 support reference.
John Rouillard <rouilj@ieee.org>
parents: 8326
diff changeset
22 - No need for additional support software, just Python (3.7+)
8033
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
23 to get started.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
24 - Basic installation (including a web interface) takes about 30 minutes.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
25 - Supports embedded databases like `SQLite`_ and dbm. Upgradable
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
26 to databases like `MySQL`_ or `PostgreSQL`_ if needed.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
27 - Can be run in a container like Docker or kubernetes.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
28 - Deploy in your network as a standalone web server or `through
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
29 various methods`_ like WSGI, FastCGI, plain CGI, etc.
8174
5ea419c1d571 add security advantage of depending on core library.
John Rouillard <rouilj@ieee.org>
parents: 8034
diff changeset
30 - Essential tracking features depend on the Python standard
5ea419c1d571 add security advantage of depending on core library.
John Rouillard <rouilj@ieee.org>
parents: 8034
diff changeset
31 library. Supplementary packages from PyPI are optional and can be
5ea419c1d571 add security advantage of depending on core library.
John Rouillard <rouilj@ieee.org>
parents: 8034
diff changeset
32 tailored to fit your unique threat model and security needs.
8027
4ed91247e8dc docs: trying to cleanup/categorize features better.
John Rouillard <rouilj@ieee.org>
parents: 7990
diff changeset
33
8033
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
34 **Issue Tracking and Management**
739
c612747b1126 Added a Features doc
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
35
8033
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
36 - Manage your issues your way. Handle bugs, features, milestones,
8034
b1ff8c0e3e1d docs: fix spellings.
John Rouillard <rouilj@ieee.org>
parents: 8033
diff changeset
37 user feedback, fleet maintenance, office issues etc.
8390
00d4cbce319c doc: fix formatting, typos.
John Rouillard <rouilj@ieee.org>
parents: 8389
diff changeset
38 - Issues become a mini mailing list to keep everyone informed.
8033
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
39 - Searches on specific properties (e.g. open issues with a high
8390
00d4cbce319c doc: fix formatting, typos.
John Rouillard <rouilj@ieee.org>
parents: 8389
diff changeset
40 priority) can be saved and reused or shared with other users.
8033
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
41 - Full Text Search for quick searches across messages.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
42 - Keeps a detailed history of issue changes.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
43 - Email is a first class method for interacting with issues.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
44
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
45 **Scalability and Performance**
8027
4ed91247e8dc docs: trying to cleanup/categorize features better.
John Rouillard <rouilj@ieee.org>
parents: 7990
diff changeset
46
8033
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
47 - Default trackers use simple HTML with low resource requirements.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
48 - Fast and scalable with sqlite, mysql, and postgresql backends.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
49 - Indexes are automatically configured.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
50 - Supports full-text indexing engines (xapian, whoosh, SQLite,
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
51 PostgreSQL) for large trackers.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
52
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
53 **Customization**
739
c612747b1126 Added a Features doc
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
54
8033
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
55 - The database schema can be updated to `track additional data`_.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
56 - The web interface can be redesigned to fit your workflow.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
57 - Extensible web interface with various features like `wizards`_,
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
58 bug displays, etc.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
59 - Add business rules using `auditors and reactors`_ for actions before
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
60 and after database changes.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
61 - Comprehensive documentation for customization, installation,
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
62 maintenance, and user guidance.
8027
4ed91247e8dc docs: trying to cleanup/categorize features better.
John Rouillard <rouilj@ieee.org>
parents: 7990
diff changeset
63
8033
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
64 **Data Security, Privacy and Authorization**
8027
4ed91247e8dc docs: trying to cleanup/categorize features better.
John Rouillard <rouilj@ieee.org>
parents: 7990
diff changeset
65
8033
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
66 - Your data remains on your servers.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
67 - You can choose if AI can access the data.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
68 - Can use HTTPS for security over the web.
8389
15b99d4cd94c doc: correct acronym for * based access controls. Add links to wikipaedia.
John Rouillard <rouilj@ieee.org>
parents: 8380
diff changeset
69 - Fine-grained authorization (`ABAC`_, `ReBAC`_, `RBAC`_) based on
15b99d4cd94c doc: correct acronym for * based access controls. Add links to wikipaedia.
John Rouillard <rouilj@ieee.org>
parents: 8380
diff changeset
70 user, resource, and external properties.
15b99d4cd94c doc: correct acronym for * based access controls. Add links to wikipaedia.
John Rouillard <rouilj@ieee.org>
parents: 8380
diff changeset
71
15b99d4cd94c doc: correct acronym for * based access controls. Add links to wikipaedia.
John Rouillard <rouilj@ieee.org>
parents: 8380
diff changeset
72 .. _`ABAC`: https://en.wikipedia.org/wiki/Attribute-based_access_control
15b99d4cd94c doc: correct acronym for * based access controls. Add links to wikipaedia.
John Rouillard <rouilj@ieee.org>
parents: 8380
diff changeset
73 .. _`ReBAC`: https://en.wikipedia.org/wiki/Relationship-based_access_control
15b99d4cd94c doc: correct acronym for * based access controls. Add links to wikipaedia.
John Rouillard <rouilj@ieee.org>
parents: 8380
diff changeset
74 .. _`RBAC`: https://en.wikipedia.org/wiki/Role-based_access_control
1228
Richard Jones <richard@users.sourceforge.net>
parents: 742
diff changeset
75
8033
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
76 **Documentation and User Management**
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
77
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
78 - Users can sign up through the web interface or new user creation
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
79 can be limited to admin users.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
80 - Can use an `external user database`_ (LDAP, password file)
8390
00d4cbce319c doc: fix formatting, typos.
John Rouillard <rouilj@ieee.org>
parents: 8389
diff changeset
81 - Self-serve password reset for users via email.
8033
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
82
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
83 **Email Integration and Automation**
739
c612747b1126 Added a Features doc
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
84
8034
b1ff8c0e3e1d docs: fix spellings.
John Rouillard <rouilj@ieee.org>
parents: 8033
diff changeset
85 - Update issues via email with new messages and the ability to
8033
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
86 change properties of issues (e.g. close an issue).
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
87 - Secure email handling with features like TLS, APOP, IMAPS/OAUTH.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
88 - Optional auto-registration for email users.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
89 - Configurable nosy list for each issue controls email notifications.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
90 - Proper handling of email attachments and content types.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
91
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
92 **Command-Line and API Access**
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
93
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
94 - Manage database interactively from the command line.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
95 - Automate modifications using standard shell scripting.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
96 - Python programs can use the Roundup Python API to manage/automate issues.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
97 - Sample scripts provided for various tasks.
739
c612747b1126 Added a Features doc
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
98
8033
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
99 **Remote Access Interfaces**
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
100
8390
00d4cbce319c doc: fix formatting, typos.
John Rouillard <rouilj@ieee.org>
parents: 8389
diff changeset
101 - `RESTful API`_ accessible with basic HTTP authentication or optional JWT.
8033
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
102 - `XMLRPC interface`_ for remote tracker access with basic
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
103 HTTP authentication.
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
104 - Configurable CORS support for third-party web pages.
8392
a0f9ef08c36c doc: add link to JWT endpoint doc in rest.txt.
John Rouillard <rouilj@ieee.org>
parents: 8390
diff changeset
105 - Ability to `generate and authenticate JSON Web Tokens (JWT)
a0f9ef08c36c doc: add link to JWT endpoint doc in rest.txt.
John Rouillard <rouilj@ieee.org>
parents: 8390
diff changeset
106 <rest.html#changing-access-roles-with-json-web-tokens>`_.
739
c612747b1126 Added a Features doc
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
107
8033
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
108 .. _`auditors and reactors`: reference.html#auditor-or-reactor
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
109 .. _`customize`: customizing.html
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
110 .. _`external user database`: customizing.html#using-external-user-databases
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
111 .. _`five included templates`: installation.html#choosing-your-template
8034
b1ff8c0e3e1d docs: fix spellings.
John Rouillard <rouilj@ieee.org>
parents: 8033
diff changeset
112 .. _`instant-gratification (demo) mode`:
8033
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
113 installation.html#for-the-really-impatient
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
114 .. _`a Docker container`: installation.html#running-in-demo-mode-with-docker
5511
bfe8e52af1e7 more mentions of updated MySQL client module
Christof Meerwald <cmeerw@cmeerw.org>
parents: 5096
diff changeset
115 .. _mysql: https://pypi.org/project/MySQL-python/
6262
ba82fb74f806 Update psycopg link to: https://www.psycopg.org/
John Rouillard <rouilj@ieee.org>
parents: 6163
diff changeset
116 .. _postgresql: https://www.psycopg.org/
8033
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
117 .. _`restful api`: rest.html
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
118 .. _`run in a container`: installation.html#docker-support
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
119 .. _sqlite: https://www.sqlite.org/index.html
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
120 .. _`track additional data`:
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
121 customizing.html#adding-a-new-field-to-the-classic-schema
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
122 .. _`through various methods`: installation.html#configure-a-web-interface
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
123 .. _wizards:
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
124 customizing.html#setting-up-a-wizard-or-druid-for-controlled-adding-of-issues
6cebbb42c883 docs: regroup feature list using GPT and update
John Rouillard <rouilj@ieee.org>
parents: 8027
diff changeset
125 .. _`xmlrpc interface`: xmlrpc.html

Roundup Issue Tracker: http://roundup-tracker.org/