def handle_aggregate_crowd(name, crowd_names):
    factories = getCrowdsUtility().factories
    try:
        crowds = [factories[crowd_name] for crowd_name in crowd_names]
    except KeyError:
        raise ValueError("invalid crowd id", crowd_name)

    class AggregateCrowdFactory(AggregateCrowd):
        def crowdFactories(self):
            return crowds
    handle_crowd(name, AggregateCrowdFactory)
Exemple #2
0
def handle_aggregate_crowd(name, crowd_names):
    factories = getCrowdsUtility().factories
    try:
        crowds = [factories[crowd_name] for crowd_name in crowd_names]
    except KeyError:
        raise ValueError("invalid crowd id", crowd_name)

    class AggregateCrowdFactory(AggregateCrowd):
        def crowdFactories(self):
            return crowds

    handle_crowd(name, AggregateCrowdFactory)
Exemple #3
0
def switch_description(_context,
                       group=None,
                       action=None,
                       crowd=None,
                       crowd_factory=None,
                       use_crowd=None,
                       use_crowd_factory=None):

    if crowd is not None and crowd_factory is not None:
        raise TypeError("Must specify either crowd or crowd_factory.")

    if use_crowd is not None and use_crowd_factory is not None:
        raise TypeError("Must specify either use_crowd or use_crowd_factory.")

    if action is not None and group is None:
        raise TypeError("Must specify group when specifying action.")

    if crowd is not None:
        crowd_getter = lambda: getCrowdsUtility().getFactory(crowd)
    elif crowd_factory is not None:
        crowd_getter = lambda: crowd_factory
    else:
        crowd_getter = lambda: None

    if use_crowd is not None:
        replacement_crowd_getter = lambda: getCrowdsUtility().getFactory(
            use_crowd)
    elif use_crowd_factory is not None:
        replacement_crowd_getter = lambda: use_crowd_factory
    else:
        replacement_crowd_getter = lambda: None

    discriminator = ('switch_description', group, action, crowd, crowd_factory,
                     use_crowd, use_crowd_factory)

    _context.action(discriminator=discriminator,
                    callable=handle_switch_description,
                    args=(_context, group, action, crowd_getter,
                          replacement_crowd_getter),
                    order=ZCML_REGISTER_DESCRIPTION_SWITCHING)
def switch_description(_context,
                       group=None, action=None,
                       crowd=None, crowd_factory=None,
                       use_crowd=None, use_crowd_factory=None):

    if crowd is not None and crowd_factory is not None:
        raise TypeError("Must specify either crowd or crowd_factory.")

    if use_crowd is not None and use_crowd_factory is not None:
        raise TypeError("Must specify either use_crowd or use_crowd_factory.")

    if action is not None and group is None:
        raise TypeError("Must specify group when specifying action.")

    if crowd is not None:
        crowd_getter = lambda: getCrowdsUtility().getFactory(crowd)
    elif crowd_factory is not None:
        crowd_getter = lambda: crowd_factory
    else:
        crowd_getter = lambda: None

    if use_crowd is not None:
        replacement_crowd_getter = lambda: getCrowdsUtility().getFactory(use_crowd)
    elif use_crowd_factory is not None:
        replacement_crowd_getter = lambda: use_crowd_factory
    else:
        replacement_crowd_getter = lambda: None

    discriminator = ('switch_description', group, action,
                     crowd, crowd_factory, use_crowd, use_crowd_factory)

    _context.action(discriminator=discriminator,
                    callable=handle_switch_description,
                    args=(_context, group, action,
                          crowd_getter, replacement_crowd_getter),
                    order=ZCML_REGISTER_DESCRIPTION_SWITCHING)
Exemple #5
0
def describe_crowd(_context,
                   group=None,
                   action=None,
                   interface=None,
                   permission=None,
                   crowd=None,
                   crowd_factory=None,
                   factory=None,
                   title=None,
                   description=None):

    if crowd is not None and crowd_factory is not None:
        raise TypeError("Must specify either crowd or crowd_factory.")

    if action is not None and group is None:
        raise TypeError("Must specify group when specifying action.")

    if crowd is not None:
        crowd_getter = lambda: getCrowdsUtility().getFactory(crowd)
    elif crowd_factory is not None:
        crowd_getter = lambda: crowd_factory
    else:
        crowd_getter = lambda: None

    if factory is None:
        if title is None and description is None:
            raise TypeError("Must specify either description factory"
                            " or title/description.")
        factory = CrowdDescription

    factory_dict = {}
    if title is not None:
        factory_dict['title'] = title
    if description is not None:
        factory_dict['description'] = description
    new_factory = type(factory.__name__, (factory, ), factory_dict)

    discriminator = ('describe_crowd', group, action, interface, permission,
                     crowd, crowd_factory)

    _context.action(discriminator=discriminator,
                    callable=handle_crowd_description,
                    args=(_context, group, action, interface, permission,
                          crowd_getter, new_factory),
                    order=ZCML_REGISTER_CROWD_DESCRIPTIONS)
Exemple #6
0
def handle_allow(crowdname, permission, interface):
    """Handler for the ZCML <allow> directive.

    interface is the interface for which the security declaration is issued,
    crowdname is a string,
    permission is an identifier for a permission.

    The function registers the given crowd factory in the ICrowdsUtility.

    An adapter to ICrowd is provided if interface is specified.
    """

    utility = getCrowdsUtility()

    discriminator = (permission, interface)
    if discriminator not in utility.crowds:
        utility.crowds[discriminator] = []
        if interface is not None:
            registerCrowdAdapter(permission, interface)

    utility.crowds[discriminator].append(crowdname)
def handle_allow(crowdname, permission, interface):
    """Handler for the ZCML <allow> directive.

    interface is the interface for which the security declaration is issued,
    crowdname is a string,
    permission is an identifier for a permission.

    The function registers the given crowd factory in the ICrowdsUtility.

    An adapter to ICrowd is provided if interface is specified.
    """

    utility = getCrowdsUtility()

    discriminator = (permission, interface)
    if discriminator not in utility.crowds:
        utility.crowds[discriminator] = []
        if interface is not None:
            registerCrowdAdapter(permission, interface)

    utility.crowds[discriminator].append(crowdname)
def describe_crowd(_context, group=None, action=None,
                   interface=None, permission=None,
                   crowd=None, crowd_factory=None,
                   factory=None, title=None, description=None):

    if crowd is not None and crowd_factory is not None:
        raise TypeError("Must specify either crowd or crowd_factory.")

    if action is not None and group is None:
        raise TypeError("Must specify group when specifying action.")

    if crowd is not None:
        crowd_getter = lambda: getCrowdsUtility().getFactory(crowd)
    elif crowd_factory is not None:
        crowd_getter = lambda: crowd_factory
    else:
        crowd_getter = lambda: None

    if factory is None:
        if title is None and description is None:
            raise TypeError("Must specify either description factory"
                            " or title/description.")
        factory = CrowdDescription

    factory_dict = {}
    if title is not None:
        factory_dict['title'] = title
    if description is not None:
        factory_dict['description'] = description
    new_factory = type(factory.__name__, (factory, ), factory_dict)

    discriminator = ('describe_crowd', group, action,
                     interface, permission, crowd, crowd_factory)

    _context.action(discriminator=discriminator,
                    callable=handle_crowd_description,
                    args=(_context, group, action,
                          interface, permission, crowd_getter,
                          new_factory),
                    order=ZCML_REGISTER_CROWD_DESCRIPTIONS)
Exemple #9
0
def handle_crowd(name, factory):
    """Handler for the ZCML <crowd> directive."""
    getCrowdsUtility().factories[name] = factory
Exemple #10
0
 def crowdFactories(self):
     return getCrowdsUtility().getFactories(self.permission, self.interface)
def handle_crowd(name, factory):
    """Handler for the ZCML <crowd> directive."""
    getCrowdsUtility().factories[name] = factory
 def crowdFactories(self):
     return getCrowdsUtility().getFactories(self.permission, self.interface)