diff --git a/ckan/migration/revision_legacy_code.py b/ckan/migration/revision_legacy_code.py index 66bfbe4c11f..d0d5246d2d7 100644 --- a/ckan/migration/revision_legacy_code.py +++ b/ckan/migration/revision_legacy_code.py @@ -35,17 +35,25 @@ def package_dictize_with_revisions(pkg, context): * the specified revision_id doesn't exist * the specified revision_date was before the package was created ''' + try: + model.PackageRevision + # CKAN<=2.8 + revision_model = model + except AttributeError: + # CKAN>2.8 + revision_model = RevisionTableMappings.instance() + model = context['model'] is_latest_revision = not(context.get(u'revision_id') or context.get(u'revision_date')) execute = _execute if is_latest_revision else _execute_with_revision # package if is_latest_revision: - if isinstance(pkg, RevisionTableMappings.instance().PackageRevision): + if isinstance(pkg, revision_model.PackageRevision): pkg = model.Package.get(pkg.id) result = pkg else: - package_rev = RevisionTableMappings.instance().package_revision_table + package_rev = revision_model.package_revision_table q = select([package_rev]).where(package_rev.c.id == pkg.id) result = execute(q, package_rev, context).first() if not result: @@ -59,7 +67,7 @@ def package_dictize_with_revisions(pkg, context): if is_latest_revision: res = model.resource_table else: - res = RevisionTableMappings.instance().resource_revision_table + res = revision_model.resource_revision_table q = select([res]).where(res.c.package_id == pkg.id) result = execute(q, res, context) result_dict["resources"] = resource_list_dictize(result, context) @@ -70,7 +78,7 @@ def package_dictize_with_revisions(pkg, context): if is_latest_revision: pkg_tag = model.package_tag_table else: - pkg_tag = RevisionTableMappings.instance().package_tag_revision_table + pkg_tag = revision_model.package_tag_revision_table q = select([tag, pkg_tag.c.state], from_obj=pkg_tag.join(tag, tag.c.id == pkg_tag.c.tag_id) ).where(pkg_tag.c.package_id == pkg.id) @@ -90,7 +98,7 @@ def package_dictize_with_revisions(pkg, context): if is_latest_revision: extra = model.package_extra_table else: - extra = RevisionTableMappings.instance().package_extra_revision_table + extra = revision_model.package_extra_revision_table q = select([extra]).where(extra.c.package_id == pkg.id) result = execute(q, extra, context) result_dict["extras"] = extras_list_dictize(result, context) @@ -99,7 +107,7 @@ def package_dictize_with_revisions(pkg, context): if is_latest_revision: member = model.member_table else: - member = RevisionTableMappings.instance().member_revision_table + member = revision_model.member_revision_table group = model.group_table q = select([group, member.c.capacity], from_obj=member.join(group, group.c.id == member.c.group_id) @@ -118,7 +126,7 @@ def package_dictize_with_revisions(pkg, context): if is_latest_revision: group = model.group_table else: - group = RevisionTableMappings.instance().group_revision_table + group = revision_model.group_revision_table q = select([group] ).where(group.c.id == result_dict['owner_org']) \ .where(group.c.state == u'active') @@ -133,7 +141,7 @@ def package_dictize_with_revisions(pkg, context): if is_latest_revision: rel = model.package_relationship_table else: - rel = RevisionTableMappings.instance() \ + rel = revision_model \ .package_relationship_revision_table q = select([rel]).where(rel.c.subject_package_id == pkg.id) result = execute(q, rel, context) @@ -195,7 +203,7 @@ def _execute_with_revision(q, rev_table, context): revision_date = context.get(u'revision_date') if revision_id: - revision = session.query(RevisionTableMappings.instance().Revision) \ + revision = session.query(revision_model.Revision) \ .filter_by(id=revision_id).first() if not revision: raise logic.NotFound