Project scheduling software (scriptable, cross-platform, and open source)
GanttPV Home
Why GanttPV? Help Scripts Server Developer Object Role Modeling

Bugs and Caveats

Merging changes to report columns

  • If two people merge changes to the columns of the same report at the same time, the second person's changes will be given priority. Any columns the other person added may be moved to the end of the report.
  • To minimize the change of conflicts, always share changes immediately before and after adding or moving columns in a report.

Conflicting changes

  • If two people change the same field, the second change may be silently ignored. (No warning or error message is given.)
  • The share script recognizes the conflict and saves the value that isn't used.
  • The designers haven't decided how to present this information to the user for a decision. (Any suggestions would be appreciated.)

Rejected Updates

  • Each copy of the database keeps track of the data on the server and they changes made locally. When changes are submitted to the server the client identifies both the old and new values.
  • If the old value doesn't match the server's value, the change will be rejected. This feature prevents blind changes to the server. (Currently no warning is given. If you suspect your change has been rejected, use the Script Debugging/Show Messages script to see any error messages.)
  • For the adventurous it is possible to correct the file to bring it back into sync with the server. Otherwise it is necessary to download a fresh copy from the server. Contact us for more information.

GanttPV Internals

[What would you like to know about how GanttPV Server works? Please send your questions! -- Brian]

The GanttPV Update Server consists for four components:

  1. Client Scripts - these are used to add a database to the server, download a copy, and to share changes with the server.
  2. Server programs - these accept new databases, accept and distribute updates, format web pages, and keep backup copies of servers.
  3. A Web CGI script - this script receives requests from web browsers, displays web pages from the server, and forwards updates to the server
  4. Test scripts - that help to verify that the server is working properly

Client Script

There are three important client scripts:

  1. The Add Database to Server script packages up the database and sends it to the server. It receives back keys that can be used to download the database or access the database via the web. The client script communicates with the server using the XML RPC feature of Python. The database is converted into XML and converted back at the server end.
  2. The Download Database from Server script a copies the requested database from the server into GanttPV.
  3. The Share Changes with Server script receives changes from the server, integrates then into the local copy of the database, identifies all of the local changes, and sends them to the server.


The server contains the same engine inside as the client version of GanttPV. All databases are kept in memory. Version 0.1 is very aggressive about making backups. Backup copies are stored after every change to a database.

The server tracks all of the changes that are submitted. Each client remembers the last change it has received. When it shares with the server it provides its last change number. The server forwards all changes it has received since then.

Report CGI Script

The CGI Script requests a web page from the server. The server handles all formatting of web pages.