Esempio n. 1
0
    """ Password reset implementation."""
    def reset_password(self, password):
        """ Set `password` for creator user and delete itself."""
        user = get_sheet_field(self, IMetadata, 'creator')
        password_sheet = get_sheet(
            user, adhocracy_core.sheets.principal.IPasswordAuthentication)
        password_sheet.set({'password': password}, send_event=False)
        if not user.active:  # pragma: no cover
            user.activate()
        del self.__parent__[self.__name__]


passwordreset_meta = resource_meta._replace(
    iresource=IPasswordReset,
    content_class=PasswordReset,
    permission_create='create_password_reset',
    basic_sheets=(adhocracy_core.sheets.metadata.IMetadata, ),
    use_autonaming_random=True,
    after_creation=(hide, ),
)


class IPasswordResetsService(IServicePool):
    """Service Pool for Password Resets."""


passwordresets_meta = service_meta._replace(
    iresource=IPasswordResetsService,
    content_name='resets',
    element_types=[IPasswordReset],
    permission_create='create_service',
    after_creation=(hide, deny_view_permission),
Esempio n. 2
0
"""Basic simple type without children and non versionable."""
from adhocracy_core.interfaces import ISimple
import adhocracy_core.sheets.name
import adhocracy_core.sheets.metadata
import adhocracy_core.sheets.workflow
from adhocracy_core.resources import add_resource_type_to_registry
from adhocracy_core.resources import resource_meta
from adhocracy_core.resources.base import Base


simple_meta = resource_meta._replace(
    iresource=ISimple,
    content_class=Base,
    permission_create='create_simple',
    is_implicit_addable=False,
    basic_sheets=(adhocracy_core.sheets.name.IName,
                  adhocracy_core.sheets.title.ITitle,
                  adhocracy_core.sheets.metadata.IMetadata,
                  adhocracy_core.sheets.workflow.IWorkflowAssignment,
                  ),
    extended_sheets=(),
)


def includeme(config):
    """Add resource type to registry."""
    add_resource_type_to_registry(simple_meta, config)
Esempio n. 3
0
    def reset_password(self, password):
        """ Set `password` for creator user and delete itself."""
        user = get_sheet_field(self, IMetadata, 'creator')
        password_sheet = get_sheet(
            user, adhocracy_core.sheets.principal.IPasswordAuthentication)
        password_sheet.set({'password': password}, send_event=False)
        if not user.active:  # pragma: no cover
            user.activate()
        del self.__parent__[self.__name__]


passwordreset_meta = resource_meta._replace(
    iresource=IPasswordReset,
    content_class=PasswordReset,
    permission_create='create_password_reset',
    basic_sheets=(adhocracy_core.sheets.metadata.IMetadata,),
    use_autonaming_random=True,
    after_creation=(hide,),
)


class IPasswordResetsService(IServicePool):

    """Service Pool for Password Resets."""


passwordresets_meta = service_meta._replace(
    iresource=IPasswordResetsService,
    content_name='resets',
    element_types=[IPasswordReset],
    permission_create='create_service',
Esempio n. 4
0
def resource_meta() -> ResourceMetadata:
    """ Return basic resource metadata."""
    from adhocracy_core.resources import resource_meta
    from adhocracy_core.interfaces import IResource
    return resource_meta._replace(iresource=IResource)
Esempio n. 5
0
def resource_meta() -> ResourceMetadata:
    """Return basic resource metadata."""
    from adhocracy_core.resources import resource_meta
    from adhocracy_core.interfaces import IResource
    return resource_meta._replace(iresource=IResource)
Esempio n. 6
0
                                         isheet_field,
                                         old_version,
                                         new_version,
                                         registry,
                                         creator,
                                         root_versions=root_versions,
                                         is_batchmode=is_batchmode,
                                         )
        registry.notify(event)


itemversion_meta = resource_meta._replace(
    iresource=IItemVersion,
    content_class=Base,
    permission_create='create_tag',
    is_implicit_addable=False,
    basic_sheets=(adhocracy_core.sheets.metadata.IMetadata,
                  adhocracy_core.sheets.versions.IVersionable,
                  ),
    extended_sheets=(),
    after_creation=(update_last_tag,  # needs to run first, see docstring.
                    notify_new_itemversion_created),
    use_autonaming=True,
    autonaming_prefix='VERSION_',
)


def includeme(config):
    """Add resource type to registry."""
    add_resource_type_to_registry(itemversion_meta, config)
Esempio n. 7
0
    def get_response(self, registry: Registry = None) -> FileResponse:
        """Return response with binary content of the asset data."""
        file = self._get_asset_file_in_lineage(registry)
        return file.get_response()

    def _get_asset_file_in_lineage(self, registry) -> File:
        asset = find_interface(self, IAssetData)
        if asset is None:
            msg = 'No IAssetData in lineage of {}'.format(self)
            raise RuntimeConfigurationError(details=msg)
        return registry.content.get_sheet_field(asset, IAssetData, 'data')


asset_download_meta = resource_meta._replace(
    content_name='AssetDownload',
    iresource=IAssetDownload,
    use_autonaming=True,
    content_class=AssetDownload,
    permission_create='create_asset_download')


class IAsset(ISimple):
    """A generic asset (binary file)."""


def add_metadata(context: IAsset, registry: Registry, **kwargs):
    """Store asset file metadata and add `raw` download to `context`."""
    file = registry.content.get_sheet_field(context, IAssetData, 'data')
    meta_isheet = get_matching_isheet(context, IAssetMetadata)
    meta_sheet = registry.content.get_sheet(context, meta_isheet)
    meta_appstruct = {
        'size': file.size,
Esempio n. 8
0
"""Basic simple type without children and non versionable."""
from adhocracy_core.interfaces import ISimple
import adhocracy_core.sheets.name
import adhocracy_core.sheets.metadata
import adhocracy_core.sheets.workflow
from adhocracy_core.resources import add_resource_type_to_registry
from adhocracy_core.resources import resource_meta
from adhocracy_core.resources.base import Base

simple_meta = resource_meta._replace(
    iresource=ISimple,
    content_class=Base,
    permission_create='create_simple',
    is_implicit_addable=False,
    basic_sheets=(
        adhocracy_core.sheets.name.IName,
        adhocracy_core.sheets.title.ITitle,
        adhocracy_core.sheets.metadata.IMetadata,
        adhocracy_core.sheets.workflow.IWorkflowAssignment,
    ),
    extended_sheets=(),
)


def includeme(config):
    """Add resource type to registry."""
    add_resource_type_to_registry(simple_meta, config)
Esempio n. 9
0
"""TAG type to label itemversions."""
from adhocracy_core.interfaces import ITag
from adhocracy_core.resources import add_resource_type_to_registry
from adhocracy_core.resources import resource_meta
from adhocracy_core.resources.base import Base
import adhocracy_core.sheets.name
import adhocracy_core.sheets.tags
import adhocracy_core.sheets.metadata


tag_meta = resource_meta._replace(
    iresource=ITag,
    content_class=Base,
    permission_create='create_tag',
    is_implicit_addable=False,
    basic_sheets=(adhocracy_core.sheets.name.IName,
                  adhocracy_core.sheets.metadata.IMetadata,
                  adhocracy_core.sheets.tags.ITag,
                  ),
    extended_sheets=(),
)


def includeme(config):
    """Add resource type to registry."""
    add_resource_type_to_registry(tag_meta, config)
Esempio n. 10
0
        res = super().remove(name,
                             registry=registry,
                             send_events=send_events,
                             **kwargs)
        graph.send_back_reference_removal_notificatons(references, registry)
        return res


pool_meta = resource_meta._replace(
    iresource=IPool,
    content_class=Pool,
    permission_create='create_pool',
    is_implicit_addable=False,
    basic_sheets=(adhocracy_core.sheets.name.IName,
                  adhocracy_core.sheets.title.ITitle,
                  adhocracy_core.sheets.pool.IPool,
                  adhocracy_core.sheets.metadata.IMetadata,
                  adhocracy_core.sheets.workflow.IWorkflowAssignment,
                  adhocracy_core.sheets.localroles.ILocalRoles,
                  ),
    extended_sheets=(),
    element_types=(IPool,),
)


basicpool_meta = pool_meta._replace(
    iresource=IBasicPool,
    is_implicit_addable=True,
)

Esempio n. 11
0
                                         isheet,
                                         isheet_field,
                                         old_version,
                                         new_version,
                                         registry,
                                         creator,
                                         root_versions=root_versions,
                                         is_batchmode=is_batchmode,
                                         )
        registry.notify(event)


itemversion_meta = resource_meta._replace(
    iresource=IItemVersion,
    content_class=Base,
    permission_create='create_tag',
    is_implicit_addable=False,
    basic_sheets=(adhocracy_core.sheets.metadata.IMetadata,
                  adhocracy_core.sheets.versions.IVersionable,
                  ),
    extended_sheets=(),
    after_creation=(notify_new_itemversion_created,),
    use_autonaming=True,
    autonaming_prefix='VERSION_',
)


def includeme(config):
    """Add resource type to registry."""
    add_resource_type_to_registry(itemversion_meta, config)
Esempio n. 12
0
        res = super().remove(name,
                             registry=registry,
                             send_events=send_events,
                             **kwargs)
        graph.send_back_reference_removal_notificatons(references, registry)
        return res


pool_meta = resource_meta._replace(
    iresource=IPool,
    content_class=Pool,
    permission_create='create_pool',
    is_implicit_addable=False,
    basic_sheets=(
        adhocracy_core.sheets.name.IName,
        adhocracy_core.sheets.title.ITitle,
        adhocracy_core.sheets.pool.IPool,
        adhocracy_core.sheets.metadata.IMetadata,
        adhocracy_core.sheets.workflow.IWorkflowAssignment,
        adhocracy_core.sheets.localroles.ILocalRoles,
    ),
    extended_sheets=(),
    element_types=(IPool, ),
)

basicpool_meta = pool_meta._replace(
    iresource=IBasicPool,
    is_implicit_addable=True,
)


def includeme(config):
Esempio n. 13
0
        """Return response with binary content of the asset data."""
        file = self._get_asset_file_in_lineage(registry)
        return file.get_response()

    def _get_asset_file_in_lineage(self, registry) -> File:
        asset = find_interface(self, IAssetData)
        if asset is None:
            msg = 'No IAssetData in lineage of {}'.format(self)
            raise RuntimeConfigurationError(details=msg)
        return registry.content.get_sheet_field(asset, IAssetData, 'data')


asset_download_meta = resource_meta._replace(
    content_name='AssetDownload',
    iresource=IAssetDownload,
    use_autonaming=True,
    content_class=AssetDownload,
    permission_create='create_asset_download'
)


class IAsset(ISimple):
    """A generic asset (binary file)."""


def add_metadata(context: IAsset, registry: Registry, **kwargs):
    """Store asset file metadata and add `raw` download to `context`."""
    file = registry.content.get_sheet_field(context, IAssetData, 'data')
    meta_isheet = get_matching_isheet(context, IAssetMetadata)
    meta_sheet = registry.content.get_sheet(context, meta_isheet)
    meta_appstruct = {