Skip to content

Commit

Permalink
clean up imports in action.create
Browse files Browse the repository at this point in the history
  • Loading branch information
tobes committed Feb 29, 2012
1 parent c8a40b8 commit 60ed66a
Showing 1 changed file with 44 additions and 51 deletions.
95 changes: 44 additions & 51 deletions ckan/logic/action/create.py
Original file line number Diff line number Diff line change
@@ -1,31 +1,24 @@
import logging
from lib.plugins import lookup_package_plugin, lookup_group_plugin
from pylons.i18n import _

import lib.plugins as lib_plugins
import ckan.logic as logic
import ckan.rating as ratings
from ckan.plugins import (PluginImplementations,
IGroupController,
IPackageController)
from ckan.logic import NotFound, ValidationError
from ckan.logic import check_access
from ckan.lib.base import _
import ckan.plugins as plugins
import ckan.lib.dictization
from ckan.lib.dictization import model_dictize
from ckan.lib.dictization import model_save
from ckan.logic.schema import (
default_resource_schema,
default_create_relationship_schema,
default_create_vocabulary_schema,
default_create_activity_schema,
default_create_tag_schema)

from ckan.logic.schema import default_group_schema, default_user_schema
from ckan.lib.navl.dictization_functions import validate
import ckan.lib.dictization.model_dictize as model_dictize
import ckan.lib.dictization.model_save as model_save
import ckan.lib.navl.dictization_functions

# FIXME this looks nasty and should be shared better
from ckan.logic.action.update import _update_package_relationship
from ckan.logic.action import rename_keys, error_summary
from ckan import logic

log = logging.getLogger(__name__)

# define some shortcuts
error_summary = logic.action.error_summary
validate = ckan.lib.navl.dictization_functions.validate

def package_create(context, data_dict):

model = context['model']
Expand All @@ -34,14 +27,14 @@ def package_create(context, data_dict):
model.Session()._context = context

package_type = data_dict.get('type')
package_plugin = lookup_package_plugin(package_type)
package_plugin = lib_plugins.lookup_package_plugin(package_type)
try:
schema = package_plugin.form_to_db_schema_options({'type':'create',
'api':'api_version' in context})
except AttributeError:
schema = package_plugin.form_to_db_schema()

check_access('package_create', context, data_dict)
logic.check_access('package_create', context, data_dict)

if 'api_version' not in context:
# old plugins do not support passing the schema so we need
Expand All @@ -55,7 +48,7 @@ def package_create(context, data_dict):

if errors:
model.Session.rollback()
raise ValidationError(errors, error_summary(errors))
raise logic.ValidationError(errors, error_summary(errors))

rev = model.repo.new_revision()
rev.author = user
Expand All @@ -73,7 +66,7 @@ def package_create(context, data_dict):
# Needed to let extensions know the package id
model.Session.flush()

for item in PluginImplementations(IPackageController):
for item in plugins.PluginImplementations(plugins.IPackageController):
item.create(pkg)

if not context.get('defer_commit'):
Expand All @@ -88,17 +81,17 @@ def package_create(context, data_dict):

def package_create_validate(context, data_dict):
model = context['model']
schema = lookup_package_plugin().form_to_db_schema()
schema = lib_plugins.lookup_package_plugin().form_to_db_schema()
model.Session.remove()
model.Session()._context = context

check_access('package_create',context,data_dict)
logic.check_access('package_create',context,data_dict)

data, errors = validate(data_dict, schema, context)

if errors:
model.Session.rollback()
raise ValidationError(errors, error_summary(errors))
raise logic.ValidationError(errors, error_summary(errors))
else:
return data

Expand All @@ -109,14 +102,14 @@ def resource_create(context, data_dict):
user = context['user']

data, errors = validate(data_dict,
default_resource_schema(),
logic.schema.default_resource_schema(),
context)

def package_relationship_create(context, data_dict):

model = context['model']
user = context['user']
schema = context.get('schema') or default_create_relationship_schema()
schema = context.get('schema') or logic.schema.default_create_relationship_schema()
api = context.get('api_version') or '1'
ref_package_by = 'id' if api == '2' else 'name'

Expand All @@ -128,17 +121,17 @@ def package_relationship_create(context, data_dict):
pkg1 = model.Package.get(id)
pkg2 = model.Package.get(id2)
if not pkg1:
raise NotFound('Subject package %r was not found.' % id)
raise logic.NotFound('Subject package %r was not found.' % id)
if not pkg2:
return NotFound('Object package %r was not found.' % id2)
return logic.NotFound('Object package %r was not found.' % id2)

data, errors = validate(data_dict, schema, context)

if errors:
model.Session.rollback()
raise ValidationError(errors, error_summary(errors))
raise logic.ValidationError(errors, error_summary(errors))

check_access('package_relationship_create', context, data_dict)
logic.check_access('package_relationship_create', context, data_dict)

# Create a Package Relationship.
existing_rels = pkg1.get_relationships_with(pkg2, rel_type)
Expand All @@ -162,10 +155,10 @@ def group_create(context, data_dict):
session = context['session']
parent = context.get('parent', None)

check_access('group_create', context, data_dict)
logic.check_access('group_create', context, data_dict)

# get the schema
group_plugin = lookup_group_plugin()
group_plugin = lib_plugins.lookup_group_plugin()
try:
schema = group_plugin.form_to_db_schema_options({'type':'create',
'api':'api_version' in context})
Expand All @@ -176,7 +169,7 @@ def group_create(context, data_dict):

if errors:
session.rollback()
raise ValidationError(errors, error_summary(errors))
raise logic.ValidationError(errors, error_summary(errors))

rev = model.repo.new_revision()
rev.author = user
Expand All @@ -202,7 +195,7 @@ def group_create(context, data_dict):
# Needed to let extensions know the group id
session.flush()

for item in PluginImplementations(IGroupController):
for item in plugins.PluginImplementations(plugins.IGroupController):
item.create(group)

activity_dict = {
Expand Down Expand Up @@ -252,7 +245,7 @@ def rating_create(context, data_dict):
elif not package:
opts_err = _('Not found') + ': %r' % package_ref
if opts_err:
raise ValidationError(opts_err)
raise logic.ValidationError(opts_err)

user = model.User.by_name(user)
ratings.set_rating(user, package, rating_int)
Expand All @@ -266,16 +259,16 @@ def user_create(context, data_dict):
'''Creates a new user'''

model = context['model']
schema = context.get('schema') or default_user_schema()
schema = context.get('schema') or logic.schema.default_user_schema()
session = context['session']

check_access('user_create', context, data_dict)
logic.check_access('user_create', context, data_dict)

data, errors = validate(data_dict, schema, context)

if errors:
session.rollback()
raise ValidationError(errors, error_summary(errors))
raise logic.ValidationError(errors, error_summary(errors))

user = model_save.user_dict_save(data, context)

Expand Down Expand Up @@ -310,7 +303,7 @@ def package_create_rest(context, data_dict):

api = context.get('api_version') or '1'

check_access('package_create_rest', context, data_dict)
logic.check_access('package_create_rest', context, data_dict)

dictized_package = model_save.package_api_to_dict(data_dict, context)
dictized_after = logic.get_action('package_create')(context, dictized_package)
Expand All @@ -330,7 +323,7 @@ def group_create_rest(context, data_dict):

api = context.get('api_version') or '1'

check_access('group_create_rest', context, data_dict)
logic.check_access('group_create_rest', context, data_dict)

dictized_group = model_save.group_api_to_dict(data_dict, context)
dictized_after = logic.get_action('group_create')(context, dictized_group)
Expand All @@ -349,18 +342,18 @@ def group_create_rest(context, data_dict):
def vocabulary_create(context, data_dict):

model = context['model']
schema = context.get('schema') or default_create_vocabulary_schema()
schema = context.get('schema') or logic.schema.default_create_vocabulary_schema()

model.Session.remove()
model.Session()._context = context

check_access('vocabulary_create', context, data_dict)
logic.check_access('vocabulary_create', context, data_dict)

data, errors = validate(data_dict, schema, context)

if errors:
model.Session.rollback()
raise ValidationError(errors, error_summary(errors))
raise logic.ValidationError(errors, error_summary(errors))

vocabulary = model_save.vocabulary_dict_save(data, context)

Expand All @@ -387,9 +380,9 @@ def activity_create(context, activity_dict, ignore_auth=False):
activity_dict['revision_id'] = None

if not ignore_auth:
check_access('activity_create', context, activity_dict)
logic.check_access('activity_create', context, activity_dict)

schema = context.get('schema') or default_create_activity_schema()
schema = context.get('schema') or logic.schema.default_create_activity_schema()
data, errors = validate(activity_dict, schema, context)
if errors:
raise ValidationError(errors)
Expand All @@ -409,7 +402,7 @@ def package_relationship_create_rest(context, data_dict):
'rel': 'type'}
# Don't be destructive to enable parameter values for
# object and type to override the URL parameters.
data_dict = rename_keys(data_dict, key_map, destructive=False)
data_dict = logic.action.rename_keys(data_dict, key_map, destructive=False)

relationship_dict = package_relationship_create(context, data_dict)
return relationship_dict
Expand All @@ -419,9 +412,9 @@ def tag_create(context, tag_dict):

model = context['model']

check_access('tag_create', context, tag_dict)
logic.check_access('tag_create', context, tag_dict)

schema = context.get('schema') or default_create_tag_schema()
schema = context.get('schema') or logic.schema.default_create_tag_schema()
data, errors = validate(tag_dict, schema, context)
if errors:
raise ValidationError(errors)
Expand Down

0 comments on commit 60ed66a

Please sign in to comment.