""" 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),
"""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)
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',
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)
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)
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)
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,
"""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)
"""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)
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, )
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)
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):
"""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 = {