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

Merge branch 'master' into 'production'

Release 0.9.5

* 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.

See merge request !55
parents 1f8fe830 f238170f
......@@ -12,7 +12,6 @@ cron/
databases
databases*/
errors/
latex/
private/
sessions/
uploads/
......@@ -24,5 +23,6 @@ static/plugin_dbui
static/plugin_extjs
static/plugin_mathjax
static/track_publications*.js
tmp_build/
views/plugin_dbui
controllers/plugin_dbui.py
......@@ -243,10 +243,10 @@ def harvester():
collection.append("(a %s)" % " or ".join(vars.people))
if automaton == "articles":
collection.append("tp p and not tc c")
collection.append("tc p and not tc c")
elif automaton == "proceedings":
collection.append("tp p and tc c")
collection.append("tc p and tc c")
values.collections = "find %s" % " and ".join(collection)
......
......@@ -2,7 +2,7 @@
.. _harvester_collection_inspirehep:
les collections dan l'entrepôts inspirehep.net
les collections dans l'entrepôts inspirehep.net
-----------------------------------------------
L'entrepôt *inspirehep.net* est très différent de *cds.cern.ch*, car il
......@@ -11,7 +11,7 @@ scientifiques, notamment ceux étudiés à l'IN2P3.
Ces documents peuvent être publiés par une collaboration internationale, une
équippe, un théoriciens, *etc*.
Dans *inspirehet.net*, seul les catégories de publication suivantes sont
Dans *inspirehet.net*, les catégories de publication suivantes sont
moissonnables :
* articles
......@@ -88,3 +88,21 @@ ALEPH, ATLAS, ALICE, CMS, ...
+----------------------------------------+----------------------+
| ``find cn lhcb and tc p and tc c`` | actes de conférences |
+----------------------------------------+----------------------+
Définir une collection à l'aide de mot clé, ouvre d'autres possibilitées.
Par example, pour scanner les notes de conférence de la collaboration ATLAS:
.. line-block::
``find r atlas-conf-*``
Les mots clés sont définis à l'adresse:
http://inspirehep.net/info/hep/search-tips#tc
.. attention::
Il est déconseillé d'utiliser les mots clés
*data*, *year* ou *aff*. Ils sont pris en charge par
l'application.
.. include:: hyperlinks.txt
.. _harvester_expert:
Configuration d'un moissonneur -- le mode expert
------------------------------------------------
La configuration des moissonneurs est accessible à partir
du panneau de navigation rapide, en suivant le chemin :
.. index::
pair: Configurer les moissonneurs; moissonneurs
.. line-block::
``Configurer les moissonneurs > moissonneurs``
.. _fig-form-harvester:
.. figure:: images/form-harvester.png
:align: center
:width: 50%
Le formulaire de saisie pour configurer un moissonneur.
Celui-ci recherche les articles publiés par la collaboration D0 dans
l'entrepôt *inspirehep.net*.
L'ajout d'un moissonneur via le *mode expert* ouvre le formulaire de saisie
montré sur la :numref:`fig-form-harvester`.
Il a cinq champs :
* **projet**
choisir une valeur parmi les projets définis.
* **automate**
choisir un automate parmis les valeurs proposées.
Il détermine la catégorie de notice qui sera recherchée dans l'entrepôt
Il y en a sept :
#. ``articles``
#. ``notes``
#. ``preprint``
#. ``proceeding``
#. ``reports``
#. ``talks``
#. ``thesis``
* **entrepôt**
choisir un entrepôt permis les valeurs proposées.
* **collections**
ce champ définit la(es) collection(s) de l'entrepôt qui vont être
scannée(s). La définition d'une collection dépend de l'entrepôt
et de la catégorie des notices.
.. important::
Les différentes collections sont
détaillées dans les annexes : :ref:`harvester_collection_cds` et
:ref:`harvester_collection_inspirehep`.
* **code**
c'est le code AERES qui sera affecté aux notices trouvées. Les valeurs
possibles dépendent du choix de l'automate logiciel.
.. note::
Il est possible de définir deux moissonneurs. Le premier recherche, par
exemple, les articles de la collaboration LHCb dans l'entrepôt
*cds.cern.ch* et le second dans l'entrepôt *inspirehep.net*.
.. attention::
It n'est pas posssible de définir deux moissoneurs quand le premier
recherche, par exemple, les articles de LHCb de catégorie ``ACL`` et
le second ceux de catégorie ``ACLN``.
......@@ -92,59 +92,32 @@ du panneau de navigation rapide, en suivant le chemin :
``Configurer les moissonneurs > moissonneurs``
.. _fig-form-harvester:
Dans la table des moissonneurs, l'item du menu contextuel *Ajouter* a été
scindé en deux, comme le montre la :numref:`fig-wizard-harvester`.
.. figure:: images/form-harvester.png
.. _fig-wizard-harvester:
.. figure:: images/wizard-harvester.png
:align: center
:width: 50%
Le formulaire de saisie pour configurer un moissonneur.
Celui-ci recherche les articles publiés par la collaboration D0 dans
l'entrepôt *inspirehep.net*.
Le formulaire de saisie est montré sur la :numref:`fig-form-harvester`.
Il a cinq champs :
* **projet**
choisir une valeur parmi les projets définis.
* **automate**
choisir un automate parmis les valeurs proposées.
Il détermine la catégorie de notice qui sera recherchée dans l'entrepôt
Il y en a sept :
#. ``articles``
#. ``notes``
#. ``preprint``
#. ``proceeding``
#. ``reports``
#. ``talks``
#. ``thesis``
* **entrepôt**
choisir un entrepôt permis les valeurs proposées.
* **collections**
ce champ définit la(es) collection(s) de l'entrepôt qui vont être
scannée(s). La définition d'une collection dépend de l'entrepôt
et de la catégorie des notices.
.. important::
Les différentes collections sont
détaillées dans les annexes : :ref:`harvester_collection_cds` et
:ref:`harvester_collection_inspirehep`.
* **code**
c'est le code AERES qui sera affecté aux notices trouvées. Les valeurs
possibles dépendent du choix de l'automate logiciel.
Le menu contextuel de la table moissoneurs permet de lancer
l'assitant de configuration (mode simplifié).
.. note::
Il est possible de définir deux moissonneurs. Le premier recherche, par
exemple, les articles de la collaboration LHCb dans l'entrepôt
*cds.cern.ch* et le second dans l'entrepôt *inspirehep.net*.
Le *mode simplifié* lance un assistant qui permet de configurer
les moissonneurs les plus courant. La première page de l'assitant est
montrée sur la :numref:`fig-wizard-harvester-page1`.
.. attention::
It n'est pas posssible de définir deux moissoneurs quand le premier
recherche, par exemple, les articles de LHCb de catégorie ``ACL`` et
le second ceux de catégorie ``ACLN``.
.. _fig-wizard-harvester-page1:
.. figure:: images/wizard-harvester-page1.png
:align: center
:width: 50%
La première page de l'assistant de configuration des moissonneurs.
Le *mode expert* donne accès à l'ensemble des paramètres de configuration
des moissonneurs. Ils sont détaillés dans l'Annexe :ref:`harvester_expert`.
Exécuter un moissonneur
^^^^^^^^^^^^^^^^^^^^^^^
......
......@@ -19,12 +19,16 @@
.. _LaTeX: http://www.latex-project.org/
.. _LibreOffice: http://fr.libreoffice.org/
.. _MARC: http://www.loc.gov/marc/
.. _OpenDocument: https://fr.wikipedia.org/wiki/OpenDocument
.. _python: https://www.python.org/
.. _reStructured: http://sphinx-doc.org/rest.html
.. _sphinx: http://sphinx-doc.org/
.. _XML: http://fr.wikipedia.org/wiki/Extensible_Markup_Language
.. _XML: https://fr.wikipedia.org/wiki/Extensible_Markup_Language
......@@ -33,6 +33,7 @@ Annexe
application_identifier
institute_identifier
category_aeres
harvester_expert
harvester_processing
harvester_collection_cds
harvester_collection_inspirehep
......
......@@ -98,16 +98,19 @@ cette exécution. Il comprend sept conditions :
* **Liste**
la liste prédéfinie que l'on veut fabriquer.
* **Format**
la liste peut être exportée au format BibTex, CSV, HTML, LaTeX ou PDF.
.. note::
le choix de la *liste* et de l'*année* sont les
conditions les plus importantes.
la liste peut être exportée au format BibTex, LaTeX, ODT ou PDF.
Pour lancer la fabrication de la liste cliquer sur le bouton ``Go``.
Le résultat apparaît dans le panneau central quand le format HTML est sélectionné.
.. note::
Pour mettre en page une liste avec un logiciel de traitement de texte
comme LibreOffice_ ou Microsoft Word, il suffit
d'exporter la liste au format OpenDocument_ ODT et
d'ouvrir le fichier avec le logiciel de traitement de texte.
Noter que dans ce cas de figure, les équations ne sont pas interprétées.
Créer une liste
^^^^^^^^^^^^^^^
......
......@@ -88,7 +88,7 @@
"Can't delete this record since several publications refer to it.": 'Impossible de détruire cet enregistrement car des publications lui font référence.',
"Can't insert the article.": 'Impossible de créer cet article.',
"Can't insert the harvester.": 'Impossible de créer ce moissonneur.',
"Can't insert the harvester. ": "Impossible de créer ce moissonneur. ",
"Can't insert the harvester. ": 'Impossible de créer ce moissonneur. ',
"Can't insert the report.": 'Impossible de créer ce rapport.',
"Can't insert the talk/proceeding.": 'Impossible de créer cet acte ou présentation.',
"Can't updated a publication marked OK.": "Impossible d'actualiser une publication marquée OK.",
......@@ -633,6 +633,8 @@
'The <i>record id</i> is not well formed.': 'Le <i>record id</i> est mal formé.',
'The category is used twice !': 'La catégorie est utilisée deux fois !',
'The field "%s" is missing ...': 'Le champ "%s" est manquant ...',
'The generation of the ODT file failed:<br><br>': 'La génération du fichier ODT a échoué :<br><br>',
'The generation of the PDF file failed.<br>Please, check the LaTeX file.': 'La génération du fichier PDF a échoué.<br>Vérifier le fichier LaTeX...',
'The graph can be rendered as line or stacked chart. The latter is used when the stacked fields are defined. ': 'The graph can be rendered as line or stacked chart. The latter is used when the stacked fields are defined. ',
'The identifier of the record in the invenio store': 'The identifier of the record in the invenio store',
'The institute authors contains the team name?': "Le champ, autheurs du laboratoire, contiens le nom de l'équipe ?",
......
......@@ -2,10 +2,11 @@
HEAD
0.9.4 (Dec 2015)
- Require plugin_dbui 0.8.0 and libreoffice.
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
......
......@@ -35,18 +35,43 @@
fi.close()
#
# convert the HTML in ODT file
# convert the HTML in ODT file using libreoffice
#
cmd = ["libreoffice", "--headless", "--convert-to", "odt", fhtml]
call(cmd, stdout=TemporaryFile())
fi_tmp = TemporaryFile()
# create the virtual X11 environment on the server
if os.path.exists('/usr/bin/Xvfb'):
cmd = "Xvbf :1 -screen 0 800x600x8 & "
cmd += "libreoffice --nologo --headless --invisible --display :1.0 --convert-to odt "
cmd += fhtml
call(cmd, stdout=fi_tmp, shell=True)
# development area in which X11 is running
else:
cmd = ["libreoffice", "--headless", "--convert-to", "odt", fhtml]
call(cmd, stdout=fi_tmp)
pass
fodt = '%s.odt' % froot
fi = open(fodt, 'rb')
sodt = fi.read()
fi.close()
if os.path.exists(fodt):
fi = open(fodt, 'rb')
sodt = fi.read()
fi.close()
s64 = base64.b64encode(sodt)
else:
call("rm -f %s.*" % froot, shell=True)
os.chdir(cwd)
fi_tmp.seek(0)
msg = T("The generation of the ODT file failed:<br><br>")
msg += fi_tmp.read()
fi_tmp.close()
raise HTTP(500, msg)
pass
#
# clean
......@@ -68,5 +93,6 @@
response.headers['Content-Type']='application/vnd.oasis.opendocument.text'
response.headers['Content-Disposition'] = 'attachment;filename="list.odt"'
s64 = base64.b64encode(sodt)
response.write(s64, escape=False)
}}
\ No newline at end of file
{{
#--------------------------------------------------------------------------
#
# Converte to transform a tex file generate by a view as a pdf file
# Convert latex file into pdf
#
#--------------------------------------------------------------------------
import base64
......@@ -16,8 +16,7 @@
# Get the latex string generate by the latex view
# and remove it from the response object
#
latex = response.body.getvalue()
response.body = cStringIO.StringIO()
slatex = response.body.getvalue()
#
# go to the private directory and create a latex file
......@@ -32,38 +31,45 @@
os.chdir(wd)
pass
fn = str(uuid4())
fi = open('%s.tex' % fn, 'wb')
fi.write(latex)
froot = str(uuid4())
ftex = '%s.tex' % froot
fi = open(ftex, 'wb')
fi.write(slatex)
fi.close()
#
# Launch a subprocess to convert the latex file into pdf
#
cmd = ['pdflatex', '-interaction', 'nonstopmode', '%s.tex' % fn]
cmd = ['pdflatex', '-interaction', 'nonstopmode', ftex]
call(cmd, stdout=TemporaryFile())
#
# copy the pdf into a base64 string
#
fn_pdf = '%s.pdf' % fn
if os.path.exists(fn_pdf):
fi = open(fn_pdf, 'rb')
fpdf = '%s.pdf' % froot
if os.path.exists(fpdf):
fi = open(fpdf, 'rb')
data = fi.read()
fi.close()
else:
data = "\nThe generation of the PDF file failed."
data += "\nPlease, check the LaTeX file."
call("rm -f %s.*" % froot, shell=True)
msg = "The generation of the PDF file failed.<br>"
msg += "Please, check the LaTeX file."
os.chdir(cwd)
raise HTTP(500, T(msg))
pass
s64 = base64.b64encode(data)
#
# cleaning
#
for ext in ('aux', 'log', 'out', 'pdf', 'tex'):
f = '%s.%s' % (fn, ext)
f = '%s.%s' % (froot, ext)
if os.path.exists(f):
os.remove(f)
pass
......@@ -75,5 +81,9 @@
# Prepare the response
#
response.headers['Content-Type']='application/pdf'
response.body = cStringIO.StringIO()
s64 = base64.b64encode(data)
response.write(s64, escape=False)
}}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment