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')) })
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, )
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)
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_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'), })
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)
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
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)
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', ), ) } )
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)
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_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)
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_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)
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)
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)
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)
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)
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)
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)
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)
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 )
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)
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)
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') })
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_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)
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
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, ), ), )
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, )
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')
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)
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)
@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)) })
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)
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' )) }, )
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)
@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