|
2 | 2 | User Guide |
3 | 3 | ========== |
4 | 4 |
|
5 | | -:Version: $Revision: 1.4 $ |
| 5 | +:Version: $Revision: 1.5 $ |
6 | 6 |
|
7 | 7 | .. contents:: |
8 | 8 |
|
| 9 | +Note: this document will refer to *issues* as the primary store of information |
| 10 | +in the tracker. This is the default of the classic template, bubt may vary in |
| 11 | +any given installation. |
| 12 | + |
| 13 | +Web Interface |
| 14 | +------------- |
| 15 | + |
| 16 | +Index views may be modified by the following arguments: |
| 17 | + |
| 18 | ++-----------+--------------------------------------------------------------+ |
| 19 | +| :sort | sort by prop name, optionally preceeded with '-' | |
| 20 | +| | to give descending or nothing for ascending sorting. | |
| 21 | ++-----------+--------------------------------------------------------------+ |
| 22 | +| :group | group by prop name, optionally preceeded with '-' or | |
| 23 | +| | to sort in descending or nothing for ascending order. | |
| 24 | ++-----------+--------------------------------------------------------------+ |
| 25 | +| :filter | selects which props should be displayed in the filter | |
| 26 | +| | section. Default is all. | |
| 27 | ++-----------+--------------------------------------------------------------+ |
| 28 | +| :columns | selects the columns that should be displayed. | |
| 29 | +| | Default is all. | |
| 30 | ++-----------+--------------------------------------------------------------+ |
| 31 | +| propname | selects the values the node properties given by propname | |
| 32 | +| | must have (very basic search/filter). | |
| 33 | ++-----------+--------------------------------------------------------------+ |
| 34 | + |
| 35 | +Searching |
| 36 | +~~~~~~~~~ |
| 37 | + |
| 38 | +TODO: some information about how searching works |
| 39 | + |
| 40 | + |
| 41 | +Access Controls |
| 42 | +~~~~~~~~~~~~~~~ |
| 43 | + |
| 44 | + |
| 45 | +Managing Issues |
| 46 | +~~~~~~~~~~~~~~~ |
| 47 | + |
| 48 | +TODO: some mention of how the various widgets work |
| 49 | + |
| 50 | + |
| 51 | +E-Mail Gateway |
| 52 | +-------------- |
| 53 | + |
| 54 | +E-mail sent to Roundup is examined for several pieces of information: |
| 55 | + |
| 56 | +1. `subject-line information`_ identifying the purpose of the e-mail |
| 57 | +2. `e-mail message content`_ which is to be extracted |
| 58 | +3. e-mail attachments which should be associated with the message |
| 59 | + |
| 60 | +Subject-line information |
| 61 | +~~~~~~~~~~~~~~~~~~~~~~~~ |
| 62 | + |
| 63 | +The subject line of the incoming message is examined to find one of: |
| 64 | + |
| 65 | +1. the item that the message is responding to, |
| 66 | +2. the type of item the message should create, or |
| 67 | +3. we default the item class and try some trickiness |
| 68 | + |
| 69 | +If the subject line contains a prefix in ``[square brackets]`` then we're |
| 70 | +looking at case 1 or 2 above. Note that any "re:" or "fwd:" prefixes are |
| 71 | +stripped off the subject line before we start looking for real information. |
| 72 | + |
| 73 | +If an item designator (class name and id number, for example ``issue123``) |
| 74 | +is found there, a new "msg" node is added to the "messages" property for |
| 75 | +that item, and any new "file" nodes are added to the "files" property for |
| 76 | +the item. |
| 77 | + |
| 78 | +If just an item class name is found there, we attempt to create a new item of |
| 79 | +that class with its "messages" property initialized to contain the new "msg" |
| 80 | +node and its "files" property initialized to contain any new "file" nodes. |
| 81 | + |
| 82 | +The third case above - where no ``[information]`` is provided, the tracker's |
| 83 | +``MAIL_DEFAULT_CLASS`` configuration variable defines what class of item |
| 84 | +the message relates to. We try to match the subject line to an existing |
| 85 | +item of the default class, and if there's a match, the message is related to |
| 86 | +that matched item. If not, then a new item of the default class is created. |
| 87 | + |
| 88 | +Setting Properties |
| 89 | +:::::::::::::::::: |
| 90 | + |
| 91 | +The e-mail interface also provides a simple way to set properties on items. At |
| 92 | +the end of the subject line, propname=value pairs can be specified in square |
| 93 | +brackets, using the same conventions as for the roundup set shell command. |
| 94 | + |
| 95 | +For example, |
| 96 | + |
| 97 | +- setting the priority of an issue:: |
| 98 | + |
| 99 | + Subject: Re: [issue1] the coffee machine is broken! [priority=urgent] |
| 100 | + |
| 101 | +- adding yourself to a nosy list:: |
| 102 | + |
| 103 | + Subject: Re: [issue2] we're out of widgets [nosy=+richard] |
| 104 | + |
| 105 | +- setting the nosy list to just you:: |
| 106 | + |
| 107 | + Subject: Re: [issue2] we're out of widgets [nosy=richard] |
| 108 | + |
| 109 | +- removing yourself from a nosy list:: |
| 110 | + |
| 111 | + Subject: Re: [issue2] we're out of widgets [nosy=-richard] |
| 112 | + |
| 113 | +In all cases, the message relates to issue 2. The ``Re:`` prefix is stripped |
| 114 | +off. |
| 115 | + |
| 116 | + |
| 117 | +E-Mail Message Content |
| 118 | +~~~~~~~~~~~~~~~~~~~~~~ |
| 119 | + |
| 120 | +Roundup only associates plain text (MIME type ``text/plain``) as messages for |
| 121 | +items. Any other parts of a message are associated as downloadable files. If |
| 122 | +no plain text part is found, the message is rejected. |
| 123 | + |
| 124 | +To do this, incoming messages are examined for multiple parts: |
| 125 | + |
| 126 | +* In a multipart/mixed message or part, each subpart is extracted and |
| 127 | + examined. The text/plain subparts are assembled to form the textual body |
| 128 | + of the message, to be stored in the file associated with a "msg" class |
| 129 | + node. Any parts of other types are each stored in separate files and |
| 130 | + given "file" class nodes that are linked to the "msg" node. |
| 131 | +* In a multipart/alternative message or part, we look for a text/plain |
| 132 | + subpart and ignore the other parts. |
| 133 | + |
| 134 | +If the message is a response to a previous message, and contains quoted |
| 135 | +sections, then these will be stripped out of the message if the |
| 136 | +``EMAIL_KEEP_QUOTED_TEXT`` configuration variable is set to ``'no'``. |
| 137 | + |
| 138 | +Message summary |
| 139 | +::::::::::::::: |
| 140 | + |
| 141 | +The "summary" property on message nodes is taken from the first non-quoting |
| 142 | +section in the message body. The message body is divided into sections by blank |
| 143 | +lines. Sections where the second and all subsequent lines begin with a ">" or |
| 144 | +"|" character are considered "quoting sections". The first line of the first |
| 145 | +non-quoting section becomes the summary of the message. |
| 146 | + |
| 147 | + |
| 148 | +Address handling |
| 149 | +~~~~~~~~~~~~~~~~ |
| 150 | + |
| 151 | +All of the addresses in the ``To:`` and ``Cc:`` headers of the incoming |
| 152 | +message are |
| 153 | +looked up among the tracker users, and the corresponding users are placed |
| 154 | +in the |
| 155 | +"recipients" property on the new "msg" node. The address in the ``From:`` header |
| 156 | +similarly determines the "author" property of the new "msg" node. The default |
| 157 | +handling for addresses that don't have corresponding users is to create new |
| 158 | +users with no passwords and a username equal to the address. |
| 159 | + |
| 160 | +The addresses mentioned in the ``To:``, ``From:`` and ``Cc:`` headers of |
| 161 | +the message may be added to the `nosy list`_ depending on: |
| 162 | + |
| 163 | +``ADD_AUTHOR_TO_NOSY`` |
| 164 | + Does the author of a message get placed on the nosy list automatically? |
| 165 | + If 'new' is used, then the author will only be added when a message |
| 166 | + creates a new issue. If 'yes', then the author will be added on followups |
| 167 | + too. If 'no', they're never added to the nosy. |
| 168 | + |
| 169 | +``ADD_RECIPIENTS_TO_NOSY`` |
| 170 | + Do the recipients (To:, Cc:) of a message get placed on the nosy list? |
| 171 | + If 'new' is used, then the recipients will only be added when a message |
| 172 | + creates a new issue. If 'yes', then the recipients will be added on |
| 173 | + followups too. If 'no', they're never added to the nosy. |
| 174 | + |
| 175 | + |
| 176 | +Nosy List |
| 177 | +::::::::: |
| 178 | + |
| 179 | +The nosy list watches for additions to the "messages" property of items. |
| 180 | +When a new message is added, it is sent to all the users |
| 181 | +on the "nosy" list for the item that are not already on the "recipients" list |
| 182 | +of the message. Those users are then appended to the "recipients" property on |
| 183 | +the message, so multiple copies of a message are never sent to the same user. |
| 184 | +The journal recorded by the hyperdatabase on the "recipients" property then |
| 185 | +provides a log of when the message was sent to whom. |
| 186 | + |
| 187 | +If the author of the message is also in the nosy list for the item that the |
| 188 | +message is attached to, then the config var ``MESSAGES_TO_AUTHOR`` is queried |
| 189 | +to determine if they get a nosy list copy of the message too. |
| 190 | + |
| 191 | + |
9 | 192 | Command Line Tool |
10 | 193 | ----------------- |
11 | 194 |
|
@@ -175,124 +358,6 @@ If either the name or password is not supplied, they are obtained from the |
175 | 358 | command-line. |
176 | 359 |
|
177 | 360 |
|
178 | | -Web Interface |
179 | | -------------- |
180 | | - |
181 | | -Index views may be modified by the following arguments: |
182 | | - |
183 | | -+-----------+--------------------------------------------------------------+ |
184 | | -| :sort | sort by prop name, optionally preceeded with '-' | |
185 | | -| | to give descending or nothing for ascending sorting. | |
186 | | -+-----------+--------------------------------------------------------------+ |
187 | | -| :group | group by prop name, optionally preceeded with '-' or | |
188 | | -| | to sort in descending or nothing for ascending order. | |
189 | | -+-----------+--------------------------------------------------------------+ |
190 | | -| :filter | selects which props should be displayed in the filter | |
191 | | -| | section. Default is all. | |
192 | | -+-----------+--------------------------------------------------------------+ |
193 | | -| :columns | selects the columns that should be displayed. | |
194 | | -| | Default is all. | |
195 | | -+-----------+--------------------------------------------------------------+ |
196 | | -| propname | selects the values the node properties given by propname | |
197 | | -| | must have (very basic search/filter). | |
198 | | -+-----------+--------------------------------------------------------------+ |
199 | | - |
200 | | -Not sure what to put in here... |
201 | | - |
202 | | -E-Mail Gateway |
203 | | --------------- |
204 | | - |
205 | | -Performing Actions |
206 | | -~~~~~~~~~~~~~~~~~~ |
207 | | - |
208 | | -The subject line of the incoming message is examined to determine whether the |
209 | | -message is an attempt to create a new item or to discuss an existing item. A |
210 | | -designator enclosed in square brackets is sought as the first thing on the |
211 | | -subject line (after skipping any "Fwd:" or "Re:" prefixes). |
212 | | -If an item designator (class name and id number) is found there, the newly |
213 | | -created "msg" node is added to the "messages" property for that item, and any |
214 | | -new "file" nodes are added to the "files" property for the item. |
215 | | -If just an item class name is found there, we attempt to create a new item of |
216 | | -that class with its "messages" property initialized to contain the new "msg" |
217 | | -node and its "files" property initialized to contain any new "file" nodes. |
218 | | - |
219 | | -Setting Properties |
220 | | -~~~~~~~~~~~~~~~~~~ |
221 | | - |
222 | | -The e-mail interface also provides a simple way to set properties on items. At |
223 | | -the end of the subject line, propname=value pairs can be specified in square |
224 | | -brackets, using the same conventions as for the roundup set shell command. |
225 | | - |
226 | | -For example, |
227 | | - |
228 | | -- setting the priority of an issue:: |
229 | | - |
230 | | - Subject: Re: [issue1] the coffee machine is broken! [priority=urgent] |
231 | | - |
232 | | -- adding yourself to a nosy list (both of these are equivalent):: |
233 | | - |
234 | | - Subject: Re: [issue2] we're out of widgets [nosy=+richard] |
235 | | - Subject: Re: [issue2] we're out of widgets [nosy=richard] |
236 | | - |
237 | | -- removing yourself from a nosy list:: |
238 | | - |
239 | | - Subject: Re: [issue2] we're out of widgets [nosy=-richard] |
240 | | - |
241 | | - |
242 | | -Message content |
243 | | -~~~~~~~~~~~~~~~ |
244 | | - |
245 | | -Incoming messages are examined for multiple parts: |
246 | | - |
247 | | -* In a multipart/mixed message or part, each subpart is extracted and |
248 | | - examined. The text/plain subparts are assembled to form the textual body |
249 | | - of the message, to be stored in the file associated with a "msg" class |
250 | | - node. Any parts of other types are each stored in separate files and |
251 | | - given "file" class nodes that are linked to the "msg" node. |
252 | | -* In a multipart/alternative message or part, we look for a text/plain |
253 | | - subpart and ignore the other parts. |
254 | | - |
255 | | -Message summary |
256 | | -::::::::::::::: |
257 | | - |
258 | | -The "summary" property on message nodes is taken from the first non-quoting |
259 | | -section in the message body. The message body is divided into sections by blank |
260 | | -lines. Sections where the second and all subsequent lines begin with a ">" or |
261 | | -"|" character are considered "quoting sections". The first line of the first |
262 | | -non-quoting section becomes the summary of the message. |
263 | | - |
264 | | -Address handling |
265 | | -~~~~~~~~~~~~~~~~ |
266 | | - |
267 | | -All of the addresses in the To: and Cc: headers of the incoming message are |
268 | | -looked up among the user nodes, and the corresponding users are placed in the |
269 | | -"recipients" property on the new "msg" node. The address in the From: header |
270 | | -similarly determines the "author" property of the new "msg" node. The default |
271 | | -handling for addresses that don't have corresponding users is to create new |
272 | | -users with no passwords and a username equal to the address. (The web interface |
273 | | -does not permit logins for users with no passwords.) If we prefer to reject |
274 | | -mail from outside sources, we can simply register an auditor on the "user" |
275 | | -class that prevents the creation of user nodes with no passwords. |
276 | | - |
277 | | -Triggers |
278 | | -~~~~~~~~ |
279 | | - |
280 | | -Both cases may trigger detectors (in the first case we are calling the set() |
281 | | -method to add the message to the item's spool; in the second case we are |
282 | | -calling the create() method to create a new node). If an auditor raises an |
283 | | -exception, the original message is bounced back to the sender with the |
284 | | - |
285 | | -Nosy Lists |
286 | | -:::::::::: |
287 | | - |
288 | | -A standard detector is provided that watches for additions to the "messages" |
289 | | -property. When a new message is added, the detector sends it to all the users |
290 | | -on the "nosy" list for the item that are not already on the "recipients" list |
291 | | -of the message. Those users are then appended to the "recipients" property on |
292 | | -the message, so multiple copies of a message are never sent to the same user. |
293 | | -The journal recorded by the hyperdatabase on the "recipients" property then |
294 | | -provides a log of when the message was sent to whom. |
295 | | - |
296 | 361 |
|
297 | 362 | ----------------- |
298 | 363 |
|
|
0 commit comments