Example #1
0
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}
Example #2
0
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}
Example #3
0
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()
Example #4
0
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)
Example #5
0
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)
Example #6
0
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()
Example #7
0
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)
Example #8
0
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)
Example #9
0
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'}
Example #10
0
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'}