def is_owner(context, data_dict): ''' This is used in "request edit rights" feature. Checks if the user is creator, admin or editor of the package in question :param context: context :param data_dict: package data :type data_dict: dictionary :rtype: dictionary ''' # Package creator is always owner regardless of organizations pkg = context.get('package', None) or Package.get(data_dict['id']) user = context.get('user', False) # If user id can't be resolved, user can't be owner try: user_id = convert_user_name_or_id_to_id(user, context) except: return {'success': False} if pkg.creator_user_id == user_id: return {'success': True} # Check if the user has editor rights to this dataset through an organization package = get_package_object(context, data_dict) if authz.has_user_permission_for_group_or_org(package.owner_org, user, 'delete_dataset'): return {'success': True} return {'success': False}
def showcase_admin_remove(context, data_dict): '''Remove a user to the list of showcase admins. :param username: name of the user to remove from showcase user admin list :type username: string ''' model = context['model'] toolkit.check_access('ckanext_showcase_admin_remove', context, data_dict) # validate the incoming data_dict validated_data_dict, errors = validate(data_dict, showcase_admin_remove_schema(), context) if errors: raise toolkit.ValidationError(errors) username = toolkit.get_or_bust(validated_data_dict, 'username') user_id = convert_user_name_or_id_to_id(username, context) showcase_admin_to_remove = ShowcaseAdmin.get(user_id=user_id) if showcase_admin_to_remove is None: raise toolkit.ObjectNotFound("ShowcaseAdmin with user_id '{0}' doesn't exist.".format(user_id)) showcase_admin_to_remove.delete() model.repo.commit()
def showcase_admin_add(context, data_dict): '''Add a user to the list of showcase admins. :param username: name of the user to add to showcase user admin list :type username: string ''' toolkit.check_access('ckanext_showcase_admin_add', context, data_dict) # validate the incoming data_dict validated_data_dict, errors = validate(data_dict, showcase_admin_add_schema(), context) username = toolkit.get_or_bust(validated_data_dict, 'username') try: user_id = convert_user_name_or_id_to_id(username, context) except toolkit.Invalid: raise toolkit.ObjectNotFound if errors: raise toolkit.ValidationError(errors) if ShowcaseAdmin.exists(user_id=user_id): raise toolkit.ValidationError( "ShowcaseAdmin with user_id '{0}' already exists.".format(user_id), error_summary=u"User '{0}' is already a Showcase Admin.".format( username)) # create showcase admin entry return ShowcaseAdmin.create(user_id=user_id)
def showcase_admin_add(context, data_dict): '''Add a user to the list of showcase admins. :param username: name of the user to add to showcase user admin list :type username: string ''' toolkit.check_access('ckanext_showcase_admin_add', context, data_dict) # validate the incoming data_dict validated_data_dict, errors = validate( data_dict, showcase_admin_add_schema(), context) username = toolkit.get_or_bust(validated_data_dict, 'username') try: user_id = convert_user_name_or_id_to_id(username, context) except toolkit.Invalid: raise toolkit.ObjectNotFound if errors: raise toolkit.ValidationError(errors) if ShowcaseAdmin.exists(user_id=user_id): raise toolkit.ValidationError("ShowcaseAdmin with user_id '{0}' already exists.".format(user_id), error_summary=u"User '{0}' is already a Showcase Admin.".format(username)) # create showcase admin entry return ShowcaseAdmin.create(user_id=user_id)
def experience_admin_remove(context, data_dict): '''Remove a user to the list of experience admins. :param username: name of the user to remove from experience user admin list :type username: string ''' model = context['model'] toolkit.check_access('ckanext_experience_admin_remove', context, data_dict) # validate the incoming data_dict validated_data_dict, errors = validate(data_dict, experience_admin_remove_schema(), context) if errors: raise toolkit.ValidationError(errors) username = toolkit.get_or_bust(validated_data_dict, 'username') user_id = convert_user_name_or_id_to_id(username, context) experience_admin_to_remove = ExperienceAdmin.get(user_id=user_id) if experience_admin_to_remove is None: raise toolkit.ObjectNotFound( toolkit._("ExperienceAdmin with user_id '{0}' doesn't exist."). format(user_id)) experience_admin_to_remove.delete() model.repo.commit()
def project_admin_add(context, data_dict): """Add a user to the list of project admins. :param username: name of the user to add to project user admin list :type username: string """ toolkit.check_access("ckanext_project_admin_add", context, data_dict) # validate the incoming data_dict validated_data_dict, errors = validate(data_dict, project_admin_add_schema(), context) username = toolkit.get_or_bust(validated_data_dict, "username") try: user_id = convert_user_name_or_id_to_id(username, context) except toolkit.Invalid: raise toolkit.ObjectNotFound if errors: raise toolkit.ValidationError(errors) if projectAdmin.exists(user_id=user_id): raise toolkit.ValidationError( "projectAdmin with user_id '{0}' already exists.".format(user_id), error_summary=u"User '{0}' is already a project Admin.".format(username), ) # create project admin entry return projectAdmin.create(user_id=user_id)
def convert_usernames_to_ids(usernames, context): usernames = usernames.split(',') usernames_ids = [] for username in usernames: user_id = convert_user_name_or_id_to_id(username, context) usernames_ids.append(user_id) return ','.join(usernames_ids)
def _package_review(context, data_dict=None): can_update = tk.check_access('package_update', context, data_dict) if can_update: package = logic_auth.get_package_object(context, data_dict) creator_user_id = converters.convert_user_name_or_id_to_id(tk.c.user, context) if package and (package.maintainer == tk.c.user or package.creator_user_id == creator_user_id): return {'success': True } return {'success': False, 'msg': 'Not allowed to update suspended packages'}
def _statistics_show(context, data_dict=None): #if user is org admin allow access user_id = converters.convert_user_name_or_id_to_id(tk.c.user, context) q = ckan_model.Session.query(ckan_model.Member) \ .filter(ckan_model.Member.table_name == 'user') \ .filter(ckan_model.Member.state == 'active') \ .filter(ckan_model.Member.capacity == 'admin') \ .filter(ckan_model.Member.table_id == user_id) if bool(q.count()): return {'success': True } return {'success': False, 'msg': 'Not allowed to view statistics'}