Skip to main content

The megrok.z3ctable package is a wrapper around the z3c.table components. z3c.table allows you to define HTML tables as zope3 components, defining columns as multi adapters.

Thanks to megrok.z3ctable, these components are now fully available in Grok, making them easy to declare and configure. The following components are available :

  • Table

  • Column

  • Value

Beyond a simple wrapping, megrok.z3cform brings you new convenient ways to create pages displaying a table:

  • TableView: a simple browser view displaying a table.

  • TablePage: a table browser view included in a layout (see megrok.layout)

For more information and more detailed examples please look in the tests directory of this package.

Getting started

First, we grok the package grokkers:

>>> import grokcore.component as grok
>>> from grokcore.component import testing
>>> from grokcore.component.testing import grok_component
>>> testing.grok('megrok.z3ctable')

Test Setup

Let’s create simple items to demonstrate the package. Here, the table will be the representation of a folder listing, displaying (in an ordered way), the content of a simple container:

>>> from megrok.z3ctable.tests import Container, Content
>>> from zope.container import btree
>>> from zope.publisher.browser import TestRequest
>>> request = TestRequest()

Let’s create 2 dummy content:

>>> christian = Content('Christian', 29)
>>> trollfot = Content('Trollfot', 27)

Then, we instanciate a container and store the 2 dummies inside:

>>> container = Container()
>>> container['christian'] = christian
>>> container['trollfot'] = trollfot

A simple Table

We define a simple table. Here, the component only registers itself, there’s no logic defined inside:

>>> from megrok.z3ctable import Table, Values
>>> from megrok.z3ctable import ITable

>>> class SimpleTable(Table):
...    """ My Simple Table """

>>> ITable.implementedBy(Table)
True

Let’s make an instance of the Table:

>>> myTable = SimpleTable(container, request)
>>> ITable.providedBy(myTable)
True

Now, we need to feed our table with contents. In order to provide a pluggable way to fetch the content, z3c.table proposes an adapter called “Values”. It is in charge of getting in the data to display:

>>> class MyValues(Values):
...     grok.adapts(btree.BTreeContainer, None, SimpleTable)
...
...     @property
...     def values(self):
...         return self.context.values()

We grok the MyValues Adapter:

>>> grok_component('MyValues', MyValues)
True

>>> myTable.update()
>>> myTable.render()
u''

There is currently no output this is because the table itself contains no logic. The data is displayed by components called “Column”. A Column is a multi adapter, adapting the context, the request and the table. It permits a very flexible handling of the tables and the data representations. Let’s define a simple Column:

>>> from zope.interface import Interface
>>> from megrok.z3ctable import NameColumn
>>> from megrok.z3ctable import table
>>> class Names(NameColumn):
...     grok.context(Interface)
...     table(SimpleTable)

Now we grok our Column:

>>> grok_component('Names', Names)
True

and render the Table again:

>>> myTable.update()
>>> print myTable.render()
<table>
  <thead>
    <tr>
      <th class="sorted-on ascending">Name</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td class="sorted-on ascending">christian</td>
    </tr>
    <tr>
      <td class="sorted-on ascending">trollfot</td>
    </tr>
  </tbody>
</table>

Here you go. A fully functional and pluggable table. Enjoy.

Changelog

1.6.0 (2013-10-08)

  • Using now grokcore.layout instead of megrok.layout

1.5.0 (2011-01-31)

  • Adapted the grokkers for the latest versions of martian and grokcore.component.

1.4.2 (2010-05-07)

  • Migration from Dolmen’s GIT to Zope’s Subversion repository. MANIFEST has been removed while a license file has been added. megrok.z3ctable is under the ZPL license.

1.4.1 (2010-02-21)

  • Cleaned out all the zope.app dependencies. Removed unused imports and re-structured the tests module. We are now using minimal dependencies.

  • megrok.z3ctable now requires zope.component >= 3.9.1. This means you have to use the latest ZTK KGS in your buildout. This KGS can be included via the groktoolkit.

1.4.0 (2010-01-16)

  • Now using ztk versions and fixed it for z3c.table >= 0.8

1.3.0 (2009-09-24)

  • Now Columns have their own grokker. Before that, they were treated as basic multi adapters. We now use a dedicated grokking component with explicit directives that can be auto-linked to context and table components. Read the test “test_implicit” in the ftests for more details. [trollfot]

1.2.1 (2009-09-18)

  • Add a new test for a template in a form [cklinger]

1.2.0 (2009-09-17)

  • Let megrok.z3ctable work with grokcore.view 1.12.2 [cklinger]

1.1.0 (2009-09-19)

  • Adapted megrok.z3ctable to the new version of megrok.layout and grokcore.view [cklinger]

Release files for megrok.z3ctable 1.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for megrok.z3ctable 1.6.0
File Size Uploaded
megrok.z3ctable-1.6.0.tar.gz 15.5 kB Details

Release files / megrok.z3ctable-1.6.0.tar.gz

Download URL megrok.z3ctable-1.6.0.tar.gz
Size 15.5 kB
Tags Source
SHA-256 checksum
How to use checksums
0a408cf4a4201187a20f71de119a8a8e8f876d6d7a3863dd80e4fe63a3fbfca4
BLAKE2b-256 checksum
How to use checksums
398907f468dc83ab08a08c2b3e99f726b7fa209f7beced6e8417257f59b2b9c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.6.0 This release

1 release file

1.5.0

1 release file

1.4.2

1 release file

1.4.1

1 release file

1.4.0

1 release file

1.3.0

1 release file

1.2.1

1 release file

1.2.0

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.1

1 release file

1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page