# HG changeset patch # User Damien Correia # Date 1526401897 -7200 # Node ID 60a1fbdbbed3502150880b2915a010bdbe7695e9 # Parent 949d496c4e9643162b3bc83b6d528c1dec008db9 Updated NLTK install and Portlet docs diff -r 949d496c4e96 -r 60a1fbdbbed3 src/source/appextend.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/source/appextend.rst Tue May 15 18:31:37 2018 +0200 @@ -0,0 +1,115 @@ +.. _appextend: + +How to create a new Portlet ? +----------------------------- + +**Portlets** are pluggable user interface software components that are managed and displayed in a web portal, +for example an enterprise portal or a web CMS. A portlet can aggregate (integrate) and personalize content from +different sources within a web page. A portlet responds to requests from a web client with and generates dynamic content. +(*reference:* `Wiki portlet`_) + +.. _`wiki portlet`: https://en.wikipedia.org/wiki/Portlet + + +**Pyams Portal** provides predefined portlets that to compose and organize the structure of a website. + +1. Define a Portlet setting +''''''''''''''''''''''''''' + +Portlet setting interface are defined in ``interfaces.py``, you can use IPortletSettings or extend the interface +by adding an additional properties for example: + +.. code-block:: python + + from zope.schema import Text + + class INewPortletSettings(IPortletSettings): + + comment = Text(title=_("Comment"), + required=True, + default=True) + +PortletSetting component does what IPortletSettings describes. This is usually referred to as the implementation +of IPortletSettings. + +.. code-block:: python + + @implementer(IPortletSettings) + class ImagePortletSettings(PortletSettings): + """Image portlet settings""" + + _image = FileProperty(IImagePortletSettings['image']) + + @property + def image(self): + return self._image + + @image.setter + def image(self, value): + self._image = value + if (value is not None) and (value is not DELETED_FILE): + alsoProvides(self._image, IResponsiveImage) + + + +2. Create Portlet +''''''''''''''''' + +The Porltet component is a utility, it implement the IPortlet interface and it registered by the portlet_config adapter + +To register a new portlet you must specify the settings_class associated + +.. code-block:: python + + @portlet_config(permission=VIEW_PERMISSION) + class ImagePortlet(Portlet): + """Image portlet""" + + name = IMAGE_PORTLET_NAME + label = _("Image") + + toolbar_image = None + toolbar_css_class = 'fa fa-fw fa-2x fa-picture-o' + + settings_class = ImagePortletSettings + + + +4. Create HTML template +''''''''''''''''''''''' + + +.. code-block:: genshi + + ${view.settings.comment} + + + +5. Renderer +''''''''''' + +.. code-block:: python + + @adapter_config(context=(IPortalContext, IPyAMSLayer, Interface, IImagePortletSettings), provides=IPortletRenderer) + @template_config(template='image.pt', layer=IPyAMSLayer) + class ImagePortletRenderer(PortletRenderer): + """Image portlet renderer""" + + label = _("Responsive image renderer") + + + +6. Zmi integration module +''''''''''''''''''''''''' + +.. code-block:: python + + @pagelet_config(name='properties.html', context=IImagePortletSettings, request_type=IPyAMSLayer, + permission=VIEW_SYSTEM_PERMISSION) + class ImagePortletSettingsEditor(PortletSettingsEditor): + """Image portlet settings editor""" + + settings = IImagePortletSettings + + + diff -r 949d496c4e96 -r 60a1fbdbbed3 src/source/conf.py --- a/src/source/conf.py Wed May 09 17:33:41 2018 +0200 +++ b/src/source/conf.py Tue May 15 18:31:37 2018 +0200 @@ -107,7 +107,7 @@ # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. -language = None +language = 'en' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. @@ -117,10 +117,12 @@ # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' +# The default language to highlight source code in. +highlight_language = 'python3' + # If true, `todo` and `todoList` produce output, else they produce nothing. todo_include_todos = False - # -- Options for HTML output ---------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for @@ -241,5 +243,6 @@ def setup(app): + app.add_stylesheet('css/custom.css') diff -r 949d496c4e96 -r 60a1fbdbbed3 src/source/developerguide.rst --- a/src/source/developerguide.rst Wed May 09 17:33:41 2018 +0200 +++ b/src/source/developerguide.rst Tue May 15 18:31:37 2018 +0200 @@ -11,4 +11,8 @@ :maxdepth: 2 zca - extend + package_layout + appextend + zmi_integration + traverser + tales diff -r 949d496c4e96 -r 60a1fbdbbed3 src/source/extend.rst --- a/src/source/extend.rst Wed May 09 17:33:41 2018 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -.. _extending: - -Extending PyAMS -=============== - -.. toctree:: - :maxdepth: 2 - - package_layout - appextend - zmi_integration - traverser - tales - - diff -r 949d496c4e96 -r 60a1fbdbbed3 src/source/plugins.rst --- a/src/source/plugins.rst Wed May 09 17:33:41 2018 +0200 +++ b/src/source/plugins.rst Tue May 15 18:31:37 2018 +0200 @@ -13,7 +13,7 @@ Visit https://www.elastic.co/ to learn how to install Elasticsearch Server, and how install `ingest-attachment` plug-in -.. tips:: Documentation for installing ElasticSearch 5.4 +.. tip:: Documentation for installing ElasticSearch 5.4 - https://www.elastic.co/guide/en/elasticsearch/reference/5.4/gs-installation.html - https://www.elastic.co/guide/en/elasticsearch/plugins/5.4/ingest-attachment.html @@ -79,7 +79,7 @@ 3. Create or update index: '''''''''''''''''''''''''' -You have to index PyAMS objects into ES database. From a shell: +You have to Update ElasticSearch indexes with all database contents with ``pymas_es_index``. From a shell: .. code-block:: bash @@ -93,7 +93,7 @@ =============================== -With the package *PyAMS_nltk* PyAMS can use the NLTK features +PyAMS enjoy the NLTK features through the *PyAMS_calalog* .. seealso:: @@ -101,12 +101,12 @@ +Initializing NLTK (Natural Language Toolkit) +-------------------------------------------- -Initializing NLTK ------------------ - -Some NLTK (Natural Language Toolkit) tokenizers and stopwords utilities are used to index fulltext contents elements. -This package requires downloading and configuration of several elements which are done as follow: +Some NLTK Collections like **tokenizers** and **stopwords** utilities are used to index fulltext contents +elements. You can enhanced NTKL indexation according to your own needs. This package requires downloading and +configuration of several elements which are done as follow: *1. Run the Python shell with PyAMS environment:* @@ -118,12 +118,24 @@ *2. In the Python shell:* -.. code-block:: python +.. code-block:: pycon >>> import nltk >>> nltk.download() -.. code-block:: python + +*3. Configuration installation directory:* + +.. tip:: + + On Debian GNU/Linux, you can choose any directory between '*~/nltk_data*' (where '~' is the homedir of user running + Pyramid application), '*/usr/share/nltk_data*', '*/usr/local/share/nltk_data*', '*/usr/lib/nltk_data*' and + '*/usr/local/lib/nltk_data*' + + Please check if you have permission to write to this directory + + +.. code-block:: shell NLTK Downloader --------------------------------------------------------------------------- @@ -138,33 +150,44 @@ Local Machine: - Data directory: /home/tflorac/nltk_data - --------------------------------------------------------------------------- - s) Show Config u) Set Server URL d) Set Data Dir m) Main Menu - --------------------------------------------------------------------------- + Config> d New directory> /usr/local/lib/nltk_data + +*4. Return to the main menu:* + +.. code-block:: shell + + --------------------------------------------------------------------------- + s) Show Config u) Set Server URL d) Set Data Dir m) Main Menu + --------------------------------------------------------------------------- + Config> m + + +*5. Download utilities:* + + punkt + Punkt Tokenizer Models + stopwords + Stopwords Corpus + + +.. code-block:: shell + + --------------------------------------------------------------------------- + d) Download l) List u) Update c) Config h) Help q) Quit + --------------------------------------------------------------------------- + Downloader> d + Download which package (l=list; x=cancel)? + Identifier> punkt + Downloading package punkt to /usr/local/lib/nltk_data... + Downloader> d + Download which package (l=list; x=cancel)? + Identifier> stopwords + Downloading package stopwords to /usr/local/lib/nltk_data... + + .. tip:: - On Debian GNU/Linux, you can choose any directory between '*~/nltk_data*' (where '~' is the homedir of user running - Pyramid application), '*/usr/share/nltk_data*', '*/usr/local/share/nltk_data*', '*/usr/lib/nltk_data*' and - '*/usr/local/lib/nltk_data*' - - -.. code-block:: pycon - - Config> m - --------------------------------------------------------------------------- - d) Download l) List u) Update c) Config h) Help q) Quit - --------------------------------------------------------------------------- - Downloader> d - - Download which package (l=list; x=cancel)? - Identifier> punkt - Downloading package punkt to /usr/local/lib/nltk_data... - - Downloader> d - - Download which package (l=list; x=cancel)? - Identifier> stopwords - Downloading package stopwords to /usr/local/lib/nltk_data... + The full list of NTLK Collection are displayable with the ``l) list`` option