'workflow_transition',
    meta.metadata,
    Column('id', types.UnicodeText, primary_key=True,
           default=_types.make_uuid),
    Column('from_state_id', types.UnicodeText,
           ForeignKey('workflow_state.id')),
    Column('to_state_id',
           types.UnicodeText,
           ForeignKey('workflow_state.id'),
           nullable=False),
    UniqueConstraint('from_state_id', 'to_state_id'),
    CheckConstraint('from_state_id is null or from_state_id != to_state_id'),
)

vdm.sqlalchemy.make_table_stateful(workflow_transition_table)
workflow_transition_revision_table = core.make_revisioned_table(
    workflow_transition_table)


class WorkflowTransition(vdm.sqlalchemy.RevisionedObjectMixin,
                         vdm.sqlalchemy.StatefulObjectMixin,
                         domain_object.DomainObject):
    @classmethod
    def get(cls, reference):
        """
        Returns a workflow_transition object referenced by its id.
        """
        if not reference:
            return None

        return meta.Session.query(cls).get(reference)
Пример #2
0
from sqlalchemy import types, Table, Column
import vdm.sqlalchemy

from ckan.model import meta, core, types as _types, domain_object

workflow_annotation_table = Table(
    'workflow_annotation',
    meta.metadata,
    Column('id', types.UnicodeText, primary_key=True,
           default=_types.make_uuid),
    Column('name', types.UnicodeText, nullable=False, unique=True),
    Column('attributes', types.UnicodeText, nullable=False),
)

vdm.sqlalchemy.make_table_stateful(workflow_annotation_table)
workflow_annotation_revision_table = core.make_revisioned_table(
    workflow_annotation_table)


class WorkflowAnnotation(vdm.sqlalchemy.RevisionedObjectMixin,
                         vdm.sqlalchemy.StatefulObjectMixin,
                         domain_object.DomainObject):
    @classmethod
    def get(cls, reference):
        """
        Returns a workflow_annotation object referenced by its id or name.
        """
        if not reference:
            return None

        workflow_annotation = meta.Session.query(cls).get(reference)
        if workflow_annotation is None:
Пример #3
0
from ckan.model import meta, core, types as _types, domain_object


metadata_json_attr_map_table = Table(
    'metadata_json_attr_map', meta.metadata,
    Column('id', types.UnicodeText, primary_key=True, default=_types.make_uuid),
    Column('json_path', types.UnicodeText, nullable=False),
    Column('record_attr', types.UnicodeText, nullable=False),
    Column('is_key', types.Boolean, nullable=False),
    Column('metadata_standard_id', types.UnicodeText, ForeignKey('metadata_standard.id'), nullable=False),
    UniqueConstraint('metadata_standard_id', 'record_attr'),
)

vdm.sqlalchemy.make_table_stateful(metadata_json_attr_map_table)
metadata_json_attr_map_revision_table = core.make_revisioned_table(metadata_json_attr_map_table)


class MetadataJSONAttrMap(vdm.sqlalchemy.RevisionedObjectMixin,
                          vdm.sqlalchemy.StatefulObjectMixin,
                          domain_object.DomainObject):

    @classmethod
    def get(cls, reference):
        """
        Returns a MetadataJSONAttrMap object referenced by its id.
        """
        if not reference:
            return None

        return meta.Session.query(cls).get(reference)
Пример #4
0
    meta.metadata,
    Column('id', types.UnicodeText, primary_key=True,
           default=_types.make_uuid),
    Column('user_id', types.UnicodeText, ForeignKey('user.id'),
           nullable=False),
    Column('role_id', types.UnicodeText, ForeignKey('role.id'),
           nullable=False),
    Column('organization_id',
           types.UnicodeText,
           ForeignKey('group.id'),
           nullable=False),
    UniqueConstraint('user_id', 'role_id', 'organization_id'),
)

vdm.sqlalchemy.make_table_stateful(user_role_table)
user_role_revision_table = core.make_revisioned_table(user_role_table)


class UserRole(vdm.sqlalchemy.RevisionedObjectMixin,
               vdm.sqlalchemy.StatefulObjectMixin, domain_object.DomainObject):
    @classmethod
    def get(cls, reference):
        """
        Returns a UserRole object referenced by its id.
        """
        if not reference:
            return None

        return meta.Session.query(cls).get(reference)

    @classmethod
Пример #5
0
import vdm.sqlalchemy

from ckan.model import meta, core, types as _types, domain_object

role_table = Table(
    'role',
    meta.metadata,
    Column('id', types.UnicodeText, primary_key=True,
           default=_types.make_uuid),
    Column('name', types.UnicodeText, nullable=False, unique=True),
    Column('title', types.UnicodeText),
    Column('description', types.UnicodeText),
)

vdm.sqlalchemy.make_table_stateful(role_table)
role_revision_table = core.make_revisioned_table(role_table)


class Role(vdm.sqlalchemy.RevisionedObjectMixin,
           vdm.sqlalchemy.StatefulObjectMixin, domain_object.DomainObject):
    @classmethod
    def get(cls, reference):
        """
        Returns a Role object referenced by its id or name.
        """
        if not reference:
            return None

        role = meta.Session.query(cls).get(reference)
        if role is None:
            role = cls.by_name(reference)
from ckan.model import meta, core, types as _types, domain_object

role_permission_table = Table(
    'role_permission',
    meta.metadata,
    Column('id', types.UnicodeText, primary_key=True,
           default=_types.make_uuid),
    Column('role_id', types.UnicodeText, ForeignKey('role.id'),
           nullable=False),
    Column('content_type', types.UnicodeText, nullable=False),
    Column('operation', types.UnicodeText, nullable=False),
    UniqueConstraint('role_id', 'content_type', 'operation'),
)

vdm.sqlalchemy.make_table_stateful(role_permission_table)
role_permission_revision_table = core.make_revisioned_table(
    role_permission_table)


class RolePermission(vdm.sqlalchemy.RevisionedObjectMixin,
                     vdm.sqlalchemy.StatefulObjectMixin,
                     domain_object.DomainObject):
    @classmethod
    def get(cls, reference):
        """
        Returns a RolePermission object referenced by its id.
        """
        if not reference:
            return None

        return meta.Session.query(cls).get(reference)
Пример #7
0
    Column('id', types.UnicodeText, primary_key=True,
           default=_types.make_uuid),
    Column('model_name', types.UnicodeText, nullable=False),
    Column('object_id', types.UnicodeText, nullable=False),
    Column('operation', _types.JsonDictType),
    Column('scope', types.UnicodeText),
    Column('ordinal', types.Integer, nullable=False, default=0),
    Column('timestamp',
           types.DateTime,
           nullable=False,
           default=datetime.datetime.utcnow),
    Column('data', _types.JsonDictType),
)

vdm.sqlalchemy.make_table_stateful(jsonpatch_table)
jsonpatch_revision_table = core.make_revisioned_table(jsonpatch_table)


class JSONPatch(vdm.sqlalchemy.RevisionedObjectMixin,
                vdm.sqlalchemy.StatefulObjectMixin,
                domain_object.DomainObject):
    @classmethod
    def get(cls, reference):
        """
        Returns a JSONPatch object referenced by its id.
        """
        if not reference:
            return None

        return meta.Session.query(cls).get(reference)
Пример #8
0
    meta.metadata,
    Column('id', types.UnicodeText, primary_key=True,
           default=_types.make_uuid),
    Column('name', types.UnicodeText, nullable=False, unique=True),
    Column('description', types.UnicodeText),
    Column('standard_name', types.UnicodeText, nullable=False),
    Column('standard_version', types.UnicodeText, nullable=False),
    # we implement the self-relation "softly", otherwise revision table
    # auto-generation gets confused about how to join to this table
    Column('parent_standard_id',
           types.UnicodeText),  # ForeignKey('metadata_standard.id')),
    Column('metadata_template_json', types.UnicodeText),
    UniqueConstraint('standard_name', 'standard_version'))

vdm.sqlalchemy.make_table_stateful(metadata_standard_table)
metadata_standard_revision_table = core.make_revisioned_table(
    metadata_standard_table)


class MetadataStandard(vdm.sqlalchemy.RevisionedObjectMixin,
                       vdm.sqlalchemy.StatefulObjectMixin,
                       domain_object.DomainObject):
    @classmethod
    def get(cls, reference):
        """
        Returns a metadata_standard object referenced by its id or name.
        """
        if not reference:
            return None

        metadata_standard = meta.Session.query(cls).get(reference)
        if metadata_standard is None:
Пример #9
0
mapper(KataAccessRequest, kata_access_request_table, extension=[
                            extension.PluginMapperExtension(),
               ]
            )


user_extra_table = Table('user_extra', meta.metadata,
    Column('id', types.UnicodeText, primary_key=True, default=_types.make_uuid),
    Column('user_id', types.UnicodeText, ForeignKey('user.id')),
    Column('key', types.UnicodeText),
    Column('value', _types.JsonType),
)

vdm.sqlalchemy.make_table_stateful(user_extra_table)
user_extra_revision_table = core.make_revisioned_table(user_extra_table)


class UserExtra(vdm.sqlalchemy.RevisionedObjectMixin,
        vdm.sqlalchemy.StatefulObjectMixin,
        domain_object.DomainObject):
    pass

meta.mapper(UserExtra, user_extra_table, properties={
    'user': orm.relation(user.User,
        backref=orm.backref('_extras',
            collection_class=orm.collections.attribute_mapped_collection(u'key'),
            cascade='all, delete, delete-orphan',
            ),
        )
    },
Пример #10
0
           default=_types.make_uuid),
    Column('name', types.UnicodeText, nullable=False, unique=True),
    Column('description', types.UnicodeText),
    Column('metadata_standard_id',
           types.UnicodeText,
           ForeignKey('metadata_standard.id'),
           nullable=False),
    Column('organization_id', types.UnicodeText, ForeignKey('group.id')),
    Column('infrastructure_id', types.UnicodeText, ForeignKey('group.id')),
    Column('schema_json', types.UnicodeText),
    # null organization & infrastructure implies that the object is the default schema for the given metadata standard
    UniqueConstraint('metadata_standard_id', 'organization_id',
                     'infrastructure_id'))

vdm.sqlalchemy.make_table_stateful(metadata_schema_table)
metadata_schema_revision_table = core.make_revisioned_table(
    metadata_schema_table)


class MetadataSchema(vdm.sqlalchemy.RevisionedObjectMixin,
                     vdm.sqlalchemy.StatefulObjectMixin,
                     domain_object.DomainObject):
    @classmethod
    def get(cls, reference):
        """
        Returns a metadata_schema object referenced by its id or name.
        """
        if not reference:
            return None

        metadata_schema = meta.Session.query(cls).get(reference)
        if metadata_schema is None:
Пример #11
0
    meta.metadata,
    Column('id', types.UnicodeText, primary_key=True,
           default=_types.make_uuid),
    Column('name', types.UnicodeText, nullable=False, unique=True),
    Column('title', types.UnicodeText),
    Column('description', types.UnicodeText),
    Column('workflow_rules_json', types.UnicodeText),
    Column('metadata_records_private', types.Boolean, nullable=False),
    # we implement the self-relation "softly", otherwise revision table
    # auto-generation gets confused about how to join to this table
    Column('revert_state_id',
           types.UnicodeText),  # ForeignKey('workflow_state.id')),
)

vdm.sqlalchemy.make_table_stateful(workflow_state_table)
workflow_state_revision_table = core.make_revisioned_table(
    workflow_state_table)


class WorkflowState(vdm.sqlalchemy.RevisionedObjectMixin,
                    vdm.sqlalchemy.StatefulObjectMixin,
                    domain_object.DomainObject):
    @classmethod
    def get(cls, reference):
        """
        Returns a workflow_state object referenced by its id or name.
        """
        if not reference:
            return None

        workflow_state = meta.Session.query(cls).get(reference)
        if workflow_state is None: