def group_create(context, data_dict): model = context['model'] user = context['user'] schema = context.get('schema') or default_group_schema() check_access(model.System(), model.Action.GROUP_CREATE, context) data, errors = validate(data_dict, schema, context) if errors: model.Session.rollback() raise ValidationError(errors, group_error_summary(errors)) rev = model.repo.new_revision() rev.author = user if 'message' in context: rev.message = context['message'] else: rev.message = _(u'REST API: Create object %s') % data.get("name") group = group_dict_save(data, context) if user: admins = [model.User.by_name(user.decode('utf8'))] else: admins = [] model.setup_default_user_roles(group, admins) for item in PluginImplementations(IGroupController): item.create(group) model.repo.commit() context["group"] = group context["id"] = group.id log.debug('Created object %s' % str(group.name)) return group_dictize(group, context)
def user_create(context, data_dict): '''Creates a new user''' model = context['model'] schema = context.get('schema') or default_user_schema() session = context['session'] check_access('user_create', context, data_dict) data, errors = validate(data_dict, schema, context) if errors: session.rollback() raise ValidationError(errors, group_error_summary(errors)) user = user_dict_save(data, context) # Flush the session to cause user.id to be initialised, because # activity_create() (below) needs it. session.flush() activity_create_context = { 'model': model, 'user': context['user'], 'defer_commit': True, 'session': session } activity_dict = { 'user_id': user.id, 'object_id': user.id, 'activity_type': 'new user', } activity_create(activity_create_context, activity_dict, ignore_auth=True) if not context.get('defer_commit'): model.repo.commit() context['user'] = user context['id'] = user.id log.debug('Created user %s' % str(user.name)) return user_dictize(user, context)
def user_create(context, data_dict): '''Creates a new user''' model = context['model'] user = context['user'] schema = context.get('schema') or default_user_schema() check_access('user_create', context, data_dict) data, errors = validate(data_dict, schema, context) if errors: model.Session.rollback() raise ValidationError(errors, group_error_summary(errors)) user = user_dict_save(data, context) model.repo.commit() context['user'] = user context['id'] = user.id log.debug('Created user %s' % str(user.name)) return user_dictize(user, context)
def user_create(context, data_dict): '''Creates a new user''' model = context['model'] user = context['user'] schema = context.get('schema') or default_user_schema() check_access('user_create', context, data_dict) data, errors = validate(data_dict, schema, context) if errors: model.Session.rollback() raise ValidationError(errors, group_error_summary(errors)) user = user_dict_save(data, context) if not context.get('defer_commit'): model.repo.commit() context['user'] = user context['id'] = user.id log.debug('Created user %s' % str(user.name)) return user_dictize(user, context)
def group_create(context, data_dict): model = context['model'] user = context['user'] session = context['session'] schema = context.get('schema') or default_group_schema() parent = context.get('parent', None) check_access('group_create',context,data_dict) data, errors = validate(data_dict, schema, context) if errors: session.rollback() raise ValidationError(errors, group_error_summary(errors)) rev = model.repo.new_revision() rev.author = user if 'message' in context: rev.message = context['message'] else: rev.message = _(u'REST API: Create object %s') % data.get("name") group = group_dict_save(data, context) if parent: parent_group = model.Group.get( parent ) if parent_group: member = model.Member(group=parent_group, table_id=group.id, table_name='group') session.add(member) if user: admins = [model.User.by_name(user.decode('utf8'))] else: admins = [] model.setup_default_user_roles(group, admins) # Needed to let extensions know the group id session.flush() for item in PluginImplementations(IGroupController): item.create(group) activity_dict = { 'user_id': model.User.by_name(user.decode('utf8')).id, 'object_id': group.id, 'activity_type': 'new group', } activity_dict['data'] = { 'group': ckan.lib.dictization.table_dictize(group, context) } activity_create_context = { 'model': model, 'user': user, 'defer_commit':True, 'session': session } activity_create(activity_create_context, activity_dict, ignore_auth=True) if not context.get('defer_commit'): model.repo.commit() context["group"] = group context["id"] = group.id log.debug('Created object %s' % str(group.name)) return group_dictize(group, context)