IssueTrackerProduct

A user friendly bug tracking web application for Zope

Documentation

Installing the IssueTrackerProduct

To be able to run the IssueTrackerProduct you will first need to have a running Zope. To install Zope, please go to www.zope.org/Products and download the latest Zope version for your operating system. Once installed you should be able reach your running Zope server on http://localhost:8080/.

It has to be Zope 2. IssueTrackerProduct does not work with Zope 3.

Download the latest issuetracker from the Download section to your computer. Once downloaded, you unpack the archive and extract it to your Zope's Products directory. (e.g. /home/me/zope/Products). Go to http://localhost:8080/Control_Panel/manage and restart Zope. Once installed it should appear in the Products list in the Zope Control Panel at http://localhost:8080/Control_Panel/Products/manage.

Now you can start creating instance of the IssueTrackerProduct anywhere inside Zope. You log in to the Zope management interface on http://localhost:8080/manage and from the drop down list in the right hand corner you select Issue Tracker. It is recommended that you go through the Properties Wizard so that you get the correct settings that suit you. Take your time with the options and alternatives.

top

Upgrading

Usually upgrading is as easy as installing. The latest version you're intending to install might have special precautionary notes that you should look out for and read. Generally, all new versions of the IssueTrackerProduct are backwards compatible.

What you should do is to visit the Management tab of your issuetracker on http://localhost:8080/myissuetracker/manage_ManagementForm and press the big Update Everything button. This will make sure your instance is up to date. It can be, for example, that the version you're installing requires some new attributes on the "instanciated" objects, then this script will take care of that. It will also make sure the ZCatalog (installed as ICatalog) instance is up to date with the correct indexes.

top

User management

By default, an IssueTrackerProduct instance allows anonymous people to get access to almost everything. They will be able to add issues, list issues and post followups to issues. Only users with the Manager role will be able to change the status or delete issues. If you look in the Properties tab of your IssueTrackerProduct instance you will notice there's a lines type property for which roles means "Manager". If you have other roles assigned to Zope users (e.g. Supervisor) you can add that to this property and then people with the Supervisor role will be able to changes status and delete issues too.

If you want to switch off the anonymous access you can disable the View permission for the Anonymous User in Zope's Security tab. You can also go to the Management tab of the IssueTrackerProduct instance and click the Users sub-tab and there you'll find a button to "Disallow anonymous access". Under this sub-tab you will also find the options for Issue Assignment.

If you want to use Issue Assignment, you have to have at least one user defined in an Issue Tracker User Folder which you have to set up either inside your IssueTrackerProduct instance or somewhere in it's parent acquisition path. From the Management->Users tab you will be able to "black list" those users who should not be assignable. This could happen if a team of people are using an IssueTrackerProduct instance but you want only the developers to be assignable.

Since the 0.6.1 version, when you install the IssueTrackerProduct you also get an object type called Issue Tracker User Folder. It works like the default Zope User Folder except that it has some more features. It also stores the full name and email.

top

CheckoutableTemplates

CheckoutableTemplates is another Zope Product like the IssueTrackerProduct. The IssueTrackerProduct is not dependent on CheckoutableTemplates but if you want to be able to change the look and feel of an IssueTrackerProduct instance you have to have CheckoutableTemplates installed in your Zope. Once installed it allows you to - surprisingly - check out individual templates that the issue tracker uses. Since the IssueTrackerProduct holds its templates on the filesystem, they can't be edited through the Zope management interface (ZMI) which is quite inconvenient; plus that if you change the templates on the filesystem it affects all instances of the product. That's the problem. CheckoutableTemplates is the solution.

If you install CheckoutableTemplates (like any other Zope product) and you have an IssueTrackerProduct instance running on http://localhost:8080/myissuetracker/ then all you have to is to visit http://localhost:8080/myissuetracker/showCheckoutableTemplates.
From there you will be able to select a certain template and make a local copy of it in the ZODB (thus accessible in the ZMI). The name of this newly created object will be the same as it was defined as but with an extension added at the end. The changes you make there is what will be shown nomatter what the state of the filesystem is.

top

slimmer

slimmer is a pure Python module that optimises whitespace in HTML, XHTML, CSS and JavaScripts. It's got very little to do with the IssueTrackerProduct but CheckoutableTemplates is able to use in and since the IssueTrackerProduct can use CheckoutableTemplates it can use slimmer to optimise it's output.

By default, if you install CheckoutableTemplates and slimmer and run a new IssueTracker it will optimise all the output that the IssueTrackerProduct produces. The IssueTrackerProduct's output is already heavily optimised but slimmer helps to reduce your total download size by 20-30% to make usage faster and snappier.

slimmer is built to be an on-the-fly optimiser meaning that it's built to be very fast so you can use it for every generated page. There are lots of competing whitespace optimisers on the net (some that you have to pay for) but almost all of them are built for static optimising which makes it difficult to deploy with dynamic webpages. There are of course lots of more things slimmer could do to reduce the size of what it works on but some of those ideas have had to be discarded in favor of speed.

>>> from slimmer import css_slimmer, xhtml_slimmer, js_slimmer
>>> css_slimmer('''/*  Page heading  */
... div#header {
...     width : 100%;
... }''')
'div#header{width:100%}'
>>> xhtml_slimmer('''<!-- comment -->         
... <a   href="x"
...  width="100%" border='0'>Pointless         extra
...  
... space</a>''')
'<a href="x" width="100%" border=\'0\'>Pointless         extra\n \nspace</a>'
>>> js_slimmer('''function foobar(x,y) {
...   var element1 = document.getElementById('something'); // alert(element1);
...   alert(element1); // this can be removed
... } // end of function;
... ''')
"function foobar(x,y){var element1=document.getElementById('something');alert(element1);}"
>>> 

Credits to: Baruch Even for his patches with improvements.
You can test drive it here and read more about how to integrate with Zope here (but there are better ways)