Exemple #1
0
def define_page_group_association_table():
    global page_group_association_table

    page_group_association_table = Table(
        'page_group_association', meta.metadata,
        Column('group_id',
               types.UnicodeText,
               ForeignKey('group.id', ondelete='CASCADE', onupdate='CASCADE'),
               primary_key=True,
               nullable=False),
        Column('page_id',
               types.UnicodeText,
               ForeignKey('page.id', ondelete='CASCADE', onupdate='CASCADE'),
               primary_key=True,
               nullable=False))

    meta.mapper(PageGroupAssociation,
                page_group_association_table,
                properties={
                    'page':
                    orm.relation(Page,
                                 backref=orm.backref(
                                     'countries_assoc_all',
                                     cascade='all, delete-orphan'))
                })
Exemple #2
0
def define_git_branch_table():
    global git_branch_table

    git_branch_table = Table(
        'git_branch', metadata,
        Column('id', types.Integer,
               primary_key=True,
               nullable=False,
               autoincrement=True),
        Column('resource_id', types.UnicodeText,
               ForeignKey('resource.id',
                          ondelete='CASCADE',
                          onupdate='CASCADE'),
               nullable=False),
        Column('user_id', types.UnicodeText,
               ForeignKey('user.id',
                          ondelete='CASCADE',
                          onupdate='CASCADE'),
               nullable=False),
        Column('branch', types.UnicodeText,
               nullable=False),
        Column('title', types.Text,
               nullable=False),
        Column('description', types.Text,
               nullable=True),
        Column('status', types.UnicodeText,
               nullable=False)
    )

    mapper(
        GitBranch,
        git_branch_table,
    )
Exemple #3
0
def define_searched_string_table():

    global searched_string_table

    searched_string_table = Table(
        'searched_string',
        meta.metadata,
        Column('id',
               types.UnicodeText,
               primary_key=True,
               default=ckan_types.make_uuid),
        Column('last_modified',
               types.DateTime,
               default=datetime.datetime.utcnow),
        Column('user',
               types.UnicodeText,
               ForeignKey('user.id', ondelete='CASCADE', onupdate='CASCADE'),
               nullable=False,
               index=True),
        Column('search_string', types.UnicodeText, index=True),
        # Index('ix_searched_string_last_modified_desc', 'last_modified', postgresql_using='btree'),
        UniqueConstraint('search_string', 'user'))

    Index('ix_searched_string_last_modified_desc',
          searched_string_table.c.last_modified.desc())

    meta.mapper(SearchedString, searched_string_table)
Exemple #4
0
def define_tables():
    """Create in-memory representation of the harvest tables"""
    # Define the tables
    node_table = Table(
        "harvest_node", meta.metadata,
        Column("id", types.Integer, primary_key=True),
        Column("url", types.UnicodeText), Column("frequency",
                                                 types.UnicodeText),
        Column("title", types.UnicodeText),
        Column("node_admin_id", types.Integer,
               ForeignKey("responsible_party.id")))

    harvest_record_table = Table(
        "harvested_record", meta.metadata,
        Column("id", types.Integer, primary_key=True),
        Column("package_id", types.UnicodeText, ForeignKey("package.id")),
        Column("harvest_node_id", types.Integer,
               ForeignKey("harvest_node.id")),
        Column("harvested_xml", types.UnicodeText))

    # Map classes to tables
    meta.mapper(HarvestNode,
                node_table,
                properties={"node_admin": relationship(ResponsibleParty)})

    meta.mapper(HarvestedRecord,
                harvest_record_table,
                properties={
                    "package": relationship(Package),
                    "harvest_node": relationship(HarvestNode)
                })

    # Add classes to memory
    model.HarvestNode = HarvestNode
    model.HarvestedRecord = HarvestedRecord
Exemple #5
0
def define_tables():
    global link_validation_result_table, link_validation_referrer_table

    if link_validation_result_table is not None:
        return

    link_validation_result_columns = (
        Column('id', types.UnicodeText, primary_key=True, default=make_uuid),
        Column('type', types.UnicodeText, default=None),
        Column('timestamp', types.DateTime, default=datetime.datetime.utcnow),
        Column('url', types.UnicodeText, nullable=False),
    )
    link_validation_result_table = Table('link_validation_result', metadata,
                                         *link_validation_result_columns)

    link_validation_referrer_columns = (
        Column('id', types.UnicodeText, primary_key=True, default=make_uuid),
        Column('result_id', types.UnicodeText,
               ForeignKey('link_validation_result.id')),
        Column('url', types.UnicodeText, nullable=False),
    )
    link_validation_referrer_table = Table('link_validation_referrer',
                                           metadata,
                                           *link_validation_referrer_columns)

    mapper(LinkValidationResult, link_validation_result_table)

    mapper(LinkValidationReferrer,
           link_validation_referrer_table,
           properties={
               'result': relation(LinkValidationResult, backref='referrers'),
           })
Exemple #6
0
def define_query_tool_table():
    global query_tool_table

    query_tool_table = Table(
        'ckanext_querytool', metadata,
        Column('id', types.UnicodeText, primary_key=True, default=make_uuid),
        Column('name', types.UnicodeText, nullable=False),
        Column('title', types.UnicodeText, nullable=False),
        Column('description', types.UnicodeText, default=u''),
        Column('dataset_name', types.UnicodeText, nullable=False),
        Column('chart_resource', types.UnicodeText, nullable=False),
        Column('filters', types.UnicodeText, default=u''),
        Column('y_axis_columns', types.UnicodeText, default=u''),
        Column('sql_string', types.UnicodeText, default=u''),
        Column('related_querytools', types.UnicodeText, default=u''),
        Column('created', types.DateTime, default=datetime.datetime.utcnow),
        Column('modified', types.DateTime, default=datetime.datetime.utcnow),
        Column('private', types.Boolean, default=True),
        Column('type', types.UnicodeText, nullable=False),
        Column('icon', types.UnicodeText, nullable=True),
        Column('image_url', types.UnicodeText, nullable=True),
        Column('image_display_url', types.UnicodeText, nullable=True),
        Column('group', types.UnicodeText, nullable=False),
        Column('owner_org', types.UnicodeText, nullable=False),
        Column('additional_description', types.UnicodeText, default=u''),
        Column('selection_label', types.UnicodeText, default=u''),
        Column('report_caption', types.UnicodeText, default=u''),
        Index('ckanext_querytool_id_idx', 'id'))

    mapper(CkanextQueryTool, query_tool_table)
Exemple #7
0
def define_gdpr_accept_table():
    global gdpr_accept_table

    gdpr_accept_table = Table(
        'gdpr_accept', metadata,
        Column('id', types.Integer,
               primary_key=True,
               nullable=False,
               autoincrement=True),
        Column('datetime', types.DateTime,
               nullable=False,
               autoincrement=True),
        Column('user_id', types.UnicodeText,
               ForeignKey('user.id',
                          ondelete='CASCADE',
                          onupdate='CASCADE'),
               nullable=False),
        Column('policy_id', types.Integer,
               ForeignKey('gdpr_policy.id',
                          ondelete='CASCADE',
                          onupdate='CASCADE'),
               nullable=False)
    )

    mapper(
        GDPRAccept,
        gdpr_accept_table,
    )
def setup_spatial_table(package_extent_class, db_srid=None):

    if legacy_geoalchemy:

        package_extent_table = Table(
            'package_extent', meta.metadata,
            Column('package_id', types.UnicodeText, primary_key=True),
            GeometryExtensionColumn('the_geom', Geometry(2, srid=db_srid))
        )

        meta.mapper(
            package_extent_class,
            package_extent_table,
            properties={'the_geom':
                        GeometryColumn(package_extent_table.c.the_geom,
                                       comparator=PGComparator)}
        )

        GeometryDDL(package_extent_table)
    else:

        # PostGIS 1.5 requires management=True when defining the Geometry
        # field
        management = (postgis_version()[:1] == '1')

        package_extent_table = Table(
            'package_extent', meta.metadata,
            Column('package_id', types.UnicodeText, primary_key=True),
            Column('the_geom', Geometry('GEOMETRY', srid=db_srid,
                                        management=management)),
        )

        meta.mapper(package_extent_class, package_extent_table)

    return package_extent_table
Exemple #9
0
def define_tables():
    global saha_organization_table

    if saha_organization_table is not None:
        return

    saha_organization_columns = (
        Column('id', types.UnicodeText, primary_key=True),
        Column('groupId',
               types.UnicodeText,
               ForeignKey('group.id'),
               nullable=True),
        Column('modifiedDate',
               types.DateTime,
               default=datetime.datetime.utcnow),
        Column('organizationName', types.UnicodeText),
        Column('organizationUnit', types.UnicodeText),
        Column('businessId', types.UnicodeText),
    )
    saha_organization_table = Table('saha_organization', metadata,
                                    *saha_organization_columns)

    mapper(SahaOrganization,
           saha_organization_table,
           properties={
               'group': relation(group.Group),
           })
def define_esd_tables():
    global esd_function_table
    global esd_service_table

    esd_function_table = Table('esd_function', metadata,
                               Column('id', types.UnicodeText,
                                      primary_key=True,
                                      default=_make_uuid),
                               Column('esd_id', types.UnicodeText, nullable=False),
                               Column('title', types.UnicodeText),
                               Column('description', types.UnicodeText),
                               Column('uri', types.UnicodeText),
                               Column('parent', types.UnicodeText))

    mapper(ESDFunction, esd_function_table)

    esd_service_table = Table('esd_service', metadata,
                              Column('id', types.UnicodeText,
                                     primary_key=True,
                                     default=_make_uuid),
                              Column('esd_id', types.UnicodeText, nullable=False),
                              Column('title', types.UnicodeText),
                              Column('description', types.UnicodeText),
                              Column('uri', types.UnicodeText))

    mapper(ESDService, esd_service_table)
def define_security_member_table():
    global security_member_table

    security_member_table = Table(
        'security_member', meta.metadata,
        Column('id', types.Integer, primary_key=True, autoincrement=True),
        Column('member_id',
               types.UnicodeText,
               primary_key=True,
               nullable=False),
        Column('user_id', types.UnicodeText, nullable=False),
        Column('group_id', types.UnicodeText, nullable=False),
        Column('state', types.UnicodeText, nullable=False),
        Column('dataset_type', types.UnicodeText, nullable=False),
        Column('classification', types.UnicodeText, nullable=False),
        ForeignKeyConstraint(['member_id'], ['member.id'],
                             onupdate="CASCADE",
                             ondelete="CASCADE"),
        UniqueConstraint('member_id',
                         'user_id',
                         'group_id',
                         'dataset_type',
                         name='uix_1'))

    meta.mapper(SecurityMember, security_member_table)
Exemple #12
0
def define_querytool_visualizations_table():
    global query_tool_visualizations_table

    query_tool_visualizations_table = \
        Table('ckanext_querytool_visualizations', metadata,
              Column('id', types.UnicodeText,
                     primary_key=True,
                     default=make_uuid),
              Column('ckanext_querytool_id', types.UnicodeText,
                     ForeignKey('ckanext_querytool.id')),
              Column('name',
                     types.UnicodeText,
                     nullable=False),
              Column('charts',
                     types.UnicodeText,
                     nullable=False),
              Index('ckanext_querytool_visualizations_id_idx',
                    'id'))

    mapper(
        CkanextQueryToolVisualizations,
        query_tool_visualizations_table,
        properties={'ckanext_querytool': orm.relation(CkanextQueryTool,
                    backref=orm.backref('ckanext_querytool_visualizations',
                                        collection_class=orm.collections.
                                        attribute_mapped_collection(u'id'),
                                        cascade='all, delete, delete-orphan',
                                        ),
        )
                    }
    )
Exemple #13
0
def define_miscs_solr_sync_table():
    global miscs_solr_sync_table
    miscs_solr_sync_table = Table('miscs_solr_sync', meta.metadata,
        Column('pkg_id', types.UnicodeText, primary_key=True),
        Column('action', types.UnicodeText, index=True, nullable=False, default=u''),
    )

    meta.mapper(MiscsSolrSync, miscs_solr_sync_table)
Exemple #14
0
def define_miscs_feed_table():
    global miscs_feed_table
    miscs_feed_table = Table('miscs_feed', meta.metadata,
        Column('id', types.UnicodeText, primary_key=True, default=model.types.make_uuid),
        Column('feed', types.UnicodeText, nullable=False, default=u''),
    )

    meta.mapper(MiscsFeed, miscs_feed_table)
Exemple #15
0
def define_miscs_topic_csv_table():
    global miscs_topic_csv_table
    miscs_topic_csv_table = Table('miscs_topic_csv', meta.metadata,
        Column('id', types.UnicodeText, primary_key=True, default=model.types.make_uuid),
        Column('date', types.UnicodeText, index=True, unique=True, nullable=False, default=u''),
        Column('csv', types.UnicodeText, nullable=False, default=u''),
    )

    meta.mapper(MiscsTopicCSV, miscs_topic_csv_table)
Exemple #16
0
def define_tables():
    """
    Create in-memory representation of the tables, configure mappings to 
    python classes, and return the tables
    
    Table generation code is lifted from csw extension
    """
    contentmodel_record = Table(
        "contentmodel_record",
        meta.metadata,

        # core; nothing happens without these
        Column('identifier', String(256), primary_key=True),
        Column('typename',
               String(32),
               default='contentmodel:Record',
               nullable=False,
               index=True),
        Column('status', types.UnicodeText),
        Column('description', types.UnicodeText),
        Column('title', types.UnicodeText),
        Column('date_updated', types.DateTime),
        Column('discussion', types.UnicodeText),
        # Column('versions', String(256), ForeignKey("contentmodelversion.uri")),
        Column('uri', String(256)))

    contentmodel_version_record = Table(
        "contentmodel_version_record",
        meta.metadata,
        Column('typename',
               String(32),
               default='contentmodelversion:Record',
               nullable=False,
               index=True),
        Column('contentmodel_record', String(256),
               ForeignKey("contentmodel_record.identifier")
               ),  # Implicit Foreign Key to the content model
        Column("uri", String(256), primary_key=True),
        Column("xsd_file_path", String(256)),
        Column("version", String(32)),
        Column("xls_file_path", String(256)),
        Column("date_created", types.DateTime),
        Column("sample_wfs_request", String(256)))

    # Map the table to the class...
    meta.mapper(ContentModelRecord, contentmodel_record)
    meta.mapper(
        ContentModelVersion,
        contentmodel_version_record,
        properties={"contentmodel_record": relationship(ContentModelRecord)})

    # put the ContentModelRecord class into CKAN model for later reference
    model.ContentModelRecord = ContentModelRecord
    model.ContentModelVersion = ContentModelVersion

    return contentmodel_record
Exemple #17
0
def define_tables():
    """
    Create in-memory representation of the tables, configure mappings to 
    python classes, and return the tables
    
    Table generation code is lifted from csw extension
    """
    contentmodel_record = Table(
        "contentmodel_record", meta.metadata,
        
        # core; nothing happens without these
        Column('identifier', String(256), primary_key=True),
        Column('typename', String(32),
               default='contentmodel:Record', nullable=False, index=True),
        
        Column('status', types.UnicodeText),
        Column('description', types.UnicodeText),
        Column('title', types.UnicodeText),
        Column('date_updated', types.DateTime),
        Column('discussion', types.UnicodeText), 
        # Column('versions', String(256), ForeignKey("contentmodelversion.uri")), 
        Column('uri', String(256))
    )
    
    contentmodel_version_record = Table(
        "contentmodel_version_record", meta.metadata,
        Column('typename', String(32),
               default='contentmodelversion:Record', nullable=False, index=True),
        Column('contentmodel_record', String(256), ForeignKey("contentmodel_record.identifier")), # Implicit Foreign Key to the content model
        Column("uri", String(256), primary_key=True),
        Column("xsd_file_path", String(256)),
        Column("version", String(32)),
        Column("xls_file_path", String(256)),
        Column("date_created", types.DateTime),
        Column("sample_wfs_request", String(256))
    )
    
    # Map the table to the class...
    meta.mapper(
        ContentModelRecord, 
        contentmodel_record
    )
    meta.mapper(
        ContentModelVersion, 
        contentmodel_version_record,
        properties={
            "contentmodel_record": relationship(ContentModelRecord)
        }
    )
    
    # put the ContentModelRecord class into CKAN model for later reference
    model.ContentModelRecord = ContentModelRecord
    model.ContentModelVersion = ContentModelVersion
    
    return contentmodel_record
def define_showcase_admin_table():
    global showcase_admin_table

    showcase_admin_table = Table('showcase_admin', metadata,
                                 Column('user_id', types.UnicodeText,
                                        ForeignKey('user.id',
                                                   ondelete='CASCADE',
                                                   onupdate='CASCADE'),
                                        primary_key=True, nullable=False))

    mapper(ShowcaseAdmin, showcase_admin_table)
Exemple #19
0
def define_project_admin_table():
    global project_admin_table

    project_admin_table = Table('project_admin', metadata,
                                 Column('user_id', types.UnicodeText,
                                        ForeignKey('user.id',
                                                   ondelete='CASCADE',
                                                   onupdate='CASCADE'),
                                        primary_key=True, nullable=False))

    mapper(projectAdmin, project_admin_table)
def define_user_notification_table():
    global user_notification_table

    user_notification_table = Table(
        'ckanext_requestdata_user_notification', metadata,
        Column('id', types.UnicodeText, primary_key=True, default=make_uuid),
        Column('package_maintainer_id', types.UnicodeText, nullable=False),
        Column('seen', types.Boolean, default=False),
        Index('ckanext_requestdata_user_notification_id_idx', 'id'))

    mapper(ckanextUserNotification, user_notification_table)
Exemple #21
0
def define_showcase_admin_table():
    global showcase_admin_table

    showcase_admin_table = Table('showcase_admin', metadata,
                                 Column('user_id', types.UnicodeText,
                                        ForeignKey('user.id',
                                                   ondelete='CASCADE',
                                                   onupdate='CASCADE'),
                                        primary_key=True, nullable=False))

    mapper(ShowcaseAdmin, showcase_admin_table)
Exemple #22
0
def define_user_roles_table():
    global user_roles_table
    user_roles_table = Table(
        'user_roles',
        metadata,
        Column('id', types.UnicodeText, primary_key=True, default=make_uuid),
        Column('user_id', types.UnicodeText, ForeignKey('user.id')),
        Column('role', types.UnicodeText),
    )

    mapper(UserRoles, user_roles_table)
Exemple #23
0
def define_dataset_source_table():
    global dataset_source_table

    dataset_source_table = Table(
        'mzp_dataset_source', metadata,
        Column('id', types.Integer, primary_key=True, nullable=False),
        Column(
            'package_id', types.UnicodeText,
            ForeignKey('package.id', ondelete='CASCADE', onupdate='CASCADE')),
        Column('source_title', types.UnicodeText, nullable=False),
        Column('source_link', types.UnicodeText, nullable=False))
    mapper(DatasetSourceModel, dataset_source_table)
Exemple #24
0
def define_cadasta_admin_table():
    global cadasta_admin_table

    cadasta_admin_table = Table(
        'cadasta_admin', meta.metadata,
        Column('user_id',
               types.UnicodeText,
               ForeignKey('user.id', ondelete='CASCADE', onupdate='CASCADE'),
               primary_key=True,
               nullable=False))

    meta.mapper(CadastaAdmin, cadasta_admin_table)
Exemple #25
0
def define_experience_admin_table():
    global experience_admin_table

    experience_admin_table = Table(
        'experience_admin', metadata,
        Column('user_id',
               types.UnicodeText,
               ForeignKey('user.id', ondelete='CASCADE', onupdate='CASCADE'),
               primary_key=True,
               nullable=False))

    mapper(ExperienceAdmin, experience_admin_table)
Exemple #26
0
def define_security_tables():
    global user_security_totp
    if user_security_totp is not None:
        return
    user_security_totp = Table(
        'user_security_totp', metadata,
        Column('id', types.Integer, primary_key=True),
        Column('user_id', types.UnicodeText, default=u''),
        Column('secret', types.UnicodeText, default=u''),
        Column('last_successful_challenge', types.DateTime))

    mapper(SecurityTOTP, user_security_totp)
def define_cas_tables():
    global cas_table
    cas_table = Table('ckanext_cas_login', metadata,
                      Column('ticket_id', types.UnicodeText, primary_key=True, nullable=False),
                      Column('user', types.UnicodeText, default=u'', nullable=False, unique=True),
                      Column('timestamp', types.DateTime, default=datetime.datetime.utcnow(), nullable=False),
                      Index('ckanext_cas_login_ticket_id_idx', 'ticket_id'))

    mapper(
        CasUser,
        cas_table
    )
def define_miscs_feed_table():
    global miscs_feed_table
    miscs_feed_table = Table(
        'miscs_feed',
        meta.metadata,
        Column('id',
               types.UnicodeText,
               primary_key=True,
               default=model.types.make_uuid),
        Column('feed', types.UnicodeText, nullable=False, default=u''),
    )

    meta.mapper(MiscsFeed, miscs_feed_table)
def define_maintainers_table():
    global maintainers_table

    maintainers_table = Table(
        'ckanext_requestdata_maintainers', metadata,
        Column('id', types.UnicodeText, primary_key=True, default=make_uuid),
        Column('request_data_id', types.UnicodeText,
               ForeignKey('ckanext_requestdata_requests.id')),
        Column('maintainer_id', types.UnicodeText),
        Column('email', types.UnicodeText),
        Index('ckanext_requestdata_maintainers_id_idx', 'id'))

    mapper(ckanextMaintainers, maintainers_table)
Exemple #30
0
def define_user_extra_table():
    global user_extra_table
    user_extra_table = Table(
        'user_extra',
        metadata,
        Column('id', types.UnicodeText, primary_key=True, default=make_uuid),
        Column('user_id', types.UnicodeText, ForeignKey('user.id')),
        Column('key', types.UnicodeText),
        Column('value', types.UnicodeText),
        Column('state', types.UnicodeText, default=u'active'),
    )

    mapper(UserExtra, user_extra_table)
Exemple #31
0
def define_news_subscriptions_tables():
    global news_subscriptions_table
    news_subscriptions_table = Table('news_subscriptions_table', metadata,
                        Column('id', types.UnicodeText, primary_key=True, default=make_uuid),
                        Column('subscriber_id', types.UnicodeText, nullable=False, unique=True),
                        Column('notify_by_mail', types.Boolean, default=False),
                        Column('datetime', types.DateTime, default=datetime.datetime.utcnow),
                        Index('ckanext_news_subscription_id_idx', 'id'))

    mapper(
        ckanextNewsSubscriptions,
        news_subscriptions_table
    )
Exemple #32
0
    def init(cls):
        if cls.ytp_task_source_table is not None:
            return
        cls.ytp_task_source_table = Table(
            'ytp_task_source', metadata,
            Column('id', types.UnicodeText, primary_key=True, default=make_uuid),
            Column('active', types.Boolean, default=True),
            Column('task', types.UnicodeText, nullable=False),
            Column('data', types.UnicodeText, nullable=True),
            Column('frequency', types.UnicodeText),
        )

        mapper(YtpTaskSource, cls.ytp_task_source_table)
def define_miscs_solr_sync_table():
    global miscs_solr_sync_table
    miscs_solr_sync_table = Table(
        'miscs_solr_sync',
        meta.metadata,
        Column('pkg_id', types.UnicodeText, primary_key=True),
        Column('action',
               types.UnicodeText,
               index=True,
               nullable=False,
               default=u''),
    )

    meta.mapper(MiscsSolrSync, miscs_solr_sync_table)
Exemple #34
0
def define_table():

    global source_table

    if source_table is None:
        source_table = Table('user_github_info', metadata,
            Column('id', types.UnicodeText, primary_key=True, default=make_uuid),
            Column('created', types.DateTime, default=datetime.datetime.utcnow),
            Column('user_id', types.UnicodeText, default=u''),
            Column('github_username', types.UnicodeText, default=u''),
            Column('github_access_token', types.UnicodeText, default=u''),
            Column('github_data', types.UnicodeText, default=u'')
        )
        mapper(UserGithubInfo, source_table)
def setup():
    """
    Set up ORM.

    Does not create any database tables, see :py:func:`create_tables`
    for that.
    """
    global resource_metadata_table
    if resource_metadata_table is None:
        log.debug('Defining resource metadata table')
        resource_metadata_table = Table(
            RESOURCE_METADATA_TABLE_NAME, metadata,
            Column('resource_id',
                   types.UnicodeText,
                   ForeignKey('resource.id',
                              ondelete='CASCADE',
                              onupdate='CASCADE'),
                   nullable=False,
                   primary_key=True), Column('last_extracted', types.DateTime),
            Column('last_url', types.UnicodeText),
            Column('last_format', types.UnicodeText),
            Column('task_id', types.UnicodeText))
        mapper(ResourceMetadata,
               resource_metadata_table,
               properties={
                   '_meta':
                   relationship(
                       ResourceMetadatum,
                       collection_class=attribute_mapped_collection('key'),
                       cascade='all, delete, delete-orphan'),
               })
    else:
        log.debug('Resource metadata table already defined')
    global resource_metadatum_table
    if resource_metadatum_table is None:
        log.debug('Defining resource metadatum table')
        resource_metadatum_table = Table(
            RESOURCE_METADATUM_TABLE_NAME, metadata,
            Column('id', types.Integer, nullable=False, primary_key=True),
            Column('resource_id',
                   types.UnicodeText,
                   ForeignKey(RESOURCE_METADATA_TABLE_NAME + '.resource_id',
                              ondelete='CASCADE',
                              onupdate='CASCADE'),
                   nullable=False),
            Column('key', types.UnicodeText, nullable=False),
            Column('value', types.UnicodeText))
        mapper(ResourceMetadatum, resource_metadatum_table)
    else:
        log.debug('Resource metadatum table already defined')
def define_request_data_counters_table():
    global request_data_counters_table

    request_data_counters_table = Table(
        'ckanext_requestdata_counters', metadata,
        Column('id', types.UnicodeText, primary_key=True, default=make_uuid),
        Column('package_id', types.UnicodeText),
        Column('org_id', types.UnicodeText),
        Column('requests', types.Integer, default=0),
        Column('replied', types.Integer, default=0),
        Column('declined', types.Integer, default=0),
        Column('shared', types.Integer, default=0),
        Index('ckanext_requestdata_counters_id_idx', 'id'))

    mapper(ckanextRequestDataCounters, request_data_counters_table)
Exemple #37
0
def define_organization_batch_table():

    global organization_batch_table

    organization_batch_table = Table(
        'organization_batch', meta.metadata,
        Column('id', types.UnicodeText, primary_key=True,
               default=ckan_types.make_uuid),
        Column('last_modified', types.DateTime, default=datetime.datetime.utcnow),
        Column('organization', types.UnicodeText, ForeignKey('group.id', ondelete='CASCADE', onupdate='CASCADE'),
               unique=True, nullable=False, index=True),
        Column('batch', types.UnicodeText),
    )

    meta.mapper(OrganizationBatch, organization_batch_table)
def define_inventory_entry_table():
    global inventory_entry_table
    inventory_entry_table = Table(
        'inventory_entry',
        metadata,
        Column('id', types.UnicodeText, primary_key=True, default=make_uuid),
        Column('title', types.UnicodeText, default=u''),
        Column('group_id', types.UnicodeText, ForeignKey('group.id')),
        Column('is_recurring', types.Boolean, default=False),
        Column('recurring_interval', types.Integer, default=0),
        Column('last_added_dataset_timestamp', types.DateTime)
    )
    mapper(InventoryEntry, inventory_entry_table, properties={
        'group': relation(Group, lazy=True, backref=u'inventory_entries')
    })
Exemple #39
0
def setup():
    """
    Set up ORM.

    Does not create any database tables, see :py:func:`create_tables`
    for that.
    """
    global resource_metadata_table
    if resource_metadata_table is None:
        log.debug('Defining resource metadata table')
        resource_metadata_table = Table(
            RESOURCE_METADATA_TABLE_NAME,
            metadata,
            Column('resource_id', types.UnicodeText, ForeignKey('resource.id',
                   ondelete='CASCADE', onupdate='CASCADE'), nullable=False,
                   primary_key=True),
            Column('last_extracted', types.DateTime),
            Column('last_url', types.UnicodeText),
            Column('last_format', types.UnicodeText),
            Column('task_id', types.UnicodeText)
        )
        mapper(
            ResourceMetadata,
            resource_metadata_table,
            properties={
                '_meta': relationship(ResourceMetadatum, collection_class=
                                      attribute_mapped_collection('key'),
                                      cascade='all, delete, delete-orphan'),
            }
        )
    else:
        log.debug('Resource metadata table already defined')
    global resource_metadatum_table
    if resource_metadatum_table is None:
        log.debug('Defining resource metadatum table')
        resource_metadatum_table = Table(
            RESOURCE_METADATUM_TABLE_NAME,
            metadata,
            Column('id', types.Integer, nullable=False, primary_key=True),
            Column('resource_id', types.UnicodeText, ForeignKey(
                   RESOURCE_METADATA_TABLE_NAME + '.resource_id',
                   ondelete='CASCADE', onupdate='CASCADE'), nullable=False),
            Column('key', types.UnicodeText, nullable=False),
            Column('value', types.UnicodeText)
        )
        mapper(ResourceMetadatum, resource_metadatum_table)
    else:
        log.debug('Resource metadatum table already defined')
Exemple #40
0
def define_group_admin_table():
    global group_admin_table

    group_admin_table = Table(
        "group_admin",
        meta.metadata,
        Column(
            "user_id",
            types.UnicodeText,
            ForeignKey("user.id", ondelete="CASCADE", onupdate="CASCADE"),
            primary_key=True,
            nullable=False,
        ),
    )

    meta.mapper(GroupAdmin, group_admin_table)
Exemple #41
0
def define_report_tables(models):
    '''Creates the Report tables and mapping classes for them.

    This is the same pattern as table_per_related in the sqlchemy docs. It will
    create a new table called {original_table}_report for each model in models
    and create an associated mapping class under the the original class as
    OriginalModel.Report. The table will contain a foreign key to the model
    passed in and a user_id column (with no foreign key currently as we don't
    generally encourage foreign keys to core tables in extensions).

    e.g for Issue, a new table called 'issue_report' is created and is mapped
    to a class called Issue.Report based on the Report class above.
    '''
    report_tables = []
    for model_ in models:
        mapped_class = class_mapper(model_)
        table_name = mapped_class.mapped_table.fullname
        report_table = Table(
            '{0}_report'.format(table_name),
            meta.metadata,
            Column('id', types.Integer, primary_key=True, autoincrement=True),
            Column('user_id', types.Unicode, nullable=False),
            Column(
                'parent_id',
                types.Integer,
                ForeignKey('{0}.id'.format(table_name), ondelete='CASCADE'),
                nullable=False, index=True),
            UniqueConstraint('user_id', 'parent_id'.format(table_name)),
        )

        ReportClass = type('{0}Report'.format(model_.__name__), (Report,), {})
        model_.Report = ReportClass

        meta.mapper(
            ReportClass,
            report_table,
            properties={
                table_name: relation(
                    model_,
                    backref=backref('abuse_reports'),
                    primaryjoin=report_table.c.parent_id == model_.id
                ),
            }
        )
        report_tables.append(report_table)
    return report_tables
Exemple #42
0
def define_tables():
    global certified_public_service_table
    certified_public_service_table = sa.Table('certified_public_service', meta.metadata,
        sa.Column('organization_id', types.UnicodeText, sa.ForeignKey('group.id'), primary_key = True),
        )

    meta.mapper(
        CertifiedPublicService,
        certified_public_service_table,
        properties = dict(
            organization = orm.relation(
                model.Group,  # Organization only
                backref = orm.backref(u'certified_public_service', uselist = False),
                lazy = True,
                ),
            ),
        )
Exemple #43
0
def define_gdpr_table():
    global gdpr_table

    gdpr_table = Table(
        'gdpr', metadata,
        Column('id', types.Integer,
               primary_key=True,
               nullable=False,
               autoincrement=True),
        Column('tos', types.UnicodeText,
               nullable=False),
    )

    mapper(
        GDPR,
        gdpr_table,
    )
Exemple #44
0
def setup():
    global resource_index_info_table
    if resource_index_info_table is None:
        resource_index_info_table = Table(RESOURCE_INDEX_INFO_TABLE_NAME, metadata,
                                          Column('resource_id', types.UnicodeText,
                                                 ForeignKey('resource.id',
                                                            ondelete='CASCADE',
                                                            onupdate='CASCADE'),
                                                 nullable=False,
                                                 primary_key=True),
                                          Column('indexed', types.DateTime),
                                          Column('url', types.UnicodeText),
                                          Column('task_id', types.UnicodeText)
                                          )
        mapper(ResourceIndexInfo, resource_index_info_table)
    else:
        log.debug('Resource index info table already defined')
Exemple #45
0
def define_project_package_association_table():
    global project_package_assocation_table

    project_package_assocation_table = Table('project_package_association', metadata,
                                              Column('package_id', types.UnicodeText,
                                                     ForeignKey('package.id',
                                                                ondelete='CASCADE',
                                                                onupdate='CASCADE'),
                                                     primary_key=True, nullable=False),
                                              Column('project_id', types.UnicodeText,
                                                     ForeignKey('package.id',
                                                                ondelete='CASCADE',
                                                                onupdate='CASCADE'),
                                                     primary_key=True, nullable=False)
                                              )

    mapper(projectPackageAssociation, project_package_assocation_table)
def define_spatial_tables(db_srid=None):

    global package_extent_table

    if not db_srid:
        db_srid = int(config.get('ckan.spatial.srid', DEFAULT_SRID))
    else:
        db_srid = int(db_srid)

    package_extent_table = Table('package_extent', meta.metadata,
                    Column('package_id', types.UnicodeText, primary_key=True),
                    GeometryExtensionColumn('the_geom', Geometry(2,srid=db_srid)))


    meta.mapper(PackageExtent, package_extent_table, properties={
            'the_geom': GeometryColumn(package_extent_table.c.the_geom,
                                            comparator=PGComparator)})

    # enable the DDL extension
    GeometryDDL(package_extent_table)
Exemple #47
0
def define_tables():
    """Create in-memory representation of the harvest tables"""
    # Define the tables
    node_table = Table(
        "harvest_node",
        meta.metadata,
        Column("id", types.Integer, primary_key=True),
        Column("url", types.UnicodeText),
        Column("frequency", types.UnicodeText),
        Column("title", types.UnicodeText),
        Column("node_admin_id", types.Integer, ForeignKey("responsible_party.id"))                
    )
    
    harvest_record_table = Table(
        "harvested_record",
        meta.metadata,
        Column("id", types.Integer, primary_key=True),
        Column("package_id", types.UnicodeText, ForeignKey("package.id")),
        Column("harvest_node_id", types.Integer, ForeignKey("harvest_node.id")),
        Column("harvested_xml", types.UnicodeText)                             
    )
    
    # Map classes to tables
    meta.mapper(HarvestNode, node_table,
        properties={
            "node_admin": relationship(ResponsibleParty)            
        }
    )
    
    meta.mapper(
        HarvestedRecord,
        harvest_record_table, 
        properties={
            "package": relationship(Package),
            "harvest_node": relationship(HarvestNode)
        }
    )
    
    # Add classes to memory
    model.HarvestNode = HarvestNode
    model.HarvestedRecord = HarvestedRecord
def define_inventory_item_table():
    global inventory_item_table
    inventory_item_table = Table(
        'inventory_item',
        metadata,
        Column('id', types.UnicodeText, primary_key=True, default=make_uuid),
        Column('inventory_entry_id',
               types.UnicodeText,
               ForeignKey('inventory_entry.id')),
        Column('package_id', types.UnicodeText, ForeignKey('package.id'))
    )
    mapper(InventoryItem, inventory_item_table, properties={
        'inventory_entry': relation(InventoryEntry,
                                    lazy=True,
                                    backref=backref('inventory_items',
                                                    cascade='all,delete-orphan')),
        'package_entry': relation(Package,
                                  lazy=True,
                                  backref=backref('inventory_items',
                                                  cascade='all,delete-orphan')),
    })
def define_tables():
    """Mappes the fulltext table."""
    global package_fulltext_table
    package_fulltext_table = Table(
        "package_fulltext",
        meta.metadata,
        Column("id", types.UnicodeText, primary_key=True, default=_types.make_uuid),
        Column(
            "package_id",
            types.UnicodeText,
            ForeignKey("package.id", onupdate="CASCADE", ondelete="CASCADE"),
            nullable=True,
        ),
        Column("text", types.UnicodeText),
        extend_existing=True,
    )

    mapper(
        PackageFulltext,
        package_fulltext_table,
        properties={"package": relation(Package, lazy=True, backref="fulltext")},
    )
def define_tables():
    """Create the in-memory represenatation of tables, and map those tables to classes defined above"""
    
    # First define the three tables
    party = Table(
        "responsible_party",
        meta.metadata,
        Column("id", types.Integer, primary_key=True),
        Column("name", types.UnicodeText),
        Column("email", types.UnicodeText),
        Column("organization", types.UnicodeText),
        Column("phone", types.UnicodeText),
        Column("street", types.UnicodeText),
        Column("state", types.UnicodeText),
        Column("city", types.UnicodeText),
        Column("zip", types.UnicodeText),
        Column("country", types.UnicodeText),
        UniqueConstraint('email')
    )
    
    languages = Table(
        "languages",
        meta.metadata,
        Column("id", types.Integer, primary_key=True),
        Column("name", types.UnicodeText),
        Column("code", types.UnicodeText),
        Column("standard", types.UnicodeText)
    )

    # Map those tables to classes, define the additional properties for related people
    meta.mapper(ResponsibleParty, party)
    meta.mapper(Language, languages)
    
    # Stick these classes into the CKAN.model, for ease of access later
    model.ResponsibleParty = ResponsibleParty
    model.Language = Language
    
    return party, languages
def define_harvester_tables():

    global harvest_source_table
    global harvest_job_table
    global harvest_object_table
    global harvest_gather_error_table
    global harvest_object_error_table

    harvest_source_table = Table('harvest_source', metadata,
        Column('id', types.UnicodeText, primary_key=True, default=make_uuid),
        Column('url', types.UnicodeText, nullable=False),
        Column('title', types.UnicodeText, default=u''),
        Column('description', types.UnicodeText, default=u''),
        Column('config', types.UnicodeText, default=u''),
        Column('created', types.DateTime, default=datetime.datetime.utcnow),
        Column('type',types.UnicodeText,nullable=False),
        Column('active',types.Boolean,default=True),
        Column('user_id', types.UnicodeText, default=u''),
        Column('publisher_id', types.UnicodeText, default=u''),
    )
    # Was harvesting_job
    harvest_job_table = Table('harvest_job', metadata,
        Column('id', types.UnicodeText, primary_key=True, default=make_uuid),
        Column('created', types.DateTime, default=datetime.datetime.utcnow),
        Column('gather_started', types.DateTime),
        Column('gather_finished', types.DateTime),
        Column('source_id', types.UnicodeText, ForeignKey('harvest_source.id')),
        Column('status', types.UnicodeText, default=u'New', nullable=False),
    )
    # Was harvested_document
    harvest_object_table = Table('harvest_object', metadata,
        Column('id', types.UnicodeText, primary_key=True, default=make_uuid),
        Column('guid', types.UnicodeText, default=u''),
        Column('current',types.Boolean,default=False),
        Column('gathered', types.DateTime, default=datetime.datetime.utcnow),
        Column('fetch_started', types.DateTime),
        Column('content', types.UnicodeText, nullable=True),
        Column('fetch_finished', types.DateTime),
        Column('metadata_modified_date', types.DateTime),
        Column('retry_times',types.Integer),
        Column('harvest_job_id', types.UnicodeText, ForeignKey('harvest_job.id')),
        Column('harvest_source_id', types.UnicodeText, ForeignKey('harvest_source.id')),
        Column('package_id', types.UnicodeText, ForeignKey('package.id'), nullable=True),
    )
    # New table
    harvest_gather_error_table = Table('harvest_gather_error',metadata,
        Column('id', types.UnicodeText, primary_key=True, default=make_uuid),
        Column('harvest_job_id', types.UnicodeText, ForeignKey('harvest_job.id')),
        Column('message', types.UnicodeText),
        Column('created', types.DateTime, default=datetime.datetime.utcnow),
    )
    # New table
    harvest_object_error_table = Table('harvest_object_error',metadata,
        Column('id', types.UnicodeText, primary_key=True, default=make_uuid),
        Column('harvest_object_id', types.UnicodeText, ForeignKey('harvest_object.id')),
        Column('message',types.UnicodeText),
        Column('stage', types.UnicodeText),
        Column('created', types.DateTime, default=datetime.datetime.utcnow),
    )

    mapper(
        HarvestSource,
        harvest_source_table,
        properties={
            'jobs': relation(
                HarvestJob,
                lazy=True,
                backref=u'source',
                order_by=harvest_job_table.c.created,
            ),
        },
    )

    mapper(
        HarvestJob,
        harvest_job_table,
    )

    mapper(
        HarvestObject,
        harvest_object_table,
        properties={
            'package':relation(
                Package,
                lazy=True,
                backref='harvest_objects',
            ),
            'job': relation(
                HarvestJob,
                lazy=True,
                backref=u'objects',
            ),
            'source': relation(
                HarvestSource,
                lazy=True,
                backref=u'objects',
            ),

        },
    )

    mapper(
        HarvestGatherError,
        harvest_gather_error_table,
        properties={
            'job':relation(
                HarvestJob,
                backref='gather_errors'
            ),
        },
    )

    mapper(
        HarvestObjectError,
        harvest_object_error_table,
        properties={
            'object':relation(
                HarvestObject,
                backref='errors'
            ),
        },
    )

    event.listen(HarvestObject, 'before_insert', harvest_object_before_insert_listener)
Exemple #52
0
    @staticmethod
    def get(reference):
        """
        Returns a `CeonResourceLicense` object referenced by its identifier
        or resource_id.
        """
        query = meta.Session.query(CeonResourceLicense)
        query = query.filter(CeonResourceLicense.resource_id==reference)
        if query.count() < 1:
            query = meta.Session.query(CeonResourceLicense)
            query = query.filter(CeonResourceLicense.id==reference)
        rec = query.first()
        return rec


meta.mapper(CeonPackageAuthor, ceon_package_author_table, properties={
    'dataset': relation(Package,
        backref=backref('ceon_package_author', cascade='all, delete-orphan'),
        primaryjoin=ceon_package_author_table.c.package_id.__eq__(Package.id))
    })

meta.mapper(CeonResourceLicense, ceon_resource_license_table, properties={
    'dataset': relation(Resource,
        backref=backref('ceon_resource_license', cascade='all, delete-orphan'),
        primaryjoin=ceon_resource_license_table.c.resource_id.__eq__(Resource.id))
    })



Exemple #53
0
def define_harvester_tables():

    global harvest_source_table
    global harvest_job_table
    global harvest_object_table
    global harvest_object_extra_table
    global harvest_gather_error_table
    global harvest_object_error_table

    harvest_source_table = Table('harvest_source', metadata,
        Column('id', types.UnicodeText, primary_key=True, default=make_uuid),
        Column('url', types.UnicodeText, nullable=False),
        Column('title', types.UnicodeText, default=u''),
        Column('description', types.UnicodeText, default=u''),
        Column('config', types.UnicodeText, default=u''),
        Column('created', types.DateTime, default=datetime.datetime.utcnow),
        Column('type',types.UnicodeText,nullable=False),
        Column('active',types.Boolean,default=True),
        Column('user_id', types.UnicodeText, default=u''),
        Column('publisher_id', types.UnicodeText, default=u''),
        Column('frequency', types.UnicodeText, default=u'MANUAL'),
        Column('next_run', types.DateTime),
    )
    # Was harvesting_job
    harvest_job_table = Table('harvest_job', metadata,
        Column('id', types.UnicodeText, primary_key=True, default=make_uuid),
        Column('created', types.DateTime, default=datetime.datetime.utcnow),
        Column('gather_started', types.DateTime),
        Column('gather_finished', types.DateTime),
        Column('finished', types.DateTime),
        Column('source_id', types.UnicodeText, ForeignKey('harvest_source.id')),
        # status: New, Running, Finished
        Column('status', types.UnicodeText, default=u'New', nullable=False),
    )
    # A harvest_object contains a representation of one dataset during a
    # particular harvest
    harvest_object_table = Table('harvest_object', metadata,
        Column('id', types.UnicodeText, primary_key=True, default=make_uuid),
        # The guid is the 'identity' of the dataset, according to the source.
        # So if you reharvest it, then the harvester knows which dataset to
        # update because of this identity. The identity needs to be unique
        # within this CKAN.
        Column('guid', types.UnicodeText, default=u''),
        # When you harvest a dataset multiple times, only the latest
        # successfully imported harvest_object should be flagged 'current'.
        # The import_stage usually reads and writes it.
        Column('current',types.Boolean,default=False),
        Column('gathered', types.DateTime, default=datetime.datetime.utcnow),
        Column('fetch_started', types.DateTime),
        Column('content', types.UnicodeText, nullable=True),
        Column('fetch_finished', types.DateTime),
        Column('import_started', types.DateTime),
        Column('import_finished', types.DateTime),
        # state: WAITING, FETCH, IMPORT, COMPLETE, ERROR
        Column('state', types.UnicodeText, default=u'WAITING'),
        Column('metadata_modified_date', types.DateTime),
        Column('retry_times',types.Integer, default=0),
        Column('harvest_job_id', types.UnicodeText, ForeignKey('harvest_job.id')),
        Column('harvest_source_id', types.UnicodeText, ForeignKey('harvest_source.id')),
        Column('package_id', types.UnicodeText, ForeignKey('package.id', deferrable=True), nullable=True),
        # report_status: 'added', 'updated', 'not modified', 'deleted', 'errored'
        Column('report_status', types.UnicodeText, nullable=True),
        Index('harvest_job_id_idx', 'harvest_job_id'),
    )

    # New table
    harvest_object_extra_table = Table('harvest_object_extra', metadata,
        Column('id', types.UnicodeText, primary_key=True, default=make_uuid),
        Column('harvest_object_id', types.UnicodeText, ForeignKey('harvest_object.id')),
        Column('key',types.UnicodeText),
        Column('value', types.UnicodeText),
    )

    # New table
    harvest_gather_error_table = Table('harvest_gather_error',metadata,
        Column('id', types.UnicodeText, primary_key=True, default=make_uuid),
        Column('harvest_job_id', types.UnicodeText, ForeignKey('harvest_job.id')),
        Column('message', types.UnicodeText),
        Column('created', types.DateTime, default=datetime.datetime.utcnow),
    )
    # New table
    harvest_object_error_table = Table('harvest_object_error',metadata,
        Column('id', types.UnicodeText, primary_key=True, default=make_uuid),
        Column('harvest_object_id', types.UnicodeText, ForeignKey('harvest_object.id')),
        Column('message', types.UnicodeText),
        Column('stage', types.UnicodeText),
        Column('line', types.Integer),
        Column('created', types.DateTime, default=datetime.datetime.utcnow),
    )

    mapper(
        HarvestSource,
        harvest_source_table,
        properties={
            'jobs': relation(
                HarvestJob,
                lazy=True,
                backref=u'source',
                order_by=harvest_job_table.c.created,
            ),
        },
    )

    mapper(
        HarvestJob,
        harvest_job_table,
    )

    mapper(
        HarvestObject,
        harvest_object_table,
        properties={
            'package':relation(
                Package,
                lazy=True,
                backref='harvest_objects',
            ),
            'job': relation(
                HarvestJob,
                lazy=True,
                backref=u'objects',
            ),
            'source': relation(
                HarvestSource,
                lazy=True,
                backref=u'objects',
            ),

        },
    )

    mapper(
        HarvestGatherError,
        harvest_gather_error_table,
        properties={
            'job':relation(
                HarvestJob,
                backref='gather_errors'
            ),
        },
    )

    mapper(
        HarvestObjectError,
        harvest_object_error_table,
        properties={
            'object':relation(
                HarvestObject,
                backref=backref('errors', cascade='all,delete-orphan')
            ),
        },
    )

    mapper(
        HarvestObjectExtra,
        harvest_object_extra_table,
        properties={
            'object':relation(
                HarvestObject,
                backref=backref('extras', cascade='all,delete-orphan')
            ),
        },
    )

    event.listen(HarvestObject, 'before_insert', harvest_object_before_insert_listener)
Exemple #54
0
def define_harvester_tables():

    global harvest_source_table
    global harvest_job_table
    global harvest_object_table
    global harvest_object_extra_table
    global harvest_gather_error_table
    global harvest_object_error_table
    global harvest_log_table

    harvest_source_table = Table(
        "harvest_source",
        metadata,
        Column("id", types.UnicodeText, primary_key=True, default=make_uuid),
        Column("url", types.UnicodeText, nullable=False),
        Column("title", types.UnicodeText, default=u""),
        Column("description", types.UnicodeText, default=u""),
        Column("config", types.UnicodeText, default=u""),
        Column("created", types.DateTime, default=datetime.datetime.utcnow),
        Column("type", types.UnicodeText, nullable=False),
        Column("active", types.Boolean, default=True),
        Column("user_id", types.UnicodeText, default=u""),
        Column("publisher_id", types.UnicodeText, default=u""),
        Column("frequency", types.UnicodeText, default=u"MANUAL"),
        Column("next_run", types.DateTime),
    )
    # Was harvesting_job
    harvest_job_table = Table(
        "harvest_job",
        metadata,
        Column("id", types.UnicodeText, primary_key=True, default=make_uuid),
        Column("created", types.DateTime, default=datetime.datetime.utcnow),
        Column("gather_started", types.DateTime),
        Column("gather_finished", types.DateTime),
        Column("finished", types.DateTime),
        Column("source_id", types.UnicodeText, ForeignKey("harvest_source.id")),
        # status: New, Running, Finished
        Column("status", types.UnicodeText, default=u"New", nullable=False),
    )
    # A harvest_object contains a representation of one dataset during a
    # particular harvest
    harvest_object_table = Table(
        "harvest_object",
        metadata,
        Column("id", types.UnicodeText, primary_key=True, default=make_uuid),
        # The guid is the 'identity' of the dataset, according to the source.
        # So if you reharvest it, then the harvester knows which dataset to
        # update because of this identity. The identity needs to be unique
        # within this CKAN.
        Column("guid", types.UnicodeText, default=u""),
        # When you harvest a dataset multiple times, only the latest
        # successfully imported harvest_object should be flagged 'current'.
        # The import_stage usually reads and writes it.
        Column("current", types.Boolean, default=False),
        Column("gathered", types.DateTime, default=datetime.datetime.utcnow),
        Column("fetch_started", types.DateTime),
        Column("content", types.UnicodeText, nullable=True),
        Column("fetch_finished", types.DateTime),
        Column("import_started", types.DateTime),
        Column("import_finished", types.DateTime),
        # state: WAITING, FETCH, IMPORT, COMPLETE, ERROR
        Column("state", types.UnicodeText, default=u"WAITING"),
        Column("metadata_modified_date", types.DateTime),
        Column("retry_times", types.Integer, default=0),
        Column("harvest_job_id", types.UnicodeText, ForeignKey("harvest_job.id")),
        Column("harvest_source_id", types.UnicodeText, ForeignKey("harvest_source.id")),
        Column("package_id", types.UnicodeText, ForeignKey("package.id", deferrable=True), nullable=True),
        # report_status: 'added', 'updated', 'not modified', 'deleted', 'errored'
        Column("report_status", types.UnicodeText, nullable=True),
        Index("harvest_job_id_idx", "harvest_job_id"),
    )

    # New table
    harvest_object_extra_table = Table(
        "harvest_object_extra",
        metadata,
        Column("id", types.UnicodeText, primary_key=True, default=make_uuid),
        Column("harvest_object_id", types.UnicodeText, ForeignKey("harvest_object.id")),
        Column("key", types.UnicodeText),
        Column("value", types.UnicodeText),
    )

    # New table
    harvest_gather_error_table = Table(
        "harvest_gather_error",
        metadata,
        Column("id", types.UnicodeText, primary_key=True, default=make_uuid),
        Column("harvest_job_id", types.UnicodeText, ForeignKey("harvest_job.id")),
        Column("message", types.UnicodeText),
        Column("created", types.DateTime, default=datetime.datetime.utcnow),
    )
    # New table
    harvest_object_error_table = Table(
        "harvest_object_error",
        metadata,
        Column("id", types.UnicodeText, primary_key=True, default=make_uuid),
        Column("harvest_object_id", types.UnicodeText, ForeignKey("harvest_object.id")),
        Column("message", types.UnicodeText),
        Column("stage", types.UnicodeText),
        Column("line", types.Integer),
        Column("created", types.DateTime, default=datetime.datetime.utcnow),
    )
    # Harvest Log table
    harvest_log_table = Table(
        "harvest_log",
        metadata,
        Column("id", types.UnicodeText, primary_key=True, default=make_uuid),
        Column("content", types.UnicodeText, nullable=False),
        Column("level", types.Enum("DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL", name="log_level")),
        Column("created", types.DateTime, default=datetime.datetime.utcnow),
    )

    mapper(
        HarvestSource,
        harvest_source_table,
        properties={"jobs": relation(HarvestJob, lazy=True, backref=u"source", order_by=harvest_job_table.c.created)},
    )

    mapper(HarvestJob, harvest_job_table)

    mapper(
        HarvestObject,
        harvest_object_table,
        properties={
            "package": relation(Package, lazy=True, backref="harvest_objects"),
            "job": relation(HarvestJob, lazy=True, backref=u"objects"),
            "source": relation(HarvestSource, lazy=True, backref=u"objects"),
        },
    )

    mapper(
        HarvestGatherError,
        harvest_gather_error_table,
        properties={"job": relation(HarvestJob, backref="gather_errors")},
    )

    mapper(
        HarvestObjectError,
        harvest_object_error_table,
        properties={"object": relation(HarvestObject, backref=backref("errors", cascade="all,delete-orphan"))},
    )

    mapper(
        HarvestObjectExtra,
        harvest_object_extra_table,
        properties={"object": relation(HarvestObject, backref=backref("extras", cascade="all,delete-orphan"))},
    )

    mapper(HarvestLog, harvest_log_table)

    event.listen(HarvestObject, "before_insert", harvest_object_before_insert_listener)
    @classmethod
    def by_ldap_id(cls, ldap_id, autoflush=True):
        """Return the LdapUser object mapping the given ldap id

        @param ldap_id: ldap id, as returned by the LDAP server
        @return: LdapUser object or None
        """
        obj = meta.Session.query(cls).autoflush(autoflush)\
              .filter_by(ldap_id=ldap_id).first()
        return obj

    @classmethod
    def by_user_id(cls, user_id, autoflush=True):
        """Return the LdapUser object mapping the given user id

        @param user_id: CKAN user id (actual id, not name)
        @return: LdapUser object or None
        """
        obj = meta.Session.query(cls).autoflush(autoflush)\
              .filter_by(user_id=user_id).first()
        return obj

meta.mapper(LdapUser, ldap_user_table,
       properties={
            'user': orm.relation(user.User,
                backref=orm.backref('ldap_user',
                cascade='all, delete, delete-orphan'
                ))
            },
       )
Exemple #56
0
        ForeignKey('package.id', onupdate='CASCADE', ondelete='CASCADE'),
        nullable=False),
    Column(
        'user_id', types.UnicodeText,
        ForeignKey('user.id', onupdate='CASCADE', ondelete='CASCADE'),
        nullable=False),
    UniqueConstraint('package_id', 'user_id'),

    Column('paper_title', types.UnicodeText, nullable=True),
    Column('conference_or_journal_title', types.UnicodeText, nullable=True),
    Column('author_list', types.UnicodeText, nullable=True),
    Column('doi_title', types.UnicodeText, nullable=True),
    Column('doi_description', types.UnicodeText, nullable=True),
    Column('message_to_admin_optional', types.UnicodeText, nullable=True),

)


class DoiRequest(DomainObject):
    """
    DOI Request
    """
    pass

meta.mapper(DoiRequest, doi_request_table, properties={
    'dataset': relation(
        Package,
        backref=backref('doi_request', cascade='all, delete-orphan'),
        primaryjoin=doi_request_table.c.package_id.__eq__(Package.id)
    )
})
import ckan.model.meta as meta
import ckan.model.domain_object as domain_object
import sqlalchemy


class SimilarityConfiguration(domain_object.DomainObject):
    def __init__(self, entity_uri, similarity_method_uri):
        self.entity_uri = entity_uri
        self.similarity_method_uri = similarity_method_uri
        self.created = None
        self.request_count = 0


similarity_configuration_table = sqlalchemy.Table(
    'similarity_configuration', meta.metadata,
    sqlalchemy.Column('entity_uri', sqlalchemy.types.UnicodeText, primary_key=True),
    sqlalchemy.Column('similarity_method_uri', sqlalchemy.types.UnicodeText, primary_key=True),
    sqlalchemy.Column('created', sqlalchemy.types.DateTime),
    sqlalchemy.Column('request_count', sqlalchemy.types.Integer)
    )


meta.mapper(SimilarityConfiguration, similarity_configuration_table)
Exemple #58
0
	@classmethod
	def get(self,id):
		'''Return all the semantic tag related to the given tag id

		:returns: a semantic tag or None
		:rtype: list of ckan.model.semantictag.SemanticTag object

		'''
		query = meta.Session.query(TagSemanticTag).filter(TagSemanticTag.id==id)
		return query.first()



meta.mapper(SemanticTag, semantictag_table, properties={
	'tag_semantictags': relation(TagSemanticTag, backref='semantictag',cascade='all, delete, delete-orphan')
	},
	order_by=semantictag_table.c.URI,
	)

meta.mapper(TagSemanticTag, tag_semantictag_table, properties={
	'tag': relation(_tag.Tag, foreign_keys=[tag_id]),
	'semantic_tag': relation(SemanticTag, foreign_keys=[semantic_tag_id])
	}
	)

meta.mapper(Predicate, predicate_table,order_by=predicate_table.c.namespace)

#meta.mapper(TagSemanticTag, tag_semantictag_table, properties={
#	'smtag':relation(_tag.Tag, backref='tag_semantictag_all',
#		cascade='none',
#		)
def define_tables():
    """Create the in-memory represenatation of tables, and map those tables to classes defined above"""
    
    # First define the tables
    bulkupload = Table(
        "bulk_upload",
        meta.metadata,
        Column("id", types.Integer, primary_key=True),
        Column("data_file", types.UnicodeText),
        Column("resources", types.UnicodeText),
        Column("path", types.UnicodeText),
        Column("status", types.UnicodeText),
        Column("comments", types.UnicodeText),
        Column("uploaded_by", types.UnicodeText, ForeignKey("user.id")),
        Column("uploaded_date", types.DateTime, default=datetime.datetime.now),
        Column('last_updated', types.DateTime, default=datetime.datetime.now),
    )

    bulkupload_package = Table(
        "bulk_upload_package",
        meta.metadata,
        Column("id", types.Integer, primary_key=True),
        Column("bulk_upload_id", types.Integer,ForeignKey("bulk_upload.id")),
        Column("package_name", types.UnicodeText),
        Column("package_title", types.UnicodeText),
        Column("uploaded_date", types.DateTime, default=datetime.datetime.now),
    )    

    standingdata = Table(
        "standing_data",
        meta.metadata,
        Column("id", types.Integer, primary_key=True),
        Column("code", types.UnicodeText),
        Column("description", types.UnicodeText),
        Column("data_type", types.UnicodeText),
    )    

    user_saved_search = Table(
        "user_saved_search",
        meta.metadata,
        Column("id", types.Integer, primary_key=True),
        Column("user_id", types.UnicodeText),
        Column("search_name", types.UnicodeText),
        Column("url", types.UnicodeText),
    )

    document_index = Table(
        "resource_document_index",
        meta.metadata,
        Column("id", types.Integer, primary_key=True),
        Column("package_id", types.UnicodeText),
        Column("resource_id", types.UnicodeText),
        Column("file_path", types.UnicodeText),
        Column("status", types.UnicodeText),
        Column("comments", types.UnicodeText),
        Column('last_updated', types.DateTime, default=datetime.datetime.now),
    )

    # Map those tables to classes, define the additional properties for related models
    meta.mapper(BulkUpload, bulkupload,
        properties={
            "uploaded_user": relationship(model.User)            
        }
    )
    meta.mapper(StandingData, standingdata)
    meta.mapper(BulkUpload_Package, bulkupload_package)
    meta.mapper(UserSearch, user_saved_search)
    meta.mapper(DocumentIndex, document_index)
    
    # Stick these classes into the CKAN.model, for ease of access later
    model.BulkUpload = BulkUpload
    model.StandingData = StandingData
    model.BulkUpload_Package = BulkUpload_Package
    model.UserSearch = UserSearch
    model.DocumentIndex = DocumentIndex
    
    return bulkupload, bulkupload_package, standingdata, user_saved_search, document_index