Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Introduction

horae.groupselect provides a grouped Dropdown widget for zope.formlib using the default optgroup elements provided by HTML.

Usage

To use a grouped dropdown widget the previously used Choice field of the schema has to be replaced by a GroupedChoice field provided in horae.groupedselect.field. A GroupedChoice field takes the exactly same parameters as the stock Choice field but additionally an instance of a groups provider (implementing horae.groupedselect.interfaces.IGroups) has to be provided over the parameter groups. The mentioned groups provider converts the vocabulary of the field into a list of groups.

Imagine field to select a country and you would like to group them by region:

from zope import interface, implements
from zope.schema import vocabulary

from horae.groupedselect import field, interfaces

class Country(object):
    def __init__(self, region, country):
        self.region = region
        self.country = country

class CountryGroups(object):
    implements(interfaces.IGroups)

    def groups(self, vocabulary):
        """
        Converts the given vocabulary into a list of groups:

            return (('Group 1', (term1, term2, term3)),
                    ('Group 2', (term6, term5, term6)),)
        """
        groups = {}
        for term in vocabulary:
            if not term.value.region in groups:
                groups[term.value.region] = ()
            groups[term.value.region] = groups[term.value.region] + \
                (term,)
        return groups.items()

class ICountrySelection(interface.Interface):

    country = field.GroupedChoice(
        title = u'Country',
        vocabulary = vocabulary.SimpleVocabulary((
            # ...
            vocabulary.SimpleTerm(
                Country(u'Europe', u'Switzerland'),
                'ch',
                u'Switzerland'
            ),
            vocabulary.SimpleTerm(
                Country(u'Europe', u'Germany'),
                'de',
                u'Germany'
            ),
            vocabulary.SimpleTerm(
                Country(u'Europe', u'Austria'),
                'at',
                u'Austria'
            ),
            vocabulary.SimpleTerm(
                Country(u'Europe', u'France'),
                'fr',
                u'France'
            ),
            # ...
            vocabulary.SimpleTerm(
                Country(u'North America', u'USA'),
                'us',
                u'USA'
            ),
            vocabulary.SimpleTerm(
                Country(u'Europe', u'Canada'),
                'ca',
                u'Canada'
            ),
            # ...
        )),
        groups = CountryGroups()
    )

Dependencies

Changelog

1.0a1 (2012-01-16)

  • Initial release

Metadata

Release files for horae.groupselect 1.0a1

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

Source distribution (sdist)

Source distribution for horae.groupselect 1.0a1
File Size Uploaded
horae.groupselect-1.0a1.tar.gz 4.0 kB Details

Release files / horae.groupselect-1.0a1.tar.gz

Download URL horae.groupselect-1.0a1.tar.gz
Size 4.0 kB
Tags Source
SHA-256 checksum
How to use checksums
6f7285b54b9b9c5fbf8b17e1d1c804eda67d29cb3fd8b654b4dfed0dd004cf4d
BLAKE2b-256 checksum
How to use checksums
ab6877a81f53f8db60a187a7dac1682e82b47abe485a2255a942330030a5b334
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.0a1 This release

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