Commit a9234126 authored by LE GAC Renaud's avatar LE GAC Renaud
Browse files

Merge branch 'master' into 'production'

Release 0.9.4

* Move to `web2py` 2.14.6, `matplotlib` 1.5.1 and `pandas` 0.18.1. The last version of `web2py` requires `plugin_dbui` 0.8.3 or higher.
* Name the application `LIMBRA` instead of `track_publications`.
* Add the filter `CLEAN_COLLABORATION_SYNONYM`.
* Bugs fixed in: `check_and_validate.html`, `CheckAndFix._get_reg_institute`, `RecordConf.conference_dates`, ...
* Tools, `jsduck`, `sencha`, `sphinx-build` can be run behind a docker container.


See merge request !68
parents fc2ae2d1 6924db13
......@@ -22,7 +22,7 @@ static/plugin_ace
static/plugin_dbui
static/plugin_extjs
static/plugin_mathjax
static/track_publications*.js
static/limbra*.js
tmp_build/
views/plugin_dbui
controllers/plugin_dbui.py
--------------------------------- CHANGELOG ----------------------------------
HEAD
0.9.5.4 (Jun 2016)
- Move to web2py 2.14.6, matplotlib 1.5.1 and pandas 0.18.1.
The last version of web2py 2.14.6 requires plugin_dbui 0.8.3 or higher.
- Name the Application LIMBRA instead of track_publications.
- Add the filter CLEAN_COLLABORATION_SYNONYM
- Bugs fixed in: check_and_validate.html, CheckAndFix._get_reg_institute,
RecordConf.conference_dates, ...
- Tools, jsduck, sencha, sphinx-build can be run behind a docker container.
0.9.5.3 (Feb 2016)
- Move to plugin_dbui 0.8.2.
- Series of modification to run via a docker image.
- build_version.py can install plugins.
0.9.5.2 (Jan 2016)
- Fix a bug in the controller edit_and_insert.
- Fix a bug in the function duplicate_conference.
- Fix bugs in graph_tools and improve the dashboard layout.
0.9.5 (Dec 2015)
- Require plugin_dbui 0.8.1 and libreoffice.
- Few modifications to be compliant with the navigator Chrome.
- List can be extract in OpenDocument format odt.
- Update the documentation.
0.9.3 (Dec 2015)
- Require plugin_dbui 0.7.3
- Add the wizard to create an harvester.
0.9.2 (Nov 2015)
- Require plugin_dbui 0.7.2 or later release.
- Major review of the user guide.
- Protect the table controllers against duplicate pair (harvester, category)
as well as duplicate usage of the publication category.
- Several bugs fixed.
- Fix bug in the list extraction to CSV file.
- Fix a bug in the graph generation when the database is empty.
0.9.0 (Nov 2015)
- Fix pylint warnings and errors in python modules.
- Migrate the documentation of the python modules to Sphinx.
- Add the field synonym to the tables collaborations, countries and publishers.
- Add the possibility to harvest several stores for a given automaton,
team, project and publication code.
- Add the subcommand loop, mysql and dump to the script run.
- Add a list of publishers. Abbreviations are almost compliant with ISO.
- Activate the authors roles.
- Add the preference add_rules_reg_institute.
- Graphs are rendered by the pandas and matplotlib libraries.
- Add protections and fix bugs.
0.8.14 (Sep 2015)
- Transform the modules invenio_tools and harvest_tools into packages.
- Institute parameters are searched in the inspirehep database.
- Major refactoring of the Marc12 decoding. New classes have been introduced:
RecordConf, RecodInst, RecordPubli, RecordThesis.
- Major redesign of harvester logic. Stop the processing as soon as
possible. The order of the checks is oai, authors, affiliation,
collaboration and specific items depending on the publication type.
- The class Automaton replaces PublicationsTool and many of its methods
have been renamed.
0.8.13 (Sep 2015)
- Maintenance release.
- The pytest framework run within the application.
- Series of python test to validate the Record class
on different type of publications (ACL, ACTI, COM, PHD)
- Bugs fixed and protections added in Record, CheckAndFix classes.
- Much more sofisticated algorithm to discover report number(s).
0.8.12 (Aug 2015)
- Bugs fixed release.
0.8.11 (Jul 2015)
- Release is non backward compatible. It mainly consolidate the user interface
- Require plugin_dbui 0.7.1 or later release.
- Rename the database application to preferences.
- Change the type of the database field preferences.value to JSON.
- Interaction with the preferences table is performed via the preferences widget
- Add the node application. It contains the leaves preferences.
- Move the CAS leaves to "application" and destroy the CAS node.
- Migrate the action "edit and insert" and "inser MARCXML" from the harvester
to the wizard node.
- Update the documentation with the new node structure..
- Protect harvester controller against REG_INSTITUTE not defined
- Protect harvester configuration against the same project, the same automaton
but different publications category.
0.8.10 (Mai 2015)
- Minor release, mainly bugs fixed.
- List can be extracted as a CSV or BibTex files.
0.8.9 (Apr 2015)
- Migrate to plugin_dbui 0.6.4 (sphinx documentation).
- Migrate the source code to gitLab.in2p3.fr.
- Use an improved git branching model (master, develop, feature).
- First version of the user documentation under sphinx.
- COM and ACTI publications are now independant object.
- Polish the harvester user interface.
0.8.8.2 (Apr 2015)
- Database(s) connection parameters are moved in the local file _db.py
- refactor the documentation additing few UML diagram (remove in 0.8.9)
- Bug fix in the wizard "edit and insert".
0.8.8.1 (Dec 2014)
- Require plugin_dbui 0.6.1.14 or later version.
Backward compatibility is broken (report interfaces, country default, ...).
The table axes, lists, metrics and publications have to be recreated.
- Remove all reference to CPPM.
- Consolidate harvesters software.
Modify the logic of the harvester by introducing the class CheckAndFix.
Validation and corrections of each record is performed at only one place.
Should improve code stability and maintenance.
- Review class naming of the invenio and harvester tools modules.
- Improve the UI related to the categories, harvester/controller and publication.
- New wizard EditAndInsert.
It can be run standalone or launched from the harvester report.
- Refactor the ux files to ease the buiding of a new database from scratch.
- Use the new callbacks INHIBIT_DELETE_UNDEF and INHIBIT_UPDATE_UNDEF.
- Redesing the lists and metrics interfaces as well as metric view.
- Remove obsolete controller toolbox. It is now replaced by standalone
scripts: export-to-csv, import-from-csv, fix-conference-dates,
fix-collaboration, fix-conference-url,fix-country, fix-defense,
fix-publication-url, fix-report-number, fix-submitted.
- The list of country is almost frozen by using the default list coming
from a geographical database (www.geonames.org).
Harvester can not add country anymore.
- Re-enforce rule for fields: collaborations, defense, conference_dates,
submitted and publications_url
- Add the graph reports.
0.8.7.2 (Sep 2014)
- Migrate to plugin_dbui 0.6.1.7.
- More robust harvester algorithms.
- Better coding of the check & Validate view.
0.8.7 (Jul 2014)
- Migrate to plugin_dbui 0.6.1.5
- Deploy the new functionality resetFields when duplicating publication.
The field status and origin are reset to their default value.
- The field origin is read only in the publication form.
- Add rules to Check & Validate: the teams and projects have to be defined.
- New application script static/app.js allowing to run the application
in debug mode using the dynamic loading of Ext JS. It is activated
using the URL /track_publications/admin?debug
0.8.6 (Jun 2014)
- Bugs fixed.
- Migrate to plugin_dbui 0.6.1.3
- Add and deploy the methods Record.host, oai and oai_url.
- Add the application property reg_institute.
- Check entries with the same value in the origin field.
- Redesign the harvester/check_validate views using inline javascript.
- Redesing the harvester/check_validate views returning LaTex document.
- Add the wizard compare_publications.
- Add the possibility to modify a record from the check_validate view.
0.8.5 (May 2014)
- Migrate to plugin_dbui 0.6.1.1 and web2py 2.9.5
- Define the length of each string field to garanty web2py compatibility.
- Use the controller plugin_dbui/about, documentation and versions.
- Add the field 'origin' in publications.
- Add the table 'application' for configuration parameters.
- Add the application properties authorize_user_login,
authorize_harvester_scan and havester_start_year.
- Add the logic to limit the year range to run harvesters.
- Add the logic to handle the field origin in harvesters.
- Add the login to inhibit user login usign application properties.
0.8.4 (Feb 2014)
- Migrate to plugin_dbui 0.6.0.11, Ext JS 4.2.1 and MathJax 2.0.3.
- Improve the ergonomie of the interface.
- Redesing the documentation page.
- This version is not backward compatible.
c6b881a
- Migrate to plugin_dbui 0.4.14.1
- Proceeding harvester logs publishers, volume and pages.
- Improved algorithm to determine conference location.
- The field section.sort_field is now actif.
- More robust algorithm to determine the publication year.
0.8.3 (Jul 2013)
- Migrate to plugin_dbui 0.4.13.1
- Add the module callbacks, check_tools and view_tools.
- More stringent tests in the "check and validate" procedure.
- Duplicate entries are reject on insert and look for during check.
Difference between duplicate publications are shown in
the "check and validate" report.
- Can't delete or update a publication marked OK.
- Can't delete a reference entry used by at least one publication.
- The wizard "check" can be ran by user and "check validate" by admin.
- Add the generic pdf converter to be used in view (view/tex2pdf.html).
- Pdf reports can be generated for "check and validate" and
"run harvester(s)" operations.
- Define default values for all string fields.
- Add the action compare and fix_nome in the toolbox.
0.8.2 (Apr 2013)
- Consolidation version.
- Migrate to plugin_dbui 0.4.12.1: replace local_import by the conventional
import statement, new syntax for the linked comboxes, and use the filter
CLEAN_SPACES.
- Bugs fixed and polish the user interface.
- Add constant to deal with migration flag and roles.
- Consolidate the authentification procedure.
- Improve the publication column template.
- Add the field category in the list selector.
- Check collaboration in Proceeding, Reports and Talks harvester.
- Rename the field / table "publishers" as "reviews" using label and
the french translation table (poor man approach).
- Deploy filters in the model and the invenio_tools.Record
- Remove the dot in the review abbreviation (CLEAN_PAPER_EDITOR)
- Review the documentaion of the python modules using epytext.
- All documantations have been moved to "static/docs".
- Add a leaf Help/documentations and remove the leaf database schema.
- Add the script buildVersion which is quite useful to build
epydoc documentation.
- First draft of a tool to find duplicate entries.
0.8.1 (Dec 2012)
- Migrate to plugin_dbui 0.4.10.1.
- New node CAS to manage user and their group.
- User and interface handle 3 groups None, user and admin.
- Merge the table diplomas and publications.
- Modify the metrics table by adding conditions and by removing tablename
- Add About and licence stuff.
- Simplify the interface using the teams/project relation ship.
- Polish the user role.
0.7.0 (Nov 2012)
- Migrate to plugin_dbui 0.4.9.7.
- Deploy the new class Selector.
- Deploy linked comboBox in selectors.
- New tree structure for the viewport.
- Add fields publisher, volume, id in the publication filter.
- Add tables axes, controllers and organisation.
- Add a wizard to check and validate records
- Add a wizard to run all harvesters in one go.
- Add a wizard to run a free harvester.
- Add the mode dry run for all harvester wizards.
0.6.0 (Oct 2012)
- Redesign the metric to use the axes approach.
- Remove obsolete code for lists and metrics reporting.
- Polish the user interface.
0.5.1 (Sept 2012)
- Consolidation and bugs fixed
- Myseed map the CPPM organisation
- Add a toolbox via the controller scripts
- Add a model of the MySQL database version 0.4.0.
It was use to migrate to the current version.
0.5.0 (Sept 2012)
- Bugs fixed
- Harvesters can run on INSPIREHEP store.
- New database schema with improved teams/projects axes.
- Improved version of the tools to generates list.
- Improved version of the class Record.
0.4.0 (July 2012)
- Review the logic of the harvester and the error messaging.
Harvester can be parameterised for a team, a project or both.
- Review the interface to enter an MARC XML record. It can be associated
for a team a project or both. It does not required the parameterisation
of an harvester.
- Add an helper tools to extract the list of authors from a string containing
author names and their affiliation.
- Increase the number of character allowed for the authors field.
- Redesign the tool to generate the list. It can be fully configure using
the table lists and sections.
0.3.2 (July 2012)
- Rename the table degrees as levels in order to run with MySQL.
- Add authentication procedure using tools provided by web2py.
- Connection to the database and authentication move in the access.py file.
- Sort the content of all tables (alphabetic, order of arrival, ...).
- Activate the Double click to start the RowEditor in update mode.
- Dedicated page to show software versions and database schema.
- Login via the viewport.
- Review default values in filter and selector.
0.2.1 (Jun 2012)
- Minor release
- ToolTip for all type of form
- Improve the French translation
0.2.0 (Jun 2012)
- First production release.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>CeCILL FREE SOFTWARE LICENSE AGREEMENT</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<style type="text/css">
h1.title {color: #008080; font-size: 200%; text-align: center}
h2 {color: #008080; font-size: 150%}
h3 {color: #008080; font-size: 140%}
h4 {color: #008080; font-size: 120%}
h2 {color: #008080; font-size: 140%}
h3 {color: #008080; font-size: 100%}
h4 {color: #008080; font-size: 100%}
h5 {color: #008080; font-size: 100%}
span.numbering {color: #008080}
span.definition {font-weight: bold}
div.version-subtitle {color: #008080; font-size: 100%; text-align: center}
div.version {font-style: italic}
div.footnote {font-size: 80%}
div.footnote {font-size: 80%;
border-top-style : solid;
border-top-width : 1px;
margin-top : 2em}
ins {text-decoration: underline; background: #AAFFA4}
div.added {text-decoration: underline; background: #AAFFA4}
del {text-decoration:line-through; background: #8F8F8F}
......@@ -22,6 +26,7 @@
<body>
<h1 class="title">CeCILL FREE SOFTWARE LICENSE AGREEMENT</h1>
<div class="version-subtitle">Version 2.1 dated 2013-06-21</div>
......@@ -55,7 +60,7 @@ CeCILL<sup><a href="#footnote1">1</a></sup>
license are:</p>
<p>Commissariat
à l'Energie Atomique - CEA, a public
à l'énergie atomique et aux énergies alternatives - CEA, a public
scientific, technical and industrial research establishment, having its
principal place of business at 25 rue Leblanc, immeuble Le Ponant D, 75015
Paris, France.</p>
......@@ -67,7 +72,7 @@ principal place of business at
3 rue Michel-Ange, 75794 Paris cedex 16, France.</p>
<p>Institut
National de Recherche en Informatique et en Automatique - INRIA,
National de Recherche en Informatique et en Automatique - Inria,
a public scientific and technological establishment, having its
principal place of business at Domaine de Voluceau, Rocquencourt, BP
105, 78153 Le Chesnay cedex, France.</p>
......@@ -88,7 +93,7 @@ distribution model.
</p>
<p>The
exercising of these rights is conditional upon certain obligations
exercising of this right is conditional upon certain obligations
for users so as to preserve this status
for all subsequent
redistributions.</p>
......@@ -132,6 +137,12 @@ Agreement may apply to any or all software for which the holder of
the economic rights decides to submit the use
thereof to its provisions.</p>
<p>Frequently asked questions can be
found on the official website of the CeCILL licenses family
(<a href="&gt;http://www.cecill.info/index.en.html"><tt>http://www.cecill.info/index.en.html</tt></a>)
for any necessary clarification.
</p>
</div>
<div class="article">
<h2> Article <span class="numbering">1 </span> - DEFINITIONS</h2>
......@@ -276,6 +287,24 @@ thereof to its provisions.</p>
</p>
<p class="definition"><span class="definition">GNU Affero GPL</span>:
means the GNU Affero General Public License version 3 or any subsequent
version, as published by the Free Software Foundation Inc.
</p>
<p class="definition"><span class="definition">EUPL</span>:
means the European Union Public License version 1.1 or any
subsequent version, as published by the European Commission.
</p>
<p class="definition"><span class="definition">Parties</span>:
mean both the Licensee and the Licensor.
......@@ -486,13 +515,17 @@ thereof to its provisions.</p>
<p>and
that, in the event that only the Object Code
of the Software is redistributed, the Licensee
allows future Licensees unhindered access
to the
allows effective access to the
full Source Code of the Software
by indicating how to access it,
it being
understood that the additional cost of acquiring the Source
Code shall not exceed the cost of transferring the data.
for a period of at least three years from the distribution of
the Software,
it being
understood that the additional
acquisition cost of
the Source Code shall not exceed the cost of
the data transfer.
</p>
</div>
......@@ -525,16 +558,21 @@ thereof to its provisions.</p>
warranty and liability as set forth in Articles 8 and 9,</p>
</li>
</ol>
<p>and
that, in the event that only the
<p>and, in the event that only the
object code of the Modified Software
is redistributed, the Licensee allows future Licensees
unhindered access to the
full source code of the Modified Software
by indicating how to access it,
it being understood that the additional cost of acquiring the source
code shall not exceed the cost of transferring the data.
is redistributed,
</p>
<ol start="3">
<li>
<p>a note stating the conditions of effective
access to the full source code of the Modified Software
for a period of at least three years from the distribution
of the Modified Software,
it being understood that the additional acquisition cost of
the source code shall not exceed the cost of
the data transfer.</p>
</li>
</ol>
......@@ -569,17 +607,19 @@ thereof to its provisions.</p>
<h4>
<a name="compatibility"></a><span class="numbering">5.3.4 </span>COMPATIBILITY WITH THE GNU GPL</h4>
<a name="compatibility"></a><span class="numbering">5.3.4 </span>COMPATIBILITY WITH OTHER LICENSES</h4>
<p> The Licensee can include a code that is subject to the provisions
of one of the versions of the GNU GPL in the Modified or unmodified
of one of the versions of the GNU GPL, GNU Affero GPL
and/or EUPL in the Modified or unmodified
Software, and distribute that entire code under the terms of the
same version of the GNU GPL.</p>
same version of the GNU GPL, GNU Affero GPL and/or EUPL.</p>
<p> The Licensee can include the Modified or unmodified Software in a
code that is subject to the provisions of one of the versions of
the GNU GPL, and distribute that entire code under the terms of
the same version of the GNU GPL.
the GNU GPL, GNU Affero GPL and/or EUPL and distribute
that entire code under the terms of the same version of
the GNU GPL, GNU Affero GPL and/or EUPL.
</p>
......@@ -668,8 +708,8 @@ thereof to its provisions.</p>
<div class="subclause">
<p>The
Licensee undertakes not to directly or indirectly infringe
the intellectual property rights of the Holder and/or Contributors
on the Software
the intellectual property rights on the Software of the Holder
and/or Contributors,
and to take, where applicable, vis-à-vis its staff, any and
all measures required to ensure respect of
said intellectual
......@@ -826,8 +866,8 @@ thereof to its provisions.</p>
instituted in respect of the use, modification and redistribution of
the Software. Nevertheless, should such proceedings be instituted
against the Licensee, the Licensor shall provide it with technical
and legal assistance for its defense. Such technical and legal
assistance shall be decided on a case-by-case basis
and legal expertise for its defense. Such technical and legal
expertise shall be decided on a case-by-case basis
between the
relevant Licensor and the Licensee pursuant to a memorandum of
understanding. The Licensor disclaims any and
......@@ -1007,6 +1047,5 @@ thereof to its provisions.</p>
</a></p>
</div>
<div class="version">Version 2.0 dated 2006-09-05.</div>
</body>
</html>
# LIMBRA
It is a tool to inventory the scientific output of an organisation
structured by teams and projects. It allows to extract bibliometric information
like lists and metrics.
LIMBRA is the acronym for LIsts and Metrics BibliometRic Automatised.
It is in used since 2012 in CNRS/IN2P3.
## Features
* Collect publications signed by members of the organisation.
* Simplify the collect of data as far as possible. Publications
can be entered either by hand or by harvesting the public data stores
[cds.cern.ch](http://cds.cern.ch/) or [inspihep.net](http://inspirehep.net/).
* Lists and metrics can be classified by team, project, category of
publications, scientific domains and by years.
* Lists, can be extracted in several format: bibtex, latex, odt, pdf.
Metrics can be exported in csv, latex and pdf while graphs in png and pdf.
* Only medata data are stored, not documents.
* It is a web-based application running via a web browser. It is independent of
operating systems and database flavours.
* Can be configured from A to Z by the user.
* Loggin mechanism is provided and several roles defined.
* Written in [python](https://www.python.org/) and javascript,
it relies on several third party softwares:
[extjs](https://www.sencha.com/products/extjs/),
[jsduck](https://github.com/senchalabs/jsduck),
[mathjax](https://www.mathjax.org/),
[matplotlib](http://matplotlib.org/),
[pandas](http://pandas.pydata.org/),
[sphinx](http://www.sphinx-doc.org/en/stable/)
and [web2py](http://www.web2py.com/).
## Installation
## Documentation
* User documentation in french (
[html](https://marprod.in2p3.fr/limbra_cppm/static/docs/user/index.html),
[pdf](https://marprod.in2p3.fr/limbra_cppm/static/docs/pdf/limbra_user.pdf))
## Changelog
Consult the [Changelog](CHANGELOG) page for fixes and enhancements of
each version.
## Licenec
Copyright Renaud Le Gac CNRS/IN2P3, 2010-2016.
Distributed under the terms of the
[CeCILL](http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.html) license,
LIMBRA is free and open source software.
0.9.5.3
\ No newline at end of file
0.9.5.4
\ No newline at end of file
This diff is collapsed.
......@@ -15,6 +15,29 @@ def guides():
return dict()
def limbra():
"""Inform user that URLs have changed after the renaming of
track_publications as limbra.
"""
host = request.env.http_host
path = request.env.web2py_original_uri
app = path.split("/")[1]
old = "https://%s/%s" % (host, app)
if app == "track_publications":
app = "track_publications_cppm"
app = app.replace("test_publications", "test_limbra")
app = app.replace("track_publications", "limbra")
new = "https://%s/%s" % (host, app)
return dict(old=old, new=new)
def user():
"""exposes:
http://..../[app]/default/user/login
......
......@@ -216,7 +216,7 @@ def edit_insert():
try:
check.country(record)
check.conference_date(record)
check.conference_date(record, selector.host)
except CheckException:
pass
......
......@@ -4,8 +4,8 @@
import json
import re
from gluon.dal import smart_query
from plugin_dbui import inline_alert, Selector
from pydal.helpers.methods import smart_query
from reporting_tools import get_converter, repr_team_project
MSG_NO_METRIC = "Please select a metric...."
......
......@@ -79,7 +79,7 @@ master_doc = 'index'
# General information about the project.
now = datetime.now()
project = u'track_publications API'
project = u'limbra API'
copyright = u'2012-%s, R. Le Gac, licensed under CeCILL' % now.year
author = u'R. Le Gac'
......@@ -204,7 +204,7 @@ html_theme = 'sphinxdoc'
# html_file_suffix = None
# Output file base name for HTML help builder.
htmlhelp_basename = 'track_publications_api_doc'
htmlhelp_basename = 'limbra_api_doc'
# -- Options for LaTeX output --------------------------------------------------
......@@ -224,8 +224,8 @@ latex_elements = {
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
(master_doc,
'track_publications_api.tex',
u'track\\_publications API',
'limbra_api.tex',
u'LIMBRA API',
u'R. Le Gac',
'manual'),
]
......@@ -256,7 +256,7 @@ latex_documents = [
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
(mas