Skip to content

Commit

Permalink
[#1592][dictization] Add metadata modified and created to package_dic…
Browse files Browse the repository at this point in the history
…tize output
  • Loading branch information
amercader committed Jan 11, 2012
1 parent b80da7a commit 420dada
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 23 deletions.
18 changes: 14 additions & 4 deletions ckan/lib/dictization/model_dictize.py
Expand Up @@ -2,6 +2,7 @@
from sqlalchemy.sql import select, and_
import datetime

from ckan.model import PackageRevision
from ckan.lib.dictization import (obj_list_dictize,
obj_dict_dictize,
table_dictize)
Expand Down Expand Up @@ -181,11 +182,20 @@ def package_dictize(pkg, context):
q = select([rel_rev]).where(rel_rev.c.object_package_id == pkg.id)
result = _execute_with_revision(q, rel_rev, context)
result_dict["relationships_as_object"] = obj_list_dictize(result, context)
#isopen
# Get an actual Package object, not a PackageRevision
pkg_object = model.Package.get(pkg.id)
result_dict['isopen'] = pkg_object.isopen if isinstance(pkg_object.isopen,bool) else pkg_object.isopen()

# Extra properties from the domain object
# We need an actual Package object for this, not a PackageRevision
if isinstance(pkg,PackageRevision):
pkg = model.Package.get(pkg.id)

# isopen
result_dict['isopen'] = pkg.isopen if isinstance(pkg.isopen,bool) else pkg.isopen()

# creation and modification date
result_dict['metadata_modified'] = pkg.metadata_modified.isoformat() \
if pkg.metadata_modified else None
result_dict['metadata_created'] = pkg.metadata_created.isoformat() \
if pkg.metadata_created else None
return result_dict

def _get_members(context, group, member_type):
Expand Down
7 changes: 6 additions & 1 deletion ckan/lib/dictization/model_save.py
Expand Up @@ -261,9 +261,14 @@ def package_dict_save(pkg_dict, context):
package = context.get("package")
allow_partial_update = context.get("allow_partial_update", False)
if package:
pkg_dict["id"] = package.id
pkg_dict["id"] = package.id
Package = model.Package

if 'metadata_created' in pkg_dict:
del pkg_dict['metadata_created']
if 'metadata_modified' in pkg_dict:
del pkg_dict['metadata_modified']

pkg = table_dict_save(pkg_dict, Package, context)

package_resource_list_save(pkg_dict.get("resources", []), pkg, context)
Expand Down
19 changes: 1 addition & 18 deletions ckan/logic/action/get.py
Expand Up @@ -37,24 +37,7 @@ def _package_list_with_resources(context, package_revision_list):
package_list = []
model = context["model"]
for package in package_revision_list:
result_dict = table_dictize(package, context)
res_rev = model.resource_revision_table
resource_group = model.resource_group_table
query = select([res_rev], from_obj = res_rev.join(resource_group,
resource_group.c.id == res_rev.c.resource_group_id))
query = query.where(resource_group.c.package_id == package.id)
result = query.where(res_rev.c.current == True).execute()
result_dict["resources"] = resource_list_dictize(result, context)
license_id = result_dict['license_id']
if license_id:
try:
isopen = model.Package.get_license_register()[license_id].isopen()
result_dict['isopen'] = isopen
except KeyError:
# TODO: create a log message this error?
result_dict['isopen'] = False
else:
result_dict['isopen'] = False
result_dict = package_dictize(package,context)
package_list.append(result_dict)
return package_list

Expand Down

0 comments on commit 420dada

Please sign in to comment.