def test_create_super_user(self): # Context user_count = len(user_api.get_all_users()) self.assertEqual(user_count, 0) # Act UserFixtures().create_super_user(username="******") # Assert list_user = user_api.get_all_users() self.assertEqual(list_user[0].username, "test username") self.assertEqual(len(list_user), user_count + 1) self.assertTrue(list_user[0].is_superuser)
def _format_data_context(self, data_list, user, user_can_read, user_can_write): detailed_user_data = [] username_list = get_id_username_dict(user_api.get_all_users()) for data in data_list: is_owner = str(data.user_id) == str(user.id) or self.administration detailed_user_data.append({ 'data': data, 'username_list': username_list, 'data_status': get_status(data), 'data_status_values': DataStatus, 'data_role': ', '.join([DataRole.role[x] for x in get_role(data)]), 'can_read': user_can_read or is_owner, 'can_write': user_can_write or is_owner, 'is_owner': is_owner }) return detailed_user_data
def _format_data_context_registry(self, data_list, is_published): data_context_list = [] username_list = dict( (str(x.id), x.username) for x in user_api.get_all_users()) for data in data_list: data_context_list.append({ 'data': data, 'username_list': username_list, 'data_status': get_status(data), 'data_status_values': DataStatus, 'data_role': ', '.join([DataRole.role[x] for x in get_role(data)]), 'can_read': True, 'can_write': True, 'is_owner': True, 'can_change_workspace': self.can_change_workspace(data), 'can_set_public': not data_api.is_data_public(data) }) return data_context_list
def get_list_user_can_read_workspace(workspace, user): """Get list of users that have read access to workspace. Args: workspace user Return: """ if is_workspace_public(workspace): return list(user_api.get_all_users()) # Get read permission of the workspace read_permission = permission_api.get_by_id(workspace.read_perm_id) return list(read_permission.user_set.all())
def __init__(self, currentUser): self.USERS_OPTIONS = [] self.USERS_OPTIONS.append(('', '-----------')) # We retrieve all users sort_users = get_all_users() # We sort by username, case insensitive sort_users = sorted(sort_users, key=lambda s: s.username.lower()) # We add them for user in sort_users: if user.id != currentUser.id or currentUser.is_superuser: self.USERS_OPTIONS.append((user.id, user.username)) super(UserForm, self).__init__() self.fields['users'].choices = [] self.fields['users'].choices = self.USERS_OPTIONS
class DashboardWorkspaceRecords(CommonView): """ List the records of a workspace. """ template = dashboard_constants.DASHBOARD_TEMPLATE data_template = dashboard_constants.DASHBOARD_RECORDS_TEMPLATE_TABLE_PAGINATION def get(self, request, workspace_id, *args, **kwargs): workspace = workspace_api.get_by_id(workspace_id) try: workspace_data = workspace_data_api.get_all_by_workspace( workspace, request.user) except AccessControlError, ace: workspace_data = [] user_can_read = workspace_api.can_user_read_workspace( workspace, request.user) user_can_write = workspace_api.can_user_write_workspace( workspace, request.user) # Paginator page = request.GET.get('page', 1) results_paginator = ResultsPaginator.get_results( workspace_data, page, settings.RECORD_PER_PAGE_PAGINATION) # Data context results_paginator.object_list = self._format_data_context( results_paginator.object_list, request.user, user_can_read, user_can_write) # Add user_form for change owner user_form = UserForm(request.user) context = { 'number_total': len(workspace_data), 'user_data': results_paginator, 'user_form': user_form, 'document': dashboard_constants.FUNCTIONAL_OBJECT_ENUM.RECORD, 'template': self.data_template, 'administration': self.administration, 'username_list': get_id_username_dict(user_api.get_all_users()) } # Get all username and corresponding ids user_names = dict( (str(x.id), x.username) for x in user_api.get_all_users()) context.update({'usernames': user_names}) context.update({ 'title': 'List of ' + get_data_label() + 's of workspace: ' + workspace.title }) modals = [ "core_main_app/user/workspaces/list/modals/assign_workspace.html", dashboard_constants.MODALS_COMMON_CHANGE_OWNER, dashboard_constants.MODALS_COMMON_DELETE ] assets = self._get_assets() return self.common_render(request, self.template, context=context, assets=assets, modals=modals)
def get(self, request, *args, **kwargs): """ Method GET Args: request: args: kwargs: Returns: """ # Get the forms if self.administration: forms = curate_data_structure_api.get_all_with_no_data() else: forms = curate_data_structure_api.get_all_by_user_id_with_no_data( request.user.id) detailed_forms = self._get_detailed_forms(forms) context = { 'administration': self.administration, 'number_total': len(forms), 'user_data': detailed_forms, 'user_form': UserForm(request.user), 'document': self.document, 'template': dashboard_constants.DASHBOARD_FORMS_TEMPLATE_TABLE, 'menu': self.administration } modals = [ dashboard_constants.MODALS_COMMON_DELETE, dashboard_constants.MODALS_COMMON_CHANGE_OWNER ] assets = { "css": dashboard_constants.CSS_COMMON, "js": [ { "path": dashboard_constants.JS_COMMON_FUNCTION_DELETE, "is_raw": False }, { "path": dashboard_constants.JS_COMMON_FUNCTION_CHANGE_OWNER, "is_raw": False }, { "path": 'core_dashboard_common_app/user/js/init.raw.js', "is_raw": True }, ] } if self.administration: # Get all username and corresponding ids user_names = dict( (str(x.id), x.username) for x in user_api.get_all_users()) context.update({ 'usernames': user_names, 'action_form': ActionForm([('1', 'Delete selected forms'), ('2', 'Change owner of selected forms')]), }) assets['js'].extend([{ "path": 'core_dashboard_common_app/common/js/init_pagination.js', "is_raw": False }, { "path": dashboard_constants.JS_ADMIN_ACTION_DASHBOARD, "is_raw": True }, { "path": dashboard_constants.JS_ADMIN_COUNT_CHECK, "is_raw": True }, { "path": dashboard_constants.JS_ADMIN_RESET_CHECKBOX, "is_raw": True }, { "path": dashboard_constants.JS_ADMIN_SELECT_ALL, "is_raw": True }, { "path": dashboard_constants.JS_ADMIN_SELETED_ELEMENT, "is_raw": False }, { "path": dashboard_constants.JS_ADMIN_INIT_MENU, "is_raw": False }]) else: assets['js'].append({ "path": dashboard_constants.JS_USER_SELECTED_ELEMENT, "is_raw": True }) return self.common_render(request, self.template, context=context, assets=assets, modals=modals)
'document': self.document, 'template': self.data_template, 'action_form': ActionForm([('1', 'Delete selected records'), ('2', 'Change owner of selected records')]), 'menu': self.administration, 'administration': self.administration } if self.administration: context.update({ 'username_list': get_id_username_dict(user_api.get_all_users()) }) modals = [ "core_main_app/user/workspaces/list/modals/assign_workspace.html", dashboard_constants.MODALS_COMMON_DELETE, dashboard_constants.MODALS_COMMON_CHANGE_OWNER ] assets = self._get_assets() return self.common_render(request, self.template, context=context, assets=assets, modals=modals)
def get(self, request, workspace_id, *args, **kwargs): workspace = workspace_api.get_by_id(workspace_id) # Get the selected tab if given, otherwise data will be selected by default tab_selected = request.GET.get("tab", "data") items_to_render = [] context = {} data_count = 0 files_count = 0 try: data = workspace_data_api.get_all_by_workspace( workspace, request.user) data_count = data.count() files = workspace_blob_api.get_all_by_workspace( workspace, request.user) files_count = files.count() if tab_selected == "data": items_to_render = data context.update({ "document": dashboard_constants.FUNCTIONAL_OBJECT_ENUM.RECORD.value }) elif tab_selected == "file": items_to_render = files context.update({ "document": dashboard_constants.FUNCTIONAL_OBJECT_ENUM.FILE.value }) except AccessControlError as ace: items_to_render = workspace_data_api.get_none() user_can_read = workspace_api.can_user_read_workspace( workspace, request.user) user_can_write = workspace_api.can_user_write_workspace( workspace, request.user) # Paginator page = request.GET.get("page", 1) results_paginator = ResultsPaginator.get_results( items_to_render, page, settings.RECORD_PER_PAGE_PAGINATION) # Data context results_paginator.object_list = self._format_document_context( request, results_paginator.object_list, user_can_read, user_can_write, tab_selected, ) # Add user_form for change owner user_form = UserForm(request.user) context.update({ "workspace_id": workspace_id, "number_total": items_to_render.count(), "user_data": results_paginator, "user_form": user_form, "template": self.data_template, "administration": self.administration, "username_list": user_api.get_id_username_dict(user_api.get_all_users()), "tab": tab_selected, "title": workspace.title, "number_total_data": data_count, "number_total_files": files_count, }) # Get all username and corresponding ids user_names = dict( (str(x.id), x.username) for x in user_api.get_all_users()) context.update({"usernames": user_names}) modals = [ dashboard_constants.MODALS_COMMON_CHANGE_OWNER, dashboard_constants.MODALS_COMMON_DELETE, ] assets = self._get_assets() if "core_file_preview_app" in INSTALLED_APPS: assets["js"].extend([{ "path": "core_file_preview_app/user/js/file_preview.js", "is_raw": False, }]) assets["css"].append( "core_file_preview_app/user/css/file_preview.css") modals.append("core_file_preview_app/user/file_preview_modal.html") return self.common_render(request, self.template, context=context, assets=assets, modals=modals)
class DashboardRegistryRecords(DashboardRecords): """ List the records for the registry """ def get(self, request, *args, **kwargs): # Get arguments is_published = request.GET.get('ispublished', None) is_published = None if is_published not in ['true', 'false' ] else is_published role_name_list = request.GET.getlist('role', ['all']) page = request.GET.get('page', 1) role_name = ','.join(role_name_list) context = { 'page': page, 'roles': role_name, 'ispublished': is_published } # Get resources try: loaded_data = data_api.execute_query( create_query_dashboard_resources(request, role_name_list, self.administration), request.user, '-last_modification_date') except AccessControlError, ace: loaded_data = [] # Filter publish/not published data filtered_data = [] for data in loaded_data: if (is_published is None or (is_published == 'true' and data_api.is_data_public(data)) or (is_published == 'false' and not data_api.is_data_public(data))): filtered_data.append(data) # Paginator results_paginator = ResultsPaginator.get_results( filtered_data, page, settings.RECORD_PER_PAGE_PAGINATION) # Data context results_paginator.object_list = self._format_data_context_registry( results_paginator.object_list, is_published) # Add user_form for change owner user_form = UserForm(request.user) context.update({ 'number_total': len(filtered_data), 'user_data': results_paginator, 'user_form': user_form, 'document': self.document, 'template': self.data_template, 'action_form': ActionForm([('2', 'Change owner of selected records')]), 'menu': self.administration, 'administration': self.administration, 'username_list': get_id_username_dict(user_api.get_all_users()), 'resources': True, 'url_resources': reverse('admin:core_dashboard_records') if self.administration else reverse('core_dashboard_records') }) modals = [ "core_main_app/user/workspaces/list/modals/assign_workspace.html", dashboard_common_constants.MODALS_COMMON_DELETE, dashboard_common_constants.MODALS_COMMON_CHANGE_OWNER ] assets = self._get_assets() return self.common_render(request, self.template, context=context, assets=assets, modals=modals)
def get(self, request, workspace_id, *args, **kwargs): workspace = workspace_api.get_by_id(workspace_id) try: workspace_data = workspace_data_api.get_all_by_workspace( workspace, request.user ) except AccessControlError as ace: workspace_data = workspace_data_api.get_none() user_can_read = workspace_api.can_user_read_workspace(workspace, request.user) user_can_write = workspace_api.can_user_write_workspace(workspace, request.user) # Paginator page = request.GET.get("page", 1) results_paginator = ResultsPaginator.get_results( workspace_data, page, settings.RECORD_PER_PAGE_PAGINATION ) # Data context try: results_paginator.object_list = self._format_data_context( results_paginator.object_list, request.user, user_can_read, user_can_write, ) except: results_paginator.object_list = [] # Add user_form for change owner user_form = UserForm(request.user) context = { "number_total": workspace_data.count(), "user_data": results_paginator, "user_form": user_form, "document": dashboard_constants.FUNCTIONAL_OBJECT_ENUM.RECORD.value, "template": self.data_template, "administration": self.administration, "username_list": get_id_username_dict(user_api.get_all_users()), } # Get all username and corresponding ids user_names = dict((str(x.id), x.username) for x in user_api.get_all_users()) context.update({"usernames": user_names}) context.update( { "title": "List of " + get_data_label() + "s of workspace: " + workspace.title } ) modals = self._get_modals() assets = self._get_assets() return self.common_render( request, self.template, context=context, assets=assets, modals=modals )
def get(self, request, *args, **kwargs): """Method GET Args: request: args: kwargs: Returns: """ # Get the forms if self.administration: try: forms = curate_data_structure_api.get_all_with_no_data(request.user) except AccessControlError as ace: forms = curate_data_structure_api.get_none() else: forms = curate_data_structure_api.get_all_by_user_id_with_no_data( request.user.id ) try: detailed_forms = self._get_detailed_forms(forms) except: detailed_forms = [] context = { "administration": self.administration, "number_total": forms.count(), "user_data": detailed_forms, "user_form": UserForm(request.user), "document": self.document, "template": dashboard_constants.DASHBOARD_FORMS_TEMPLATE_TABLE, "menu": self.administration, } modals = [ "core_main_app/user/workspaces/list/modals/assign_workspace.html", dashboard_constants.MODALS_COMMON_DELETE, dashboard_constants.MODALS_COMMON_CHANGE_OWNER, ] assets = { "css": dashboard_constants.CSS_COMMON, "js": [ { "path": dashboard_constants.JS_COMMON_FUNCTION_DELETE, "is_raw": False, }, { "path": dashboard_constants.JS_COMMON_FUNCTION_CHANGE_OWNER, "is_raw": False, }, { "path": "core_dashboard_common_app/user/js/init.raw.js", "is_raw": True, }, ], } if self.administration: # Get all username and corresponding ids user_names = dict((str(x.id), x.username) for x in user_api.get_all_users()) context.update( { "usernames": user_names, "action_form": ActionForm( [ ("1", "Delete selected forms"), ("2", "Change owner of selected forms"), ] ), } ) assets["js"].extend( [ { "path": "core_dashboard_common_app/common/js/init_pagination.js", "is_raw": False, }, { "path": dashboard_constants.JS_ADMIN_ACTION_DASHBOARD, "is_raw": True, }, {"path": dashboard_constants.JS_ADMIN_COUNT_CHECK, "is_raw": True}, { "path": dashboard_constants.JS_ADMIN_RESET_CHECKBOX, "is_raw": True, }, {"path": dashboard_constants.JS_ADMIN_SELECT_ALL, "is_raw": True}, { "path": dashboard_constants.JS_ADMIN_SELETED_ELEMENT, "is_raw": False, }, {"path": dashboard_constants.JS_ADMIN_INIT_MENU, "is_raw": False}, ] ) else: assets["js"].append( {"path": dashboard_constants.JS_USER_SELECTED_ELEMENT, "is_raw": True} ) return self.common_render( request, self.template, context=context, assets=assets, modals=modals )
def get(self, request, *args, **kwargs): # Get records if self.administration: try: loaded_data = data_api.get_all(request.user) except AccessControlError as ace: loaded_data = data_api.get_none() else: loaded_data = data_api.get_all_by_user(request.user) # Paginator page = request.GET.get("page", 1) results_paginator = ResultsPaginator.get_results( loaded_data, page, settings.RECORD_PER_PAGE_PAGINATION ) # Data context try: results_paginator.object_list = self._format_data_context( results_paginator.object_list ) except: results_paginator.object_list = [] # Add user_form for change owner user_form = UserForm(request.user) context = { "number_total": loaded_data.count(), "user_data": results_paginator, "user_form": user_form, "document": self.document, "template": self.data_template, "action_form": ActionForm( [ ("1", "Delete selected records"), ("2", "Change owner of selected records"), ] ), "menu": self.administration, "administration": self.administration, "share_pid_button": "core_linked_records_app" in settings.INSTALLED_APPS, } if self.administration: context.update( { "username_list": get_id_username_dict(user_api.get_all_users()), } ) modals = [ "core_main_app/user/workspaces/list/modals/assign_workspace.html", dashboard_constants.MODALS_COMMON_DELETE, dashboard_constants.MODALS_COMMON_CHANGE_OWNER, ] assets = self._get_assets() if context["share_pid_button"]: modals.append("core_linked_records_app/user/sharing/data_detail/modal.html") assets["js"] += [ { "path": "core_main_app/user/js/sharing_modal.js", "is_raw": False, }, { "path": "core_linked_records_app/user/js/sharing/common_list.js", "is_raw": False, }, { "path": "core_linked_records_app/user/js/sharing/data_list.js", "is_raw": False, }, ] return self.common_render( request, self.template, context=context, assets=assets, modals=modals )