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)
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') % '')
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') % '')
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)
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)
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)
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)
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)
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)
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
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)
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)
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)
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)