diff --git a/AUTHORS b/AUTHORS index fe3125b4f..ff03370a9 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,387 +1,387 @@ Invenio AUTHORS =============== Invenio is being co-developed by an international collaboration comprising institutes such as CERN, CfA, DESY, EPFL, FNAL, SLAC. The CERN development team currently consists of: - Jean-Yves Le Meur <jean-yves.le.meur@cern.ch> CERN Digital Library Services team leader. - Tibor Simko <tibor.simko@cern.ch> CERN Digital Library Technology team leader. Head Developer of Invenio. General system architecture, release management. WebSearch, BibIndex, BibSched, WebStat, WebStyle, WebSession, WebHelp, and more. - Jerome Caffaro <jerome.caffaro@cern.ch> BibFormat, redesign and rewrite in Python. BibConvert XML-oriented mode. OAI harvester improvements. Improvements to BibEdit. WebDoc tool. WebJournal refactoring and rewrite. WebComment rounds and threads. WebSubmit asynchronous upload support. Improvements to numerous modules. - Samuele Kaplun <samuele.kaplun@cern.ch> Authentication and user preferences rewrite and improvements. Firewall-like access control RBAC system. Fulltext file management rewrite and upload feature. Intbitset Python C extension for the indexer. Improvents to the task scheduler and session hander. Improvements to numerous modules. - Ludmila Marian <ludmila.marian@gmail.com> Citerank family of ranking methods. Fixes to numerous modules. - Jaime Garcia Llopis <jaime.garcia.llopis@cern.ch> Improvements to the BibCirculation module. - Flavio Costa <flavio.costa@cern.ch> Contributions to the Italian translation. - Jiri Kuncar <jiri.kuncar@cern.ch> - Fix for demo site installation. Contributions to the Czech - translation. + General system architecture of Invenio 2.0. Contributions to + the Czech translation. - Esteban J. G. Gabancho <esteban.jose.garcia.gabancho@cern.ch> Initial release of WebApiKey, enhancements for WebSubmit. - Lars Holm Nielsen <lars.holm.nielsen@cern.ch> Initial release of Invenio Upgrader and jsonutils; patches for pluginutils, - Patrick Glauner <patrick.oliver.glauner@cern.ch> Cleanup of SQL queries for several modules. - Raquel Jimenez Encinar <raquel.jimenez.encinar@cern.ch> Errorlib refactoring, improvements to search UI, discussion tab, merged record redirect, adaptation to new web test framework. - Grzegorz Szpura <grzegorz.szpura@cern.ch> Better browsing of fuzzy indexes. - Thorsten Schwander <thorsten.schwander@gmail.com> Improvements to dbdump. - Jan Aage Lavik <jan.age.lavik@cern.ch> Improvements to BibMatch with remote matching capabilities, improvements to plot extractor, improvements to harvesting and other small fixes. - Piotr Praczyk <piotr.praczyk@gmail.com> OAI harvesting from arXiv. Test harvesting interface, for OAIHarvest. Record comparison library functions, for BibRecord. Numerous improvements to BibEdit, e.g. holding pen, copy/paste, undo/redo. - Samuele Carli <samuele.carli@cern.ch> Initial implementation of BibAuthorID module, with Henning Weiler. Fixes for basket export facility and adding external items to baskets. - Alessio Deiana <alessio.deiana@cern.ch> Fix for BibFormat element initialisation. Improvements to data cacher and cite summary. - Wojciech Ziolek <wojciech.ziolek@cern.ch> Fixes for OAI holding pen facility, Strftime improvements for dateutils. - Sebastian Witowski <sebastian.witowski@cern.ch> Improvements to multi-record editor. - Laura Rueda <laura.rueda@cern.ch> Mechanize compatibility for Invenio Connector. - Annette Holtkamp <annette.holtkamp@cern.ch> Updates to `Howto MARC' guide. - Jocelyne Jerdelet <jocelyne.jerdelet@cern.ch> Updates to `Howto MARC' guide. The EPFL development team currently consists of: - Gregory Favre <gregory.favre@cern.ch> Rewrite of WebBasket. WebMessage. Improvements to WebComment. Other contributions and improvements. The SLAC development team currently consists of: - Mike Sullivan <sul@slac.stanford.edu> Improvements to author pages. - Eduardo Benavidez <eduardo.benavidez@gmail.com> Improvements to BibCatalog. The Harvard-Smithsonian Center for Astrophysics development team currently consists of: - Alberto Accomazzi <aaccomazzi@cfa.harvard.edu> Team leader. - Giovanni Di Milia <gdimilia@cfa.harvard.edu> Recognition of /record/sysno URLs, ADS formatting. - Jay Luker <lbjay@reallywow.com> Improvements to the emergency notification sending facility. - Roman Chyla <roman.chyla@cern.ch> WSGI handler accepts UTF-8 strings. Many former team members (mostly CERN staff and fellows, technical students, diploma students, summer students) contributed to the project since 2002. In an approximately decreasing chronological order: - Daniel Stanculescu <daniel.stanculescu@cern.ch> Improvements to Unicode treatment for textutils. - Vasanth Venkatraman <vasanth.venkatraman@cern.ch> Improvements to BibUpload version treatment, monotask and sequence tasks for BibSched. - Peter Halliday <phalliday@cornell.edu> Configurable /record URL name space, improvements to dbquery. - Chris Montarbaud <christiane.montarbaud@cern.ch> Multimedia and photo management. - Joe Blaylock <jrbl@slac.stanford.edu> Rewrite of SPIRES query syntax parser, support for nested parenthesis for WebSearch, fuzzy author name tokenizer, enrichment of author pages with h-index. - Benoit Thiell <bthiell@cfa.harvard.edu> Fixes for BibRecord library, detailed record links, improvements to code kwalitee in numerous modules. Improvements to BibClassify. - Nikola Yolov <nikola.yolov@cern.ch> Improvements and refactoring of BibAuthorID, fixes for WebAuthorProfile. - Lewis Barnes <lewis.barnes@cern.ch> Amendments for INSPIRE linking style. - Olivier Canévet <olivier.canevet@cern.ch> Fixes for WebComment report abuse facility. - Belinda Chan <belinda.chan@cern.ch> User documentation for personal features like alerts and baskets. - Carmen Alvarez Perez <carmen.alvarez.perez@cern.ch> Improvements to WebStat. - Henning Weiler <henning.weiler@cern.ch> Initial implementation of BibAuthorID module, with Samuele Carli. - Juan Francisco Pereira Corral <juan.francisco.pereira.corral@cern.ch> Fix taxonomy regression test, for BibKnowledge. - Stamen Todorov Peev <stamen.peev@cern.ch> Enrichment of Dublin Core XSL stylesheet. - Jan Iwaszkiewicz <jan.iwaszkiewicz@cern.ch> Full-text snippet feature for full-text search. - Björn Oltmanns <bjoern.oltmanns@gmail.com> Initial release of BibEncode, multi-node support for BibSched, style refactoring for WebComment. - Christopher Dickinson <christopher.dickinson@cern.ch> Patch for auto-suggest facility. - Christopher Hayward <christopher.james.hayward@cern.ch> Improvements to the reference extraction tool. - Travis Brooks <travis@slac.stanford.edu> Support for SPIRES search syntax and other improvements. - Juliusz Sompolski <julsomp@gmail.com> Reimplementation of pdf2hocr2pdf. - Jurga Girdzijauskaite <jurga.gird@gmail.com> Contributions to the Lithuanian translation. - Tony Ohls <tony.ohls@cern.ch> Fixes for regexp treatment in BibConvert. - Marko Niinimaki <manzikki@gmail.com> Contributions to the BibRank citation module and WebSearch summary output formats. Initial implementation of BibCatalog and BibKnowledge. - Mathieu Barras <mbarras@gmail.com> Initial implementation of SWORD client application. - Fabio Souto <fsoutomoure@gmail.com> Initial implementation of the invenio config dumper/loader. - Pablo Vázquez Caderno <pcaderno@cern.ch> Prevent loop in collection trees, for WebSearch. - Victor Engmark <victor.engmark@cern.ch> Bash completion for inveniocfg, patche for dist-packages. - Javier Martin <javier.martin.montull@cern.ch> Moderation tools for WebComment, improvements to BibEdit, initial implementation of the batch uploader. - Nikolaos Kasioumis <nikolaos.kasioumis@cern.ch> Hosted collections for WebSearch, rewrite of WebBasket UI, improvements to WebAlert. - Valkyrie Savage <vasavage@gmail.com> Initial implementation of the plot extractor library. - Miguel Martinez Pedreira <miguel.martinez.pedreira@cern.ch> Tool for manipulated embedded metadata in full-text files. - Jorge Aranda Sumarroca <jorge.aranda.sumarroca@cern.ch> Support for FCKeditor-uploaded files for WebSubmit. - Glenn Gard <glenng4@aol.com> Implemented many unit, regression and web tests for WebAlert, WebJournal, WebSubmit, WebComment, WebMessage, WebSession modules. - Christopher Parker <chris.parker.za@gmail.com> Improvements to the submission approval workflow. - Martin Vesely <martin.vesely@cern.ch> OAIHarvest, OAIRepository, OAI daemon and admin interface. BibConvert text-oriented mode. BibMatch. - Tony Osborne <tony.osborne@cern.ch> Improvements to the reference extractor. - Radoslav Ivanov <radoslav.ivanov@cern.ch> Contributions to the WebBasket module test suite. Support for parentheses and SPIRES search syntax in WebSearch. Initial implementation of the multi-record editor. Initial implementation of BibExport. - Joaquim Rodrigues Silvestre <joaquim.rodrigues.silvestre@cern.ch> Initial implementation of the BibCirculation module to handle physical item copies. - Kyriakos Liakopoulos <kyriakos.liakopoulos@cern.ch> Initial implementation of BibMerge. Improvements to BibEdit. - Lars Christian Raae <lars.christian.raae@cern.ch> Record locking, per-collection curating authentication, reverting older record versions, for the BibEdit. Rewrite of BibEdit in Ajax. - Ruben Pollan <ruben.pollan@cern.ch> Contributions to the WebStat module. - Nicholas Robinson <nicholas.robinson@cern.ch> WebSubmit. Reference extraction for the BibEdit module. - Gabriel Hase <gabriel.hase@konnektiv.ch> WebJournal module. - Diane Berkovits <diane.berkovits@cern.ch> Ranking by downloads, for the BibRank and WebSubmit modules. Group management for WebSession. - Joël Vogt <joel.vogt@unifr.ch> Contributions to the BibClassify module. - Marcus Johansson <marcus.johansson@cern.ch> Contributions to the WebStat module. - Jan Brice Krause <jan.brice.krause@cern.ch> Original implementation of the fulltext file transfer mode for BibUpload. - Axel Voitier <axel.voitier@gmail.com> Complex approval and refereeing subsystem, for WebSubmit. - Alberto Pepe <alberto.pepe@cern.ch> BibClassify, OAIHarvest Admin. - Øyvind Østlund <oyvind.ostlund@cern.ch> Sample BibTeX to MARCXML conversion, for BibConvert. - Nikolay Dyankov <ndyankov@gmail.com> XML-based BFX formatting engine, for BibFormat. - Olivier Serres <olivier.serres@gmail.com> External collections searching, for WebSearch. - Eric Stahl <eric.stahl@utbm.fr> Rewrite of BibUpload in Python. - Frederic Gobry <frederic.gobry@gmail.com> Contributions to the templating system, the URL handler, the gettext infrastructure, the regression test suite infrastructure, numerous patches for many modules. - Krzysztof Jedrzejek <krzysztof.jedrzejek@gmail.com> Improvements to ElmSubmit. - Yohann Paris <paris.yohann@gmail.com> BibEdit Admin. - Paulo Cabral <cabralp@gmail.com> WebComment, error library, design of collaborative features. - Thomas Baron <thomas.baron@cern.ch> WebSubmit and BibUpload. Improvements to BibSched. - Maja Gracco <maja.gracco@cern.ch> System librarian, MARC21 expertise. - Tiberiu Dondera <tiberiu.dondera@pronet-consulting.com> Patches for the WebSubmit engine and the admin interface. Templatizing codebase. - Anna Afshar <anna.afshar@novell.com> Ranking by citations, for the BibRank module. - Trond Aksel Myklebust <tamyk@online.no> Ranking engine, the BibRank module. Stemming and stopwords for the BibIndex module. Site access policies and external authentication methods, for the WebAccess module and its clients. Administration interfaces to WebSearch, BibIndex, BibRank, and additions to WebAccess. - Hector Sanchez <hector.sanchez.sanmartin@gmail.com> Metadata output formatter, the BibFormat module. Session management, for the WebSession module. - Richard Owen <ro@tes.la> Electronic mail submission system, the ElmSubmit module. - Alexandra Silva <xana@correio.ci.uminho.pt> Rewriting and enhancing BibRecord XML MARC and record handling library, for the BibEdit module. - Arturo Montejo Raez <amontejo@ujaen.es> Automatic text classification and keyword indexing. (upcoming) - Mikael Vik <mikael.vik@cern.ch> Role-based access control engine and its admin interface, the WebAccess module. Guest user sessions garbage collector, for the WebSession module. - Erik Simon <erik.simon@unine.ch>, Eric Simon <eric.simon@unine.ch> Alert engine, for the WebAlert module. - Roberta Faggian <roberta.faggian@cern.ch> Rewrite of the alert and basket user interfaces, for the WebAlert and the WebBasket modules. - Julio Pernia Aznar <jpernia@altransdb.com> Parts of user and session management, for the WebSession module. - Franck Grenier <franckgrenier@wanadoo.fr> Parts of web design and graphics, for the WebStyle module. - Eduardo Margallo Enhancements to the indexing engine, for the BibWords module. Initial implementation of the task scheduler, for the BibSched module. - end of file - diff --git a/docs/api.rst b/docs/api.rst index 9588a7867..cc89f185e 100644 --- a/docs/api.rst +++ b/docs/api.rst @@ -1,38 +1,44 @@ .. _api: API === Base ---- +.. automodule:: invenio.base + :members: + +.. automodule:: invenio.base.wrappers + :members: + .. automodule:: invenio.base.factory :members: Extensions ---------- .. automodule:: invenio.ext.sqlalchemy :members: Modules ------- .. automodule:: invenio.modules.jsonalchemy :members: .. automodule:: invenio.modules.tags :members: .. automodule:: invenio.modules.tags.views :members: .. automodule:: invenio.modules.annotations :members: Legacy ------ .. automodule:: invenio.legacy.bibrecord :members: diff --git a/docs/conf.py b/docs/conf.py index 7c501e0b3..de6d9d962 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -1,261 +1,277 @@ # -*- coding: utf-8 -*- # # Invenio documentation build configuration file, created by # sphinx-quickstart on Fri Oct 11 10:18:35 2013. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. from __future__ import print_function import sys, os try: - import sphinx_bootstrap_theme - _html_theme = 'bootstrap' - _html_theme_path = sphinx_bootstrap_theme.get_html_theme_path() + import sphinx_rtd_theme + _html_theme = "sphinx_rtd_theme" + _html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] +#try: +# import sphinx_bootstrap_theme +# _html_theme = 'bootstrap' +# _html_theme_path = sphinx_bootstrap_theme.get_html_theme_path() except: - print('Please run: `pip install sphinx_bootstrap_theme`', file=sys.stderr) + print('Please run: `pip install sphinx_bootstrap_theme sphinx_bootstrap_theme`', file=sys.stderr) _html_theme = 'default' _html_theme_path = [] # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.insert(0, os.path.abspath('.')) sys.path.append(os.path.abspath('_ext')) sys.path.append(os.path.abspath('_themes')) #sys.path.append(os.path.abspath('.')) sys.path.append(os.path.abspath('../invenio')) # -- General configuration ----------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. #needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = ['flask_app', 'sphinx.ext.autodoc'] +extensions = ['flask_app', 'sphinx.ext.autodoc', 'sphinx.ext.intersphinx'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # Many pot files are generated under following directory. locale_dirs = ['locale/'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'index' # General information about the project. project = u'Invenio' copyright = u'2013, CERN' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '1.9999' # The full version, including alpha/beta/rc tags. release = '1.9999-dev' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. #html_theme = 'default' html_theme = _html_theme # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] html_theme_path = _html_theme_path # The name for this set of Sphinx documents. If None, it defaults to # "<project> v<release> documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_domain_indices = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. html_show_sourcelink = False # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. #html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. #html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a <link> tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = None # Output file base name for HTML help builder. htmlhelp_basename = 'Inveniodoc' # -- Options for LaTeX output -------------------------------------------------- latex_elements = { # The paper size ('letterpaper' or 'a4paper'). #'papersize': 'letterpaper', # The font size ('10pt', '11pt' or '12pt'). #'pointsize': '10pt', # Additional stuff for the LaTeX preamble. #'preamble': '', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'Invenio.tex', u'Invenio Documentation', u'CERN', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # If true, show page references after internal links. #latex_show_pagerefs = False # If true, show URL addresses after external links. #latex_show_urls = False # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_domain_indices = True # -- Options for manual page output -------------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ ('index', 'invenio', u'Invenio Documentation', [u'CERN'], 1) ] # If true, show URL addresses after external links. #man_show_urls = False # -- Options for Texinfo output ------------------------------------------------ # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ ('index', 'Invenio', u'Invenio Documentation', u'CERN', 'Invenio', 'One line description of project.', 'Miscellaneous'), ] # Documents to append as an appendix to all manuals. #texinfo_appendices = [] # If false, no module index is generated. #texinfo_domain_indices = True # How to display URL addresses: 'footnote', 'no', or 'inline'. #texinfo_show_urls = 'footnote' + +# -- Options for Intersphinx mapping ------------------------------------------ + +# See <http://sphinx-doc.org/ext/intersphinx.html> +intersphinx_mapping = { + 'python': ('https://docs.python.org/2.7/', None), + 'flask_registry': ('http://flask-registry.readthedocs.org/en/latest/', None), + 'flask_menu': ('http://flask-menu.readthedocs.org/en/latest/', None), + 'flask_breadcrumbs': ('http://flask-breadcrumbs.readthedocs.org/en/latest/', None), + 'werkzeug': ('http://werkzeug.pocoo.org/docs/', None), + 'flask': ('http://flask.pocoo.org/docs/', None), +} diff --git a/docs/contents.rst.inc b/docs/contents.rst.inc index 30ef7611a..eec59879d 100644 --- a/docs/contents.rst.inc +++ b/docs/contents.rst.inc @@ -1,64 +1,53 @@ -User's Guide ------------- +Getting Started +=============== This part of the documentation, which is mostly prose, begins with some background information about Invenio, then focuses on step-by-step instructions for customization of Invenio. .. toctree:: - :maxdepth: 1 - - features - demo - modules - -Admin's Guide -------------- + :maxdepth: 2 -.. toctree:: - :maxdepth: 1 + getting-started/index - common-concepts - pluggable-objects +.. _developer-guide: Developer's Guide ------------------ +================= The Invenio Developers' corner. Before diving into the source, make sure you don't miss our user-level and admin-level documentation as well. And now, back to the source, and happy hacking! .. toctree:: - :maxdepth: 1 + :maxdepth: 2 + + developers/index - developers/introduction - developers/extensions - developers/modules - developers/templates - developers/git-workflow +.. _api-reference: API Reference -------------- +============= If you are looking for information on a specific function, class or method, this part of the documentation is for you. .. toctree:: :maxdepth: 2 api +.. _additional-notes: + Additional Notes ----------------- +================ Design notes, legal information and changelog are here for the interested. .. toctree:: - :maxdepth: 2 + :maxdepth: 1 - design - extensiondev - styleguide + kwalitee upgrading changelog license diff --git a/docs/developers/index.rst b/docs/developers/index.rst new file mode 100644 index 000000000..db79c0304 --- /dev/null +++ b/docs/developers/index.rst @@ -0,0 +1,16 @@ +.. _getting-started: + +================= +Developer's Guide +================= + +.. toctree:: + :maxdepth: 2 + + introduction + extensions + registries + modules + templates + git-workflow + kwalitee diff --git a/docs/developers/introduction.rst b/docs/developers/introduction.rst index a1fea3af2..8eab6b163 100644 --- a/docs/developers/introduction.rst +++ b/docs/developers/introduction.rst @@ -1,45 +1,72 @@ .. _developers-introduction: Introducing Invenio for Developers ================================== This page summarizes adoption of frameworks in used Invenio. It describes extensions and module anatomy and concept of pluggable components across modules. +Before you start reading please + +- *Convention over Configuration* means that common building blocks + are provided for you, so use them! If you are not sure or you are + missing documentation about a feature you can't find as developers + at mailing list or IRC. + +- *Don't Repeat Yourself (DRY)* to help us keep our software maintainable. + Duplication of code fragments makes application codebase larger and + more importantly it can be source of many errors during future + development (refactoring). + +- *Agile Development* where each iteration should lead to working code + in relatively short time while incremental step are small and easy to + understand by other developers. When you start with development take + advantage of built-in tools provided by Python and undelying libraries:: + + # Install package in editable mode + $ pip install -e git+http://invenio-software.org/repo/invenio.git + # Follow the instructions in src/invenio/INSTALL file. + $ inveniomanage runserver & + # Edit a file + $ `$EDITOR` src/invenio/invenio/<module>/<file>.py + # See that your server has been reloaded automatically. + + When you are done with editing do not forget to run our tests to make + sure that all other modules are working fine (`python setup.py test`). Extensions ---------- There are many of Flask extensions that can extend the functionality of your application in various different ways. For instance they add support for databases, user authentication & authorization, menu & breadcrumbs and other common tasks. Many of Flask extensions can be found in the `Flask Extension Registry`_. All extensions are automatically loaded from ``EXTENSIONS`` configuration option list. If they should a function ``setup_app(app)`` or function accepting ``app`` needs to be specified (e.g. ``foo.bar:init``, ``mymodule:setup``). Continue with :ref:`developers-extensions`. .. _Flask Extension Registry: http://flask.pocoo.org/extensions/ Modules ------- Modules are application components that can be use within an application or across aplications. They can contains `SQLAlchemy`_ models, `Flask`_ views, `Jinja2`_ templates and other ref:`pluggable-objects`. Discovery of modules is done based on configuration parameter called ``PACKAGES``, where expansion character `*` is supported at the end of package path after last dot (e.g. ``foo.bar.something.*``). Continue with :ref:`developers-modules`. .. _Flask: http://flask.pocoo.org/ .. _Jinja2: http://jinja.pocoo.org/2/ .. _SQLAlchemy: http://www.sqlalchemy.org/ diff --git a/docs/developers/kwalitee.rst b/docs/developers/kwalitee.rst new file mode 100644 index 000000000..264444e06 --- /dev/null +++ b/docs/developers/kwalitee.rst @@ -0,0 +1,6 @@ +.. _kwalitee: + +Commit quality check +==================== + +- `Kwalitee service <http://kwalitee.invenio-software.org/>`_ diff --git a/docs/pluggable-objects.rst b/docs/developers/registries.rst similarity index 100% rename from docs/pluggable-objects.rst rename to docs/developers/registries.rst diff --git a/docs/common-concepts.rst b/docs/getting-started/common-concepts.rst similarity index 100% rename from docs/common-concepts.rst rename to docs/getting-started/common-concepts.rst diff --git a/docs/demo.rst b/docs/getting-started/demo.rst similarity index 97% rename from docs/demo.rst rename to docs/getting-started/demo.rst index 193c66abf..e4f5fc41f 100644 --- a/docs/demo.rst +++ b/docs/getting-started/demo.rst @@ -1,74 +1,73 @@ -********************** Demo and Example Sites -********************** +====================== There are several Invenio installations that you can have a look at in order to see it in action: Demo Sites -========== +---------- `Atlantis Institute of Fictive Science <http://invenio-demo.cern.ch/>`_ *running Invenio 1.1.2, released 2013-08-19* Atlantis Institute of Fictive Science is an official demo site of Invenio. It demonstrates a basic setup of Invenio. You could (should) obtain this site if you install Invenio for the first time, by lauching `inveniocfg --create-demo-site` and `inveniocfg --load-demo-records`. This is useful to verify the functionality of your installation prior to customizing the system for production. `Atlantis Institute of Fictive Science Next <http://invenio-demo-next.cern.ch/>`_ *running Invenio next branch* Atlantis Institute of Fictive Science is an official demo site of Invenio. It demonstrates a basic setup of Invenio. You could (should) obtain this site if you install Invenio next branch for the first time, by lauching `inveniocfg --create-demo-site` and `inveniocfg --load-demo-records`. This is useful to verify the functionality of your installation prior to customizing the system for production. (The next branch is based on new technologies such as `Werkzeug <http://werkzeug.pocoo.org/>`_, `Flask <http://flask.pocoo.org/>`_, `Jinja2 <http://jinja.pocoo.org/>`_, `Twitter Bootstrap <http://twitter.github.com/bootstrap/>`_ and `SQLAlchemy <http://www.sqlalchemy.org/>`_). Production Sites -================ +---------------- .. image:: _static/CDS20120611.png :width: 200 px :align: right `CERN Document Server <http://cds.cern.ch>`_ *CERN, Geneva, Switzerland* At CERN, Invenio manages over 800,000 bibliographic records and 350,000 fulltext documents, organized in more than 500 collections, covering preprints, articles, books, journals, photographs, videos and more, of interest to people working in particle physics. You can check out this site if you want to see the performance and scalability of Invenio. .. image:: _static/Inspire20120611.png :width: 200 px :align: right `INSPIRE <http://inspirebeta.net>`_ *CERN, Geneva, Switzerland* INSPIRE is the high-energy physics information system that combines the successful `SPIRES <http://www.slac.stanford.edu/spires>`_ database content, curated at `DESY <http://www.desy.de/>`_, `Fermilab <http://www.fnal.gov/>`_ and `SLAC <http://www.slac.stanford.edu/>`_ for decades, with the Invenio digital library technology developed at `CERN <http://www.cern.ch/>`_. INSPIRE is run by a collaboration of the four labs and interacts closely with high-energy physics publishers, `arXiv.org <http://arxiv.org/>`_, `NASA-ADS <http://adswww.harvard.edu/>`_, `PDG <http://pdg.lbl.gov/>`_, and other information resources. To see more instances visit our `wiki <http://invenio-software.org/wiki/General/Demo>`_. diff --git a/docs/features.rst b/docs/getting-started/features.rst similarity index 100% rename from docs/features.rst rename to docs/getting-started/features.rst diff --git a/invenio/base/__init__.py b/docs/getting-started/first-steps.rst similarity index 100% copy from invenio/base/__init__.py copy to docs/getting-started/first-steps.rst diff --git a/docs/getting-started/index.rst b/docs/getting-started/index.rst new file mode 100644 index 000000000..aa7f8b3ff --- /dev/null +++ b/docs/getting-started/index.rst @@ -0,0 +1,15 @@ +.. _getting-started: + +=============== +Getting Started +=============== + +.. toctree:: + :maxdepth: 2 + + introduction + demo + features + first-steps + next-steps + resources diff --git a/docs/getting-started/introduction.rst b/docs/getting-started/introduction.rst new file mode 100644 index 000000000..c48278e10 --- /dev/null +++ b/docs/getting-started/introduction.rst @@ -0,0 +1,53 @@ +.. _intro: + +======================= +Introduction to Invenio +======================= + +.. contents:: + :local: + :depth: 1 + +What is a Registry? +=================== + +Registries are used as a mechanism to support pluggable architecture +using Python packages. A registry item is a Python package, class, +function or file that is registered with application. + +Regitries can be configured in several ways. Usually using a config +variable or `entry_points`_. + +A Invenio instance can consist of multiple packages, giving way +to high adaptability and chorizontal scaling. + +.. _Flask-Registry: http://flask-registry.rtfd.org/ +.. _entry_points: https://pythonhosted.org/setuptools/pkg_resources.html#entry-points + +What do I need? +=============== + +.. sidebar:: Version Requirements + :subtitle: Invenio version 2.0 runs on + + - Python ❨2.6, 2.7, *3.3 comming soon* ❩ + + This is the last version to support Python 2.6, + and from the next version Python 2.7 or newer is required. + The last version to support Python 2.4 was Invenio series 1.2. + +*Invenio* requires a relational database backend to store information. +The MySQL or PostgreSQL (*comming soon*) are required for basic +functionality, but there's also support for a MongoDB of other +experimental NoSQL solutions, including using SQLite for local +development. + +Get Started +=========== + +If this is the first time you're trying to use Invenio, or you are +new to Invenio 2.0 coming from previous versions then you should read our +getting started tutorials: + +- :ref:`first-steps` +- :ref:`next-steps` diff --git a/docs/index.rst b/docs/index.rst index 7cdd14574..4b51d730e 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,40 +1,42 @@ :orphan: -Welcome to Invenio -================== +===================== +Invenio documentation +===================== .. image:: _static/logo-full.png :alt: Invenio: digital repository software - :class: floatingflask + :class: pull-right + Welcome to Invenio's documentation. This documentation is divided into -different parts. I recommend that you get started with +different parts. We recommend that you get started with :ref:`installation` and then head over to the :ref:`quickstart`. Besides the quickstart, there is also a more detailed :ref:`tutorial` that shows how to create a complete application with Invenio. If you'd rather dive into the internals of Invenio, check out the :ref:`api` documentation. Common patterns are described in the :ref:`patterns` section. Invenio depends on several external libraries: - the `Flask`_ microframework for Python (based on `Werkzeug`_ and `Jinja2`_), - the `Jinja2`_ template engine, - the `Werkzeug`_ WSGI toolkit, - the `SQLAlchemy`_ SQL toolkit and Object Relational Mapper. These libraries are not documented here. If you want to dive into their documentation, check out the following links: - `Flask Documentation <http://flask.pocoo.org/documentation/>`_ - `Jinja2 Documentation <http://jinja.pocoo.org/2/documentation/>`_ - `Werkzeug Documentation <http://werkzeug.pocoo.org/documentation/>`_ - `SQLAlchemy Documentation <http://docs.sqlalchemy.org/en/latest/>`_ .. _Flask: http://flask.pocoo.org/ .. _Jinja2: http://jinja.pocoo.org/2/ .. _Werkzeug: http://werkzeug.pocoo.org/ .. _SQLAlchemy: http://www.sqlalchemy.org/ .. include:: contents.rst.inc diff --git a/docs/license.rst b/docs/license.rst new file mode 100644 index 000000000..158ec0bb1 --- /dev/null +++ b/docs/license.rst @@ -0,0 +1,23 @@ +License +======= + +Invenio is licensed under a GPLv2 License. + +The full license text can be found below (:ref:`invenio-license`). + +.. _authors: + +Authors +------- + +.. include:: ../AUTHORS + :start-after: =============== + :end-before: - end of file - + +.. _invenio-license: + +Invenio License +--------------- + +.. include:: ../COPYING + :literal: diff --git a/docs/upgrading.rst b/docs/upgrading.rst new file mode 100644 index 000000000..f985ab615 --- /dev/null +++ b/docs/upgrading.rst @@ -0,0 +1,18 @@ +.. _upgrading: + +========= +Upgrading +========= + +Invenio community is working hard on new features and +fixing bugs that were found after release. While the +upgrade can be a complex process at times, running +the latest Invenio version has several benefits: + +- New features and improvements are added. +- Bugs are fixed. +- Upgrading as each new Invenio release is available + makes future upgrades less painful by keeping your + code base up to date. + +.. automodule:: invenio.modules.upgrader diff --git a/invenio/base/__init__.py b/invenio/base/__init__.py index e69de29bb..06cf0c23f 100644 --- a/invenio/base/__init__.py +++ b/invenio/base/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +## This file is part of Invenio. +## Copyright (C) 2012, 2013, 2014 CERN. +## +## Invenio is free software; you can redistribute it and/or +## modify it under the terms of the GNU General Public License as +## published by the Free Software Foundation; either version 2 of the +## License, or (at your option) any later version. +## +## Invenio is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with Invenio; if not, write to the Free Software Foundation, Inc., +## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.A + +""" + invenio.base + ------------ + + Builds Invenio application. +"""