Skip to content

Commit

Permalink
Merge branch 'feature-1592-metadata-created-modified-in-package_dictize'
Browse files Browse the repository at this point in the history
  • Loading branch information
amercader committed Jan 11, 2012
2 parents 9c6cfa4 + cdeb484 commit 1e649a6
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 25 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
5 changes: 5 additions & 0 deletions ckan/tests/functional/api/test_action.py
Expand Up @@ -156,8 +156,13 @@ def test_03_create_update_package(self):
package_updated = json.loads(res.body)['result']
package_updated.pop('revision_id')
package_updated.pop('revision_timestamp')
package_updated.pop('metadata_created')
package_updated.pop('metadata_modified')

package_created.pop('revision_id')
package_created.pop('revision_timestamp')
package_created.pop('metadata_created')
package_created.pop('metadata_modified')
assert package_updated == package_created#, (pformat(json.loads(res.body)), pformat(package_created['result']))

def test_18_create_package_not_authorized(self):
Expand Down
6 changes: 4 additions & 2 deletions ckan/tests/lib/test_dictization.py
Expand Up @@ -116,6 +116,8 @@ def remove_changable_columns(self, dict):
dict.pop(key)
if 'timestamp' in key:
dict.pop(key)
if key in ['metadata_created','metadata_modified']:
dict.pop(key)
if isinstance(value, list):
for new_dict in value:
self.remove_changable_columns(new_dict)
Expand Down Expand Up @@ -370,8 +372,8 @@ def test_09_package_alter(self):
print anna_original
print anna_after_save

assert self.remove_revision_id(anna_dictized) == self.remove_revision_id(package_dictized),\
"\n".join(unified_diff(anna_original.split("\n"), anna_after_save.split("\n")))
assert self.remove_changable_columns(anna_dictized) == self.remove_changable_columns(package_dictized)
assert "\n".join(unified_diff(anna_original.split("\n"), anna_after_save.split("\n")))

def test_10_package_alter_pending(self):

Expand Down

0 comments on commit 1e649a6

Please sign in to comment.