Exemple #1
0
def datasets():
    """
    User Dashboard > My Datasets pagination.
    """
    context = {u'for_view': True, u'user': g.user, u'auth_user_obj': g.userobj}
    data_dict = {u'user_obj': g.userobj, u'include_datasets': True}
    extra_vars = _extra_template_variables(context, data_dict)

    items_per_page = 10  # , readme

    # check ckan version and call appropriate get_page number
    if p.toolkit.check_ckan_version(min_version='2.5.0', max_version='2.5.3'):
        page = self._get_page_number(request.params) or 1
    else:
        page = h.get_page_number(request.params) or 1

    c.page = h.Page(
        collection=extra_vars['user_dict']['datasets'],
        page=page,
        url=h.pager_url,
        item_count=len(extra_vars['user_dict']['datasets']),
        items_per_page=items_per_page,
    )
    c.page.items = extra_vars['user_dict']['datasets']

    return render(u'user/dashboard_datasets.html', extra_vars)
Exemple #2
0
def my_pending_organizations():
    """
    Publishers with pending for approval
    :return:
    """
    log.debug('dashboard pending orgainzations')
    # Anonymous user should not be allowed to visit the link
    context = {
        u'model': model,
        u'for_view': True,
        u'user': g.user,
        u'auth_user_obj': g.userobj
    }
    data_dict = {u'user_obj': g.userobj}
    try:
        if not c.user:
            raise NotAuthorized
        pending_organizations = iati_h.organization_list_pending()
        extra_vars = _extra_template_variables(context, data_dict)
        page = h.get_page_number(request.params) or 1
        c.page = h.Page(
            collection=pending_organizations,
            page=page,
            url=h.pager_url,
            item_count=len(pending_organizations),
            items_per_page=20,
        )
        extra_vars["page"] = c.page
        extra_vars['pending_organizations'] = pending_organizations
        return render('user/dashboard_pending_organizations.html', extra_vars)
    except NotAuthorized:
        p.toolkit.abort(
            401,
            _('Unauthorized to visit pending publisher page %s') % '')
Exemple #3
0
def my_organizations():
    log.debug('dashboard my orgainzations')
    context = {
        u'model': model,
        u'for_view': True,
        u'user': g.user,
        u'auth_user_obj': g.userobj
    }
    data_dict = {u'user_obj': g.userobj}
    try:
        if not c.user:
            raise NotAuthorized
        organizations = iati_h.organizations_available_with_extra_fields()
        extra_vars = _extra_template_variables(context, data_dict)
        page = h.get_page_number(request.params) or 1
        c.page = h.Page(
            collection=organizations,
            page=page,
            url=h.pager_url,
            item_count=len(organizations),
            items_per_page=20,
        )
        extra_vars["page"] = c.page
        extra_vars['organizations'] = organizations
        return render('user/my_organizations.html', extra_vars)
    except NotAuthorized:
        p.toolkit.abort(401,
                        _('Unauthorized to visit my publisher page  %s') % '')
Exemple #4
0
def index(offset=0):
    context = {
        u'model': model,
        u'session': model.Session,
        u'user': g.user,
        u'auth_user_obj': g.userobj,
        u'for_view': True
    }
    data_dict = {u'user_obj': g.userobj, u'offset': offset}
    extra_vars = _extra_template_variables(context, data_dict)

    q = request.params.get(u'q', u'')
    filter_type = request.params.get(u'type', u'')
    filter_id = request.params.get(u'name', u'')

    extra_vars[u'followee_list'] = logic.get_action(u'followee_list')(
        context, {
            u'id': g.userobj.id,
            u'q': q
        })
    extra_vars[u'dashboard_activity_stream_context'] = _get_dashboard_context(
        filter_type, filter_id, q)
    extra_vars[u'dashboard_activity_stream'] = h.dashboard_activity_stream(
        g.userobj.id, filter_type, filter_id, offset)

    # Mark the user's new activities as old whenever they view their
    # dashboard page.
    logic.get_action(u'dashboard_mark_activities_old')(context, {})

    return base.render(u'user/dashboard.html', extra_vars)
Exemple #5
0
def index(offset=0):
    context = {
        u'model': model,
        u'session': model.Session,
        u'user': g.user,
        u'auth_user_obj': g.userobj,
        u'for_view': True
    }
    data_dict = {u'user_obj': g.userobj, u'offset': offset}
    extra_vars = _extra_template_variables(context, data_dict)

    q = request.params.get(u'q', u'')
    filter_type = request.params.get(u'type', u'')
    filter_id = request.params.get(u'name', u'')

    extra_vars[u'followee_list'] = logic.get_action(u'followee_list')(
        context, {
            u'id': g.userobj.id,
            u'q': q
        })
    extra_vars[u'dashboard_activity_stream_context'] = _get_dashboard_context(
        filter_type, filter_id, q)
    extra_vars[u'dashboard_activity_stream'] = h.dashboard_activity_stream(
        g.userobj.id, filter_type, filter_id, offset)

    # Mark the user's new activities as old whenever they view their
    # dashboard page.
    logic.get_action(u'dashboard_mark_activities_old')(context, {})

    return base.render(u'user/dashboard.html', extra_vars)
Exemple #6
0
def dashboard(offset: int = 0) -> str:
    context = cast(
        Context,
        {
            "model": model,
            "session": model.Session,
            "user": tk.g.user,
            "auth_user_obj": tk.g.userobj,
            "for_view": True,
        },
    )
    data_dict: dict[str, Any] = {"user_obj": tk.g.userobj, "offset": offset}
    extra_vars = _extra_template_variables(context, data_dict)

    q = tk.request.args.get("q", "")
    filter_type = tk.request.args.get("type", "")
    filter_id = tk.request.args.get("name", "")

    extra_vars["followee_list"] = tk.get_action("followee_list")(
        context, {"id": tk.g.userobj.id, "q": q}
    )
    extra_vars["dashboard_activity_stream_context"] = _get_dashboard_context(
        filter_type, filter_id, q
    )
    extra_vars["dashboard_activity_stream"] = tk.h.dashboard_activity_stream(
        tk.g.userobj.id, filter_type, filter_id, offset
    )

    # Mark the user's new activities as old whenever they view their
    # dashboard page.
    tk.get_action("dashboard_mark_activities_old")(context, {})

    return tk.render("user/dashboard.html", extra_vars)
Exemple #7
0
def user_activity(id: str, offset: int = 0) -> str:
    """Render this user's public activity stream page."""
    context = cast(
        Context,
        {
            "model": model,
            "session": model.Session,
            "user": tk.g.user,
            "auth_user_obj": tk.g.userobj,
            "for_view": True,
        },
    )
    data_dict: dict[str, Any] = {
        "id": id,
        "user_obj": tk.g.userobj,
        "include_num_followers": True,
    }
    try:
        tk.check_access("user_show", context, data_dict)
    except tk.NotAuthorized:
        tk.abort(403, tk._("Not authorized to see this page"))

    extra_vars = _extra_template_variables(context, data_dict)

    try:
        extra_vars["user_activity_stream"] = tk.get_action(
            "user_activity_list"
        )(context, {"id": extra_vars["user_dict"]["id"], "offset": offset})
    except tk.ValidationError:
        tk.abort(400)
    extra_vars["id"] = id

    return tk.render("user/activity_stream.html", extra_vars)
Exemple #8
0
def groups() -> str:
    context: Context = {
        u'for_view': True,
        u'user': g.user,
        u'auth_user_obj': g.userobj
    }
    data_dict = {u'user_obj': g.userobj}
    extra_vars = _extra_template_variables(context, data_dict)
    return base.render(u'user/dashboard_groups.html', extra_vars)
Exemple #9
0
def datasets() -> str:
    context: Context = {
        u'for_view': True,
        u'user': g.user,
        u'auth_user_obj': g.userobj
    }
    data_dict: dict[str, Any] = {
        u'user_obj': g.userobj,
        u'include_datasets': True
    }
    extra_vars = _extra_template_variables(context, data_dict)
    return base.render(u'user/dashboard_datasets.html', extra_vars)
Exemple #10
0
 def list_groups(self):
     '''Lists all the topics for an user in the dashboard
     '''
     if not toolkit.c.userobj:
         base.abort(403, _('Not authorized to see this page'))
     is_editor = not is_admin(toolkit.c.user)
     context = {
         u'for_view': True,
         u'user': g.user,
         u'auth_user_obj': g.userobj
     }
     data_dict = {u'user_obj': g.userobj, u'include_datasets': True}
     extra_vars = _extra_template_variables(context, data_dict)
     return base.render(u'user/dashboard_groups.html', extra_vars)
Exemple #11
0
    def list_requests(self):
        '''Lits pending requests for organization admin for separate tab

        Note: Not used ATM
        '''
        if not toolkit.c.userobj:
            base.abort(403, _('Not authorized to see this page'))
        is_editor = not is_admin(toolkit.c.user)
        pending_dataset = get_pending_datasets(toolkit.c.userobj.id, is_editor)
        context = {
            u'for_view': True,
            u'user': g.user,
            u'auth_user_obj': g.userobj
        }
        data_dict = {u'user_obj': g.userobj, u'include_datasets': True}
        extra_vars = _extra_template_variables(context, data_dict)
        extra_vars['pending_dataset'] = pending_dataset
        return base.render(u'user/dashboard_requests.html', extra_vars)
def user_datasets(id):
    context = {
        u'model': model,
        u'session': model.Session,
        u'user': g.user,
        u'auth_user_obj': g.userobj,
        u'for_view': True
    }
    data_dict = {
        u'id': id,
        u'user_obj': g.userobj,
        u'include_datasets': True,
        u'include_num_followers': True
    }

    extra_vars = user._extra_template_variables(context, data_dict)

    datasets = []

    # Get dataset created by me.
    if extra_vars['user_dict'].get('datasets'):
        datasets = extra_vars['user_dict'].get('datasets')

    # Get position id.
    if extra_vars['user_dict'].get('email'):
        site_user = get_action(u'get_site_user')({u'ignore_auth': True}, {})
        context = {u'user': site_user[u'name']}
        secure_vocab = get_action('get_secure_vocabulary_search')(
            context, {
                'vocabulary_name': 'point-of-contact',
                'query': extra_vars['user_dict'].get('email')
            })

        pos_id = None
        if secure_vocab and secure_vocab[0].get('value', None) is not None:
            pos_id = secure_vocab[0].get('value')

        # Get dataset I am dataset/metadata contact point.
        if pos_id:
            for search_field in ['contact_point', 'metadata_contact_point']:
                data_dict = {
                    'fl': f"id, {search_field}",
                    'fq': f"{search_field}:{pos_id}",
                    'include_private': True,
                    'rows': 1000
                }

                query_result = get_action('package_search')(context, data_dict)

                ids = []
                if query_result.get('count') > 0:
                    for dataset in query_result.get('results'):
                        ids.append(dataset.get('id'))

                    for dataset in datasets:
                        if dataset.get('id') in ids:
                            ids.remove(dataset.get('id'))

                    if len(ids) > 0:
                        for id in ids:
                            dataset = get_action('package_show')(context, {
                                'id': id
                            })
                            datasets.append(dataset)

    return datasets
Exemple #13
0
def recent_publishers():
    is_organization = True
    group_type = u'organization'

    context = {
        u'model': model,
        u'for_view': True,
        u'user': g.user,
        u'auth_user_obj': g.userobj
    }
    data_dict = {u'user_obj': g.userobj}

    # Only for sysadmin
    try:
        logic.check_access('sysadmin', context, {})
    except logic.NotAuthorized:
        abort(403, _('Need to be system administrator to administer'))

    extra_vars = {}
    page = h.get_page_number(request.params) or 1
    items_per_page = 10

    context = {
        u'model': model,
        u'session': model.Session,
        u'user': c.user,
        u'for_view': True,
        u'with_private': False
    }

    q = request.params.get(u'q', u'')
    sort_by = c.sort_by_selected = request.params.get(
        u'sort', u'publisher_first_publish_date desc')
    c.q = q

    extra_vars["q"] = q
    extra_vars["sort_by_selected"] = sort_by

    # pass user info to context as needed to view private datasets of
    # orgs correctly
    if c.userobj:
        context['user_id'] = c.userobj.id
        context['user_is_admin'] = c.userobj.sysadmin

    try:
        data_dict_global_results = {
            u'all_fields': False,
            u'q': q,
            u'sort': sort_by,
            u'type': group_type or u'group',
        }
        global_results = core_group_view._action(u'group_list')(
            context, data_dict_global_results)
    except ValidationError as e:
        if e.error_dict and e.error_dict.get(u'message'):
            msg = e.error_dict['message']
        else:
            msg = str(e)
        h.flash_error(msg)
        extra_vars["page"] = h.Page([], 0)
        extra_vars["group_type"] = group_type
        extra_vars.update(_extra_template_variables(context, data_dict))
        return render(_get_group_template(u'index_template', group_type),
                      extra_vars)

    data_dict_page_results = {
        u'all_fields': True,
        u'q': q,
        u'sort': sort_by,
        u'type': group_type or u'group',
        u'limit': items_per_page,
        u'offset': items_per_page * (page - 1),
        u'include_extras': True
    }
    page_results = core_group_view._action(u'group_list')(
        context, data_dict_page_results)

    extra_vars["page"] = h.Page(
        collection=global_results,
        page=page,
        url=h.pager_url,
        items_per_page=items_per_page,
    )

    extra_vars["page"].items = page_results
    extra_vars["group_type"] = group_type
    c.page = extra_vars["page"]
    extra_vars.update(_extra_template_variables(context, data_dict))
    return render('user/dashboard_recent_publishers.html', extra_vars)
Exemple #14
0
def requests():
    if not helpers.user_is_container_admin(
    ) and not toolkit.c.userobj.sysadmin:
        return toolkit.abort(403, "Forbidden")

    context = {'model': model, 'user': toolkit.c.user}

    try:
        new_container_requests = toolkit.get_action('container_request_list')(
            context, {
                'all_fields': True
            })
    except (toolkit.NotAuthorized, toolkit.ObjectNotFound):
        new_container_requests = []

    try:
        access_requests = toolkit.get_action('access_request_list_for_user')(
            context, {})
    except (toolkit.NotAuthorized, toolkit.ObjectNotFound):
        access_requests = []

    container_access_requests = [
        req for req in access_requests if req['object_type'] == 'organization'
    ]
    dataset_access_requests = [
        req for req in access_requests if req['object_type'] == 'package'
    ]
    user_account_requests = [
        req for req in access_requests
        if req['object_type'] == 'user' and not req['is_renewal']
    ]
    user_renewal_requests = [
        req for req in access_requests
        if req['object_type'] == 'user' and req['is_renewal']
    ]

    context = {
        'model': model,
        'session': model.Session,
        'user': toolkit.c.user,
        'auth_user_obj': toolkit.c.userobj,
        'for_view': True,
    }

    template_vars = _extra_template_variables(context, {
        'id': toolkit.c.userobj.id,
        'user_obj': toolkit.c.userobj,
        'offset': 0
    })

    template_vars['new_container_requests'] = new_container_requests
    template_vars['container_access_requests'] = container_access_requests
    template_vars['dataset_access_requests'] = dataset_access_requests
    template_vars['user_account_requests'] = user_account_requests
    template_vars['user_renewal_requests'] = user_renewal_requests

    extras_user_access_request = {}
    for uar in user_account_requests + user_renewal_requests:
        # access_request_list_for_user removes plugin_extras where focal-point lives
        user_obj = model.User.get(uar['user_id'])
        focal_point = user_obj.plugin_extras.get('unhcr',
                                                 {}).get('focal_point')
        default_containers = user_obj.plugin_extras.get('unhcr', {}).get(
            'default_containers', [])

        containers = [
            model.Group.get(container_id)
            for container_id in default_containers
        ]
        cleaned_containers = [
            container for container in containers
            if container and container.name != 'data-deposit'
        ]

        extras = {
            'default_containers': cleaned_containers,
            'focal_point': focal_point
        }
        extras_user_access_request[uar['id']] = extras

    template_vars['extras_user_access_request'] = extras_user_access_request

    return toolkit.render('user/dashboard_requests.html', template_vars)
Exemple #15
0
def organizations():
    context = {u'for_view': True, u'user': g.user, u'auth_user_obj': g.userobj}
    data_dict = {u'user_obj': g.userobj}
    extra_vars = _extra_template_variables(context, data_dict)
    return base.render(u'user/dashboard_organizations.html', extra_vars)
Exemple #16
0
def groups():
    context = {u'for_view': True, u'user': g.user, u'auth_user_obj': g.userobj}
    data_dict = {u'user_obj': g.userobj}
    extra_vars = _extra_template_variables(context, data_dict)
    return base.render(u'user/dashboard_groups.html', extra_vars)