=================
Products.Reportek
=================

.. Contents ::

What is Reportek?
-----------------

The Reportek is a Zope Product that implements the second generation of the EIONET national repository.

Dependencies
------------

Reportek depends on two lists that it must get from somewhere:

* a list of obligations 
* a list of localities

You can either get the list from http://ROD.eionet.eu.int with XML-RPC or you can use the ``SmallObligations`` product to roll your own obligations and/or localities. See the file ``HINTS.txt`` for information.

Python dependencies
~~~~~~~~~~~~~~~~~~~

* `PyXML <http://pyxml.sourceforge.net/topics>`_
* `pyshapelib <http://ftp.intevation.de/users/bh/pyshapelib>`_
* `shapelib <http://dl.maptools.org/dl/shapelib>`_

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

If you haven't already done it, first create a ``ZCatalog`` named ``Catalog``. Keep the default indexes and metadata. Then add the following indexes:

* ``TextIndex``: ``PrincipiaSearchSource``
* ``FieldIndex``: ``bobobase_modification_time, id, meta_type, country, dataflow, partofyear, released, reportingdate``
* ``KeywordIndex``: ``years``
* ``PathIndex``: ``path``

Then add as ``metadata``: ``bobobase_modification_time, id, meta_type, country, dataflow_title``. Otherwise search will not work. Extract Reportek to the Product folder.
    
Then there is a ZEXP file called ``Reportek-scripts``. It contains the design template, the DTML code for search etc. Copy it to the import directory. Then import it into the toplevel Zope folder. Depending on your preferences copy the scripts to where you have created Reportek Collections.

What is the envelopes.rdf script for?
-------------------------------------

The ``envelopes.rdf`` is used by Reportnet's content registry to harvest deliveries made to the repository. It uses a format called ``RDF``. If you don't want the content registry to harvest you don't need to install it.

Quickview converters
--------------------

Documents have the ability to display their content converted to text or HTML - really anything that is quicker to display than the native format. For this it uses external converters. Look in ``Document.py`` to see what. If you haven't installed a certain external program, then ``Document.py`` will fall back to the native format.

The folder ``Converters`` is automatically added in the Root folder after the product is installed. In order to use the converters installed on the server (local converters) you must add an object of type ``Converter`` in the ``Converters`` folder specifying the path to the actual converter file, the type of the files that can be converted by it and the type of the output files.
    
(eg. If you have installed the pdftotext converter then type in the Converter path (including the arguments) something like: 
``pdftotext -raw %s`` for Linux or something like ``"C:\Program Files\pdftotext" -raw %s`` for Windows.)

Once a converter is added in the Report Document list, you will be give the possibility to choose among the available conversions (*View document as*) for every type of document.

Authentication
--------------

You can use Zope's builtin User folder, or you can use LDAPUserFolder from http://www.dataflake.org. This will hook you into the CIRCA site directory, Your own organisation's or EEA's. That is up to you.

Authorization
-------------

Four (Five) types of users are foreseen:

* The anonymous visitor, who can browse released reports and download the public files.
* The trusted client, who can browse released reports and download public and protected files.
* A collection administrator, who maintain the hierarchial structure, but who doesn't upload any reports.
* A release-coordinator, who releases an envelope to the public. The public must be confident that they are not downloading an incomplete report, so a release/-revocation is logged in the activity log. Once a report is released, it is no longer possible to upload files. If a mistake is found then the release-status can be revoked.
* A reporter, who creates the actual reports. A reporter can request a report to be released when he is finished.

And then there still is the Zope Manager, who can fix everything if/when the security paradigme doesn't cut it.

A user can be one, more or all of these roles at the same time. Additionally, a user can only delete objects he himself have created. And in the case of files, only if the envelope is not released.

Permissions
-----------

There are seven permissions:

* *Add Collections*, which is given to the collection administrator
* *Change Collections*, which is given to "owner". Thereby the collection administrator can only modify the collections he has created.
* *Add Envelopes*, which is given to the "reporter". This allows people to create envelopes. If you have the right to create an envelope you also have the right to add files into it.  If there are certain parts of the hierarchy that a reporter should be restricted to, then give him the permission as a local role, or create a user folder on that level.
* *Change Envelopes*. Give this permission to "owner" to let a "reporter" fill his own envelopes or give the permission to "reporter" to let all reporters modify all envelopes.
* *Add Feedback* given to "Client" to be able to add feedback for release of envelopes
* *Delete Objects*. Typically give this permission to "owner" and maybe "release-coordinator" or "collection administrator".
* *Release Envelopes*. Can be given to "owner", "reporter" or some other class of users.

Usage
-----

The purpose of this product is to make it easy to store the obligatory environmental reports from each country. There are several organisations who receive these reports and for each organisation there are several reports covering subjects such as water and air quality.

To deal with the many reports we let the user organise them in a hierarchial set of collections of his own choice. At the leaves of the structure are the envelopes. They contain all the files and necesary meta-data. The collections also have meta-data, but they only serve as default values for envelope creation.

To prepare a report you first create an envelope. Then you upload the files and finally you release it for the public.
