Source code for adhocracy_core.resources.badge

"""Resources for managing badges."""

from pyramid.registry import Registry

from adhocracy_core.interfaces import IPool
from adhocracy_core.interfaces import IServicePool
from adhocracy_core.interfaces import ISimple
from adhocracy_core.resources import add_resource_type_to_registry
from adhocracy_core.resources.simple import simple_meta
from adhocracy_core.resources.service import service_meta
from adhocracy_core.resources.pool import pool_meta
import adhocracy_core.sheets.badge
import adhocracy_core.sheets.description
import adhocracy_core.sheets.metadata
import adhocracy_core.sheets.name
import adhocracy_core.sheets.title


[docs]class IBadge(ISimple): """A generic badge."""
badge_meta = simple_meta._replace( iresource=IBadge, use_autonaming=False, extended_sheets=( adhocracy_core.sheets.description.IDescription, adhocracy_core.sheets.badge.IBadge, ), permission_create='create_badge', is_sdi_addable=True, )._add( extended_sheets=(adhocracy_core.sheets.name.IName,) )
[docs]class IBadgeGroup(IPool): """A generic badge group pool."""
badge_group_meta = pool_meta._replace( iresource=IBadgeGroup, extended_sheets=( adhocracy_core.sheets.description.IDescription, ), permission_create='create_badge_group', element_types=(IBadge, IBadgeGroup, ), is_sdi_addable=True, )
[docs]class IParticipantsAssignableBadgeGroup(IBadgeGroup): """A badge group pool for badges assignable by participants."""
participants_assignable_badge_group_meta = badge_group_meta._replace( iresource=IParticipantsAssignableBadgeGroup, default_workflow='badge_assignment', element_types=(IBadge, IBadgeGroup, IParticipantsAssignableBadgeGroup, ), is_implicit_addable=True, )
[docs]class IBadgesService(IServicePool): """The 'badges' ServicePool."""
badges_service_meta = service_meta._replace( iresource=IBadgesService, content_name='badges', element_types=(IBadge, IBadgeGroup, ), )
[docs]def add_badges_service(context: IPool, registry: Registry, options: dict): """Add `badge` service to context.""" creator = options.get('creator') registry.content.create(IBadgesService.__identifier__, parent=context, registry=registry, creator=creator, autoupdated=True)
[docs]class IBadgeAssignment(ISimple): """A generic badge assignment."""
badge_assignment_meta = simple_meta._replace( iresource=IBadgeAssignment, basic_sheets=( adhocracy_core.sheets.metadata.IMetadata, adhocracy_core.sheets.badge.IBadgeAssignment, adhocracy_core.sheets.description.IDescription, ), autonaming_prefix='', use_autonaming=True, permission_create='create_badge_assignment', )
[docs]class IBadgeAssignmentsService(IServicePool): """The 'badge_assignments' ServicePool."""
badge_assignments_service_meta = service_meta._replace( iresource=IBadgeAssignmentsService, content_name='badge_assignments', element_types=(IBadgeAssignment,), )
[docs]def add_badge_assignments_service(context: IPool, registry: Registry, options: dict): """Add `badge_assignments` service to context.""" creator = options.get('creator') registry.content.create(IBadgeAssignmentsService.__identifier__, parent=context, registry=registry, creator=creator, autoupdated=True)
[docs]def includeme(config): """Add resource type to registry.""" add_resource_type_to_registry(badge_meta, config) add_resource_type_to_registry(badge_group_meta, config) add_resource_type_to_registry(participants_assignable_badge_group_meta, config) add_resource_type_to_registry(badges_service_meta, config) add_resource_type_to_registry(badge_assignment_meta, config) add_resource_type_to_registry(badge_assignments_service_meta, config)