Skip to content

Commit

Permalink
Try to make package_dictize_with_revisions backwards compatible
Browse files Browse the repository at this point in the history
  • Loading branch information
David Read committed Apr 5, 2019
1 parent 71477ba commit feec9dc
Showing 1 changed file with 17 additions and 9 deletions.
26 changes: 17 additions & 9 deletions ckan/migration/revision_legacy_code.py
Expand Up @@ -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:
Expand All @@ -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)
Expand All @@ -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)
Expand All @@ -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)
Expand All @@ -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)
Expand All @@ -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')
Expand All @@ -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)
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit feec9dc

Please sign in to comment.