view doc/FAQ.txt @ 5112:8901cc4ef0e0

- issue1714899: Feature Request: Optional Change Note. Added a new quiet=True/False option for all property types. When quiet=True changes to the property will not be displayed in the:: confirmation banner (shown in green) when a change is made property change section of change note (nosy emails) web history display for an item. Note that this may confuse users if used on a property that is meant to be changed by a user. It is most useful on administrative properties that are changed by an auditor as part of a user generated change. Original patch by Daniel Diniz (ajaksu2) discussed also at: http://psf.upfronthosting.co.za/roundup/meta/issue249 Support for setting quiet when calling the class specifiers: E.G. prop=String(quiet=True) rather than:: prop=String() prop.quiet=True support for anydb backend, added tests, doc updates, support for ignoring quiet setting using showall=True in call to history() function in templates by John Rouillard. In addition to documenting quiet, I also documented required and default_value additions to the hyperdb property classes. Only place I could find is design.txt. Note tests for history in web interface are not done. It was manually checked but there are no automated tests. The template for setup is in db_test_base.py::testQuietJournal but it has no asserts. I need access to template.py::_HTMLItem::history() and I don't know how to do that. test_templates.py isn't helping me any at all and I want to get this patch in because it handles nicely an issue I have in the design of my own tracker. The issue is: The properties of an issue are displayed in framesets/subframes. The user can roll up the frameset leaving only the title bar. When the user saves the changes, the current state of the framesets (collapsed/uncollapsed) is saved to a property in the user's object. However there is no reason the user should see that this is updated since it's an administrative detail. Similarly, you could count the number of times an issue is reopened or reassigned. Updates to properties that are an indirect result of a user's change should not be displayed to the user as they can be confusing and distracting.
author John Rouillard <rouilj@ieee.org>
date Thu, 30 Jun 2016 20:38:23 -0400
parents 96dc9f07340a
children 0786c62edf12
line wrap: on
line source

===========
Roundup FAQ
===========

.. contents::
   :local:


Installation
------------

Living without a mailserver
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Remove the nosy reactor - delete the tracker file
``detectors/nosyreactor.py`` from your tracker home.


The cgi-bin is very slow!
~~~~~~~~~~~~~~~~~~~~~~~~~

Yep, it sure is. It has to start up Python and load all of the support
libraries for *every* request.

The solution is to use the built in server (or possibly the mod_python
or WSGI support).

To make Roundup more seamless with your website, you may place the built
in server behind apache and link it into your web tree (see below).


How do I put Roundup behind Apache
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

We have a project (foo) running on ``tracker.example:8080``.
We want ``http://tracker.example/issues`` to use the roundup server, so we 
set that up on port 8080 on ``tracker.example`` with the ``config.ini`` line::

  [tracker]
  ...
  web = 'http://tracker.example/issues/'

We have a "foo_issues" tracker and we run the server with::

  roundup-server -p 8080 issues=/home/roundup/trackers/issues 

Then, on the Apache machine (eg. redhat 7.3 with apache 1.3), in
``/etc/httpd/conf/httpd.conf`` uncomment::

  LoadModule proxy_module       modules/libproxy.so

and::

  AddModule mod_proxy.c

Then add::

  # roundup stuff (added manually)
  <IfModule mod_proxy.c>
  # proxy through one tracker
  ProxyPass /issues/ http://tracker.example:8080/issues/
  # proxy through all tracker(*)
  #ProxyPass /roundup/ http://tracker.example:8080/
  </IfModule>

Then restart Apache. Now Apache will proxy the request on to the
roundup-server.

Note that if you're proxying multiple trackers, you'll need to use the
second ProxyPass rule described above. It will mean that your TRACKER_WEB
will change to::

  TRACKER_WEB = 'http://tracker.example/roundup/issues/'

Once you're done, you can firewall off port 8080 from the rest of the world.

Note that in some situations (eg. virtual hosting) you might need to use a
more complex rewrite rule instead of the simpler ProxyPass above. The
following should be useful as a starting template::

  # roundup stuff (added manually)
  <IfModule mod_proxy.c>

  RewriteEngine on
  
  # General Roundup
  RewriteRule ^/roundup$  roundup/    [R]
  RewriteRule ^/roundup/(.*)$ http://tracker.example:8080/$1   [P,L]
  
  # Handle Foo Issues
  RewriteRule ^/issues$  issues/    [R]
  RewriteRule ^/issues/(.*)$ http://tracker.example:8080/issues/$1 [P,L]
  
  </IfModule>


How do I run Roundup through SSL (HTTPS)?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The preferred way of using SSL is to proxy through apache and use its
SSL service. See the previous question on how to proxy through apache.

The standalone roundup-server now also has SSL support which is still
considered experimental. For details refer to the documentation of
roundup server, in particular to the generated configuration file
generated with ::

    roundup-server --save-config

that describes the needed option in detail. With the standalone server
now XMLRPC over SSL works, too.


Templates
---------

What is that stuff in the tracker html directory?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This is the template code that Roundup uses to display the various pages.
This is based upon the template markup language in Zope called, oddly
enough, "Zope Page Templates". There's documentation in the Roundup
customisation_ documentation. For more information have a look at:

   http://docs.zope.org/zope2/zope2book/

specifically chapter 10 "Using Zope Page Templates" and chapter 14 "Advanced
Page Templates".


But I just want a select/option list for ....
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Really easy... edit ``html/issue.item.html``. For ``nosy``, change the line
(around line 69) from::

  <span tal:replace="structure context/nosy/field" />

to::

  <span tal:replace="structure context/nosy/menu" />

For ``assigned to``, this is already done around line 77::

  <td tal:content="structure context/assignedto/menu">assignedto menu</td>



Great! But now the select/option list is too big
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

That is a little harder (but only a little ;^)

Again, edit ``html/issue.item``. For nosy, change line (around line 69) from::

  <span tal:replace="structure context/nosy/field" />

to::

  <span tal:replace="structure python:context.nosy.menu(height=3)" />

for more information, go and read about Zope Page Templates.


Using Roundup
-------------

I got an error and I cannot reload it!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

If you're using Netscape/Mozilla, try holding shift and pressing reload.
If you're using IE then install Mozilla and try again ;^)


I keep getting logged out
~~~~~~~~~~~~~~~~~~~~~~~~~

Make sure that the ``tracker`` -> ``web`` setting in your tracker's
config.ini is set to the URL of the tracker.

I'm getting infinite redirects in the browser
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

A wrong value for the ``tracker`` -> ``web`` setting may also result in
infinite redirects, see http://issues.roundup-tracker.org/issue2537286


How is sorting performed, and why does it seem to fail sometimes?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

When we sort items in the hyperdb, we use one of a number of methods,
depending on the properties being sorted on:

1. If it's a String, Integer, Number, Date or Interval property, we
   just sort the scalar value of the property. Strings are sorted
   case-sensitively.
2. If it's a Link property, we sort by either the linked item's "order"
   property (if it has one) or the linked item's "id".
3. Mulitlinks sort similar to #2, but we start with the first
   Multilink list item, and if they're the same, we sort by the second item,
   and so on.

Note that if an "order" property is defined on a Class that is used for
sorting, all items of that Class *must* have a value against the "order"
property, or sorting will result in random ordering.

.. _`customisation`: customizing.html


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