Metadata-Version: 2.1
Name: five.grok
Version: 2.0
Summary: Grok-like layer for Zope
Home-page: https://github.com/zopefoundation/five.grok
Author: Lennart Regebro, Godefroid Chapelle
Author-email: grok-dev@zope.org
License: ZPL
Keywords: zope4 grok
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Zope Public License
Classifier: Programming Language :: Python
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Framework :: Zope :: 4
Classifier: Framework :: Zope :: 5
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
License-File: LICENSE.txt
Requires-Dist: setuptools
Requires-Dist: martian
Requires-Dist: Zope (>=4)
Requires-Dist: five.localsitemanager (>=2.0)
Requires-Dist: grokcore.annotation
Requires-Dist: grokcore.component (>=2.5)
Requires-Dist: grokcore.security (>=1.6.1)
Requires-Dist: grokcore.site
Requires-Dist: grokcore.view (>=1.12.1)
Requires-Dist: grokcore.viewlet (>=1.3)
Requires-Dist: zope.annotation
Requires-Dist: zope.component
Requires-Dist: zope.container
Requires-Dist: zope.contentprovider
Requires-Dist: zope.interface
Requires-Dist: zope.location
Requires-Dist: zope.pagetemplate
Requires-Dist: zope.publisher
Requires-Dist: zope.traversing
Requires-Dist: zope.tal (<5) ; python_version == "2.7"
Requires-Dist: DateTime (<5) ; python_version == "2.7"
Provides-Extra: form
Requires-Dist: grokcore.formlib (>=1.4) ; extra == 'form'
Requires-Dist: five.formlib ; extra == 'form'
Requires-Dist: zope.formlib ; extra == 'form'
Provides-Extra: layout
Requires-Dist: grokcore.layout ; extra == 'layout'
Provides-Extra: test
Requires-Dist: grokcore.formlib (>=1.4) ; extra == 'test'
Requires-Dist: five.formlib ; extra == 'test'
Requires-Dist: zope.formlib ; extra == 'test'
Requires-Dist: grokcore.layout ; extra == 'test'

five.grok
=========

.. contents::

Introduction
------------

`five.grok` is a development layer for Zope, based on Grok framework
concepts.

The development techniques are similar to the ones used with Grok
framework.

It is based on `grokcore` namespace packages that were factored out of Grok
framework.

Implemented features
--------------------

Coming from Grok, the following components are available to Zope
developers:

- Zope 3 Component (Adapter, Global utilities, Subscribers),

- Permissions,

- Views and Viewlets,

- Skins and resources directories,

- Page Templates (using the Zope Page Templates),

- Formlib forms (optional, you need to include the extra ``form``),

- Local sites and local utilities,

- Annotations,

- Layout (optional, you need to include the extra ``layout``).

All those components are available with exactly the same syntax than
in grok. You just have to do::

  from five import grok

Instead of::

  import grok

Installation
------------

After adding the dependency to ``five.grok`` in your project, you have
to load the following ZCML::

  <include package="five.grok" />


More information
----------------

You can refer to the Grok website: http://grok.zope.org/, and the Grok
documentation: http://grok.zope.org/documentation/.

You can check the doctest included in sources as well.

Changelog
=========

2.0 (2023-03-15)
----------------

- Pin ``five.localsitemanager>=2.0``.  Avoids problems with newer
  version comparison in ``setuptools 8.0``.
  [maurits]

- Add support for Python 3.7, 3.8, 3.9, 3.10, 3.11.

- Add support for Zope >= 4.

- Drop support for Zope 2.13.


1.3.2 (2012-08-17)
------------------

- Add an optional support for ``grokcore.layout``, with the extra
  ``layout``.

1.3.1 (2012-05-02)
------------------

- Make formlib support optional. This is not included by default. If
  you whish to use formlib, you need to include the extra ``form`` for
  ``five.grok``. Example:  ``five.grok [form] >= 1.3.1``.

- Fix the redirect method to properly work. Unlike in Zope 3, it
  doesn't support trusted.

1.3.0 (2011-11-07)
------------------

- Clean up code, update dependencies and tests, this release only
  works with Zope 2.13.  [thefunny42]


1.2.0 (2011-01-22)
------------------

- Require five.formlib for Zope 2.13 compatibility. This requires Zope 2.12.3
  or later.
  [elro]

1.1.2 (2010-08-04)
------------------

- Fixed problem with unrestrictedTraverse() and files in subfolders of grokked
  resource directories. This fix also depends on fixes in Zope 2.12.6 or
  later.
  [optilude]

1.1.1 (2010-02-04)
------------------

- Fix namespace override in ZopeTwoPageTemplate, i.e. let users
  override 'view' for instance using the namespace method of a Grok
  view class. This bug was introduced in the 1.1 release.
  [thefunny42]


1.1 (2009-11-16)
----------------

- Update code and tests to work with Zope 2.12. People using Zope 2.10
  and 2.11 should keep using five.grok 1.0.
  [thefunny42 and optilude]

- Update to martian 0.11.1, `grokcore.annotation`_ 1.1 and
  `grokcore.site`_ 1.1, `grokcore.view`_ to 1.12.2.
  [vincentfretin]

- Local utility implements IAttributeAnnotatable, IContext like in
  `grokcore.site`_.
  [thefunny42]


1.0 (2009-09-17)
----------------

- Define an IFiveGrokAPI.
  [thefunny42]

- Fix the broken ``url`` method on views.
  [thefunny42]

- Reverted the CodeView base class, see grokcore.view changelog for
  more details.
  ``CodeView`` is still available as a backwards compatibility alias
  for ``View``. Please update all references to ``CodeView`` to
  ``View``.
  [vincentfretin]


1.0b2 (2009-07-21)
------------------

- Added dependency on grokcore.view 1.9, grokcore.viewlet 1.1 and
  grokcore.formlib 1.2, and support for the new CodeView from grokcore.View.
  [optilude]


1.0b1 (2009-06-30)
------------------

- Added support for annotations with `grokcore.annotation`_.
  [thefunny42]

- Added support for local site and utilities with `grokcore.site`_.
  [thefunny42]

- Fix grok.EditForm when used with grokcore.formlib 1.1.
  The Apply action was gone.
  [thefunny42]

- Let static resource directories allow access to unprotected subattributes
  to avoid authorisation problems when accessing them from protected code.
  [optilude]

- Do not create static resource directories if the 'static' directory does
  not actually exist.
  [optilude]


1.0a2 (2008-11-23)
------------------

- Added support for viewlets with `grokcore.viewlet`_.
  [thefunny42]

- Added support for the DirectoryResource component (new in
  `grokcore.view`_ 1.2).
  [thefunny42]

- Added support for using Zope 2 templates by default when doing ``from
  five import grok`` and using grok.PageTemplateFile (being consistent
  with grok.PageTemplate).
  [thefunny42]

- Added a convenient grok.Container.
  [thefunny42]

- Fix AutoFields (and form grokker) not to include OFS Zope 2 defined
  fields by default. This use to add a lot of buggy and wanted
  fields.
  [thefunny42]


1.0a1 (2008-10-22)
------------------

- Added support for formlib forms with `grokcore.formlib`_.
  [thefunny42]

- Added support for static resource directory.
  [thefunny42]

- Added support for inline templates and made Zope 2 template semantics
  the default when doing ``from five import grok`` and using
  grok.PageTemplate.
  [optilude]

- Added override to make templates use Five's ViewPageTemplateFile instead
  of the one from zope.app.pagetemplate.
  [optilude]

- Added `grokcore.view`_ support with tests.
  [regebro, jfroche, gotcha et al.]

- Added tests for grok.subscriber directive.
  [kamon]

- Initial release (tests for adapters and utilities, initial support for
  views).
  [regebro, gotcha]

.. _grokcore.annotation: http://pypi.python.org/pypi/grokcore.annotation
.. _grokcore.site: http://pypi.python.org/pypi/grokcore.site
.. _grokcore.view: http://pypi.python.org/pypi/grokcore.view
.. _grokcore.viewlet: http://pypi.python.org/pypi/grokcore.viewlet
.. _grokcore.formlib: http://pypi.python.org/pypi/grokcore.formlib
