Code

svn repository setup
[roundup.git] / doc / FAQ.txt
1 ===========
2 Roundup FAQ
3 ===========
5 :Version: $Revision: 1.23 $
7 .. contents::
10 Installation
11 ------------
13 Living without a mailserver
14 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
16 Remove the nosy reactor - delete the tracker file
17 ``detectors/nosyreactor.py`` from your tracker home.
20 The cgi-bin is very slow!
21 ~~~~~~~~~~~~~~~~~~~~~~~~~
23 Yep, it sure is. It has to start up Python and load all of the support
24 libraries for *every* request.
26 The solution is to use the built in server (or possibly the mod_python
27 or WSGI support).
29 To make Roundup more seamless with your website, you may place the built
30 in server behind apache and link it into your web tree (see below).
33 How do I put Roundup behind Apache
34 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
36 We have a project (foo) running on ``tracker.example:8080``.
37 We want ``http://tracker.example/issues`` to use the roundup server, so we 
38 set that up on port 8080 on ``tracker.example`` with the ``config.ini`` line::
40   [tracker]
41   ...
42   web = 'http://tracker.example/issues/'
44 We have a "foo_issues" tracker and we run the server with::
46   roundup-server -p 8080 issues=/home/roundup/trackers/issues 
48 Then, on the Apache machine (eg. redhat 7.3 with apache 1.3), in
49 ``/etc/httpd/conf/httpd.conf`` uncomment::
51   LoadModule proxy_module       modules/libproxy.so
53 and::
55   AddModule mod_proxy.c
57 Then add::
59   # roundup stuff (added manually)
60   <IfModule mod_proxy.c>
61   # proxy through one tracker
62   ProxyPass /issues/ http://tracker.example:8080/issues/
63   # proxy through all tracker(*)
64   #ProxyPass /roundup/ http://tracker.example:8080/
65   </IfModule>
67 Then restart Apache. Now Apache will proxy the request on to the
68 roundup-server.
70 Note that if you're proxying multiple trackers, you'll need to use the
71 second ProxyPass rule described above. It will mean that your TRACKER_WEB
72 will change to::
74   TRACKER_WEB = 'http://tracker.example/roundup/issues/'
76 Once you're done, you can firewall off port 8080 from the rest of the world.
78 Note that in some situations (eg. virtual hosting) you might need to use a
79 more complex rewrite rule instead of the simpler ProxyPass above. The
80 following should be useful as a starting template::
82   # roundup stuff (added manually)
83   <IfModule mod_proxy.c>
85   RewriteEngine on
86   
87   # General Roundup
88   RewriteRule ^/roundup$  roundup/    [R]
89   RewriteRule ^/roundup/(.*)$ http://tracker.example:8080/$1   [P,L]
90   
91   # Handle Foo Issues
92   RewriteRule ^/issues$  issues/    [R]
93   RewriteRule ^/issues/(.*)$ http://tracker.example:8080/issues/$1 [P,L]
94   
95   </IfModule>
98 How do I run Roundup through SSL (HTTPS)?
99 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
101 You should proxy through apache and use its SSL service. See the previous
102 question on how to proxy through apache.
105 Roundup runs very slowly on my XP machine when accessed from the Internet
106 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
108 The issue is probably related to host name resolution for the client
109 performing the request. You can turn off the resolution of the names
110 when it's so slow like this. To do so, edit the module
111 roundup/scripts/roundup_server.py around line 77 to add the following
112 to the RoundupRequestHandler class:
114      def address_string(self):
115          return self.client_address[0]
118 Templates
119 ---------
121 What is that stuff in the tracker html directory?
122 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
124 This is the template code that Roundup uses to display the various pages.
125 This is based upon the template markup language in Zope called, oddly
126 enough "Zope Page Templates". There's documentation in the Roundup
127 customisation_ documentation. For more information have a look at:
129    http://www.zope.org/Documentation/Books/ZopeBook/2_6Edition/ 
131 specifically chapter 10 "Using Zope Page Templates" and chapter 14 "Advanced
132 Page Templates".
135 But I just want a select/option list for ....
136 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
138 Really easy... edit ``html/issue.item``. For 'nosy', change line 53 from::
140   <span tal:replace="structure context/nosy/field" />
142 to::
144   <span tal:replace="structure context/nosy/menu" />
146 For 'assigned to', change line 61 from::
148   <td tal:content="structure context/assignedto/field">assignedto menu</td>
150 to::
152   <td tal:content="structure context/assignedto/menu">assignedto menu</td>
156 Great! But now the select/option list is too big
157 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
159 Thats a little harder (but only a little ;^)
161 Again, edit ``html/issue.item``. For nosy, change line 53 from:
163   <span tal:replace="structure context/nosy/field" />
165 to::
167   <span tal:replace="structure python:context.nosy.menu(height=3)" />
169 for more information, go and read about Zope Page Templates.
172 Using Roundup
173 -------------
175 I got an error and I cant reload it!
176 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
178 If you're using Netscape/Mozilla, try holding shift and pressing reload.
179 If you're using IE then install Mozilla and try again ;^)
182 I keep getting logged out
183 ~~~~~~~~~~~~~~~~~~~~~~~~~
185 Make sure that the ``tracker`` -> ``web`` setting in your tracker's
186 config.ini is set to the URL of the tracker.
189 How is sorting performed, and why does it seem to fail sometimes?
190 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
192 When we sort items in the hyperdb, we use one of a number of methods,
193 depending on the properties being sorted on:
195 1. If it's a String, Number, Date or Interval property, we just sort the
196    scalar value of the property. Strings are sorted case-sensitively.
197 2. If it's a Link property, we sort by either the linked item's "order"
198    property (if it has one) or the linked item's "id".
199 3. Mulitlinks sort similar to #2, but we start with the first
200    Multilink list item, and if they're the same, we sort by the second item,
201    and so on.
203 Note that if an "order" property is defined on a Class that is used for
204 sorting, all items of that Class *must* have a value against the "order"
205 property, or sorting will result in random ordering.
207 -----------------
209 Back to `Table of Contents`_
211 .. _`Table of Contents`: index.html
212 .. _`customisation`: customizing.html