This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

This is a PAS plugin that makes it possible to create groups "on the fly" for
users via subscription adapters and utilities.

The plugin can be installed using a GenericSetup extension profile.

For example, say you have an LDAP repository where a user property contains a
user's business unit. If this is mapped as a user property, you can write a
subscription adapter that adapts the user to ISuperGroups. It would look up
this property on a user and return a list of group ids that corresponds to the
value of the property. When Plone lists a user's groups or assigns roles based
on a user's groups, the user will appear to be a member of this group.

For example::

from zope.interface import implements
from zope.component import adapts

from borg.supergroup.interfaces import ISuperGroups
from Products.PluggableAuthService.interfaces.authservice import IBasicUser

class ImpliedGroups(object):

def __init__(self, context):
self.principal = context

def __call__(self):
implied = self.principal.getProperty('implied_group', '')
if implied:
yield implied

This can be registered in ZCML with::

<subscriber factory=".groups.ImpliedGroups"/>

This is a simple example that looks for an implied group in the
'implied_groups' user property. Of course, you could source the group(s) from
wherever you want. The return value should be an iterable (here we use a

To make implied groups show up in general group listings (e.g. on the
'Sharing' tab in the Plone user interface), you could write a named utility
providing ISuperGroupsEnumeration. This will be passed some search parameters,
and should return any implied groups if they can be matched to the search

For example::

from zope.interface import implements
from zope.component import adapts

from borg.supergroup.interfaces import ISuperGroupsEnumeration

class ImpliedGroupsEnumeration(object):

def enumerate_groups(self, id=None, exact_match=False, **kw):
if (exact_match and id == 'Alpha') or (not exact_match and id in 'Alpha'):
yield dict(id='Alpha', title='Alpha Group')

In ZCML, this would be registered with::

<utility <br=""> factory=".groups.ImpliedGroupsEnumeration"

For more examples, see the tests in integration.txt and the interface
declarations in

1.0b1 - Unreleased

* Initial release
Release History

Release History


This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
borg.supergroup-1.0rc1-py2.4.egg (17.1 kB) Copy SHA256 Checksum SHA256 2.4 Egg Apr 5, 2008
borg.supergroup-1.0rc1.tar.gz (13.1 kB) Copy SHA256 Checksum SHA256 Source Apr 5, 2008

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting