diff --git a/THANKS b/THANKS index bf9c341fb..4303e5c6b 100644 --- a/THANKS +++ b/THANKS @@ -1,208 +1,212 @@ Invenio THANKS ============== Several people besides the core Invenio Development Team contributed to the project: - Thierry Thomas <thierry@FreeBSD.org> Patches for compiling old CDSware 0.3.x sources on FreeBSD. - Guido Pelzer <guido.pelzer@web.de> Contributions to the German translation. German stopword list. - Valerio Gracco <valerio.gracco@cern.ch> Contributions to the Italian translation. - Tullio Basaglia <tullio.basaglia@cern.ch> Contributions to the Italian translation. - Flavio C. Coelho <fccoelho@fiocruz.br> Contributions to the Portuguese translation. - Lyuba Vasilevskaya <lyubov.vassilevskaya@cern.ch> Contributions to the Russian translation. - Maria Gomez Marti <maria.gomez.marti@cern.ch> Contributions to the Spanish translation. - Magaly Bascones Dominguez <magaly.bascones.dominguez@cern.ch> Contributions to the Spanish translation. - Urban Andersson <urban.andersson@hb.se> Contributions to the Swedish translation. - Eric Grand <eric.grand@rero.ch> Contributions to the French translation. - Theodoropoulos Theodoros <theod@lib.auth.gr> Contributions to the Greek translation, Greek stopword list, XML RefWorks output format, Google Analytics documentation update, BibConvert target/source CLI flag description fix. - Vasyl Ostrovskyi <vo@imath.kiev.ua> Contributions to the Ukrainian translation. - Ferran Jorba <Ferran.Jorba@uab.cat> Contributions to the Catalan and Spanish translations. Cleanup of the old PHP-based BibFormat Admin Guide. Several minor patches. - Beatriu Piera <Beatriz.Piera@uab.es> Translation of the Search Guide into Catalan and Spanish. - Anonymous contributor (name withheld by request) Contributions to the Japanese translation. - Anonymous contributor (name withheld by request) Contributions to the Spanish translation. - Alen Vodopijevec <alen@irb.hr> Contributions to the Croatian translation. - Jasna Marković <jmarkov@irb.hr> Contributions to the Croatian translation. - Kam-ming Ku <kmku@hkusua.hku.hk> Contributions to the Chinese translations (zh_CN, zh_TW). - Benedikt Koeppel <be.public@gmail.com> Contributions to the German translation. - Toru Tsuboyama <toru.tsuboyama@kek.jp> Contributions to the Japanese translation. - Mike Marino <mmarino@gmail.com> Several minor patches and suggestions. - Zbigniew Szklarz <zszklarz@student.agh.edu.pl> Contributions to the Polish translation. - Iaroslav Gaponenko <adrahil@gmail.com> Contributions to the Russian translation. - Yana Osborne <ianna.osborne@cern.ch> Contributions to the Russian translation. - Zbigniew Leonowicz <leonowicz@ieee.org> Contributions to the Polish translation. - Makiko Matsumoto <maki.matsumoto@gmail.com> and Takao Ishigaki Contributions to the Japanese translation. - Eva Papp <Eva.Papp@cern.ch> Contributions to the Hungarian translation. - Nino Jejelava <nino.jejelava@gmail.com> Contributions to the Georgian translation. - Cristian Bacchi <cristian.bacchi@gmail.com> Improvements to the browse interface. - Genis Musulmanbekov <genis@jinr.ru> Contributions to the Russian translation. - Andrey Tremba <metandrey@gmail.com> Contributions to the Russian translation. - Cornelia Plott <c.plott@fz-juelich.de> Contributions to the German translation. - Johnny Mariéthoz <johnny.mariethoz@rero.ch> Patch to improve BibRecDocs argument checking. - Alexander Wagner <a.wagner@fz-juelich.de> Contributions to the German translation. - Miguel Martín <miguelm@unizar.es> Patch to fix traceback in get_collection_reclist() occurring for misspelled collection names in access control rules. - Stefan Hesselbach <s.hesselbach@gsi.de> Patch for OAI harvesting via HTTP proxy. - Bessem Amira <bessem.amira@cnudst.rnrt.tn> Contributions to the Arabic translation. - Kevin M. Flannery <flannery@fnal.gov> Patch for WebSubmit's Move_Photos_to_Storage. - Thomas McCauley <thomas.mccauley@cern.ch> Improvements to Invenio Connector. The Flask SSLify plugin was adapted from the original version developed by Kenneth Reitz <_@kennethreitz.com>. <https://github.com/kennethreitz/flask-sslify> The URL handler was inspired by the Quixote Web Framework which is ``Copyright (c) 2004 Corporation for National Research Initiatives; All Rights Reserved''. <http://www.quixote.ca/> The session handler was adapted from the mod_python session implementation. <http://www.modpython.org/> Javascript Quicktags scripts from Alex King are used to provide additional capabilities to the edition of BibFormat templates through the web admin interface. <http://www.alexking.org> The indexer engine uses the Martin Porter Stemming Algorithm and its Vivake Gupta free Python implementation. <http://tartarus.org/~martin/PorterStemmer/> The CSS style for rounded corners box used in detailed record pages adapted from Francky Lleyneman liquidcorners CSS. <http://home.tiscali.nl/developerscorner/liquidcorners/liquidcorners.htm> The NASA_Subjects.rdf files has been retrieved from the American National Aeronautics and Space Administration (NASA) who kindly provide this for free re-use. <http://nasataxonomy.jpl.nasa.gov/fordevelopers/> The tiger test picure used in automated demo picture submission was converted from Ghostscript's 'tiger.eps'. <http://www.gnu.org/software/ghostscript/> Some icon images were taken from (i) the Silk icon set, (ii) the Function icon set, (iii) the activity indicator icon, and (iv) the Open Icon Libray. <http://www.famfamfam.com/lab/icons/silk/> <http://wefunction.com/2008/07/function-free-icon-set/> <http://www.badeziner.com/2008/05/04/120-free-ajax-activity-indicator-gif-icons/> <http://openiconlibrary.sourceforge.net/gallery2/> The unoconv.py script has been adapted from UNOCONV by Dag Wieers. <http://dag.wieers.com/home-made/unoconv/> PDFA_def.ps has been adapted from the GPL distribution of GhostScript. <http://ghostscript.com/> The ISOCoatedsb.icc ICC profile has been retrieved from the European Color Initiative. <http://www.eci.org/> The PEP8 conformance checking script (pep8.py) was written by Johann C. Rocholl <johann@browsershots.org>. The pep8.py version included with Invenio was downloaded from <http://svn.browsershots.org/trunk/devtools/pep8/pep8.py> on 2009-06-14. The logicutils library was originally authored by Peter Norvig <peter.norvig@google.com> and was taken from <http://code.google.com/p/aima-python/> on 2010-05-20 and later expanded to fit Invenio needs. The git-version-gen script was taken from gnulib 20100704+stable-1. <http://www.gnu.org/software/gnulib/> The LaTeX-to-Unicode translation table was compiled from: FX, <http://stackoverflow.com/questions/4578912/replace-all-accented-characters-by-their-latex-equivalent> Lea Wiemann <LeWiemann@gmail.com>, <http://docutils.sourceforge.net/docutils/writers/newlatex2e/unicode_map.py> The scientificchar plugin for the CKEditor was adapted from the specialchar plugin from Frederico Knabben. <http://ckeditor.com/> The oai2.xsl.v1.0 OAI to HTML XSLT Style Sheet was taken from EPrints. <http://www.eprints.org/software/xslt.php> +The xmlDict.py code is authored by Duncan McGreggor and is licensed +under PSF license. It was taken from +<http://code.activestate.com/recipes/410469/>. + - end of file - diff --git a/modules/webdeposit/lib/xmlDict.py b/modules/webdeposit/lib/xmlDict.py new file mode 100644 index 000000000..9d09042a8 --- /dev/null +++ b/modules/webdeposit/lib/xmlDict.py @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- +# +## The following code is authored by Duncan McGreggor and is licensed +## under PSF license. It was taken from +## <http://code.activestate.com/recipes/410469/>. + +import xml.etree.ElementTree as ElementTree + +class XmlListConfig(list): + def __init__(self, aList): + for element in aList: + if element: + # treat like dict + if len(element) == 1 or element[0].tag != element[1].tag: + self.append(XmlDictConfig(element)) + # treat like list + elif element[0].tag == element[1].tag: + self.append(XmlListConfig(element)) + elif element.text: + text = element.text.strip() + if text: + self.append(text) + + +class XmlDictConfig(dict): + ''' + Example usage: + + >>> tree = ElementTree.parse('your_file.xml') + >>> root = tree.getroot() + >>> xmldict = XmlDictConfig(root) + + Or, if you want to use an XML string: + + >>> root = ElementTree.XML(xml_string) + >>> xmldict = XmlDictConfig(root) + + And then use xmldict for what it is... a dict. + ''' + def __init__(self, parent_element): + if parent_element.items(): + self.update(dict(parent_element.items())) + for element in parent_element: + if element: + # treat like dict - we assume that if the first two tags + # in a series are different, then they are all different. + if len(element) == 1 or element[0].tag != element[1].tag: + aDict = XmlDictConfig(element) + # treat like list - we assume that if the first two tags + # in a series are the same, then the rest are the same. + else: + # here, we put the list in dictionary; the key is the + # tag name the list elements all share in common, and + # the value is the list itself + aDict = {element[0].tag: XmlListConfig(element)} + # if the tag has attributes, add those to the dict + if element.items(): + aDict.update(dict(element.items())) + self.update({element.tag: aDict}) + # this assumes that if you've got an attribute in a tag, + # you won't be having any text. This may or may not be a + # good idea -- time will tell. It works for the way we are + # currently doing XML configuration files... + elif element.items(): + self.update({element.tag: dict(element.items())}) + # finally, if there are no child tags and no attributes, extract + # the text + else: + self.update({element.tag: element.text})