def test_get_user_workspace_none(self, mock_tws): _get_user_workspace(self.app, None) # Check result rts_call_args = mock_tws.call_args_list self.assertIn('workspaces', rts_call_args[0][0][0]) self.assertIn('user_workspaces', rts_call_args[0][0][0]) self.assertIn('anonymous_user', rts_call_args[0][0][0])
def test_get_user_workspace(self, mock_tws): user = self.user _get_user_workspace(self.app, user) # Check result rts_call_args = mock_tws.call_args_list self.assertIn('workspaces', rts_call_args[0][0][0]) self.assertIn('user_workspaces', rts_call_args[0][0][0]) self.assertIn(user.username, rts_call_args[0][0][0])
def test_get_user_workspace_http(self, mock_tws): from django.http import HttpRequest request = HttpRequest() request.user = self.user _get_user_workspace(self.app, request) # Check result rts_call_args = mock_tws.call_args_list self.assertIn('workspaces', rts_call_args[0][0][0]) self.assertIn('user_workspaces', rts_call_args[0][0][0]) self.assertIn(self.user.username, rts_call_args[0][0][0])
def manage_storage(request, username): """ Handle clear workspace requests. """ # Users are not allowed to make changes to other users settings if request.user.username != username: messages.warning(request, "You are not allowed to change other users' settings.") return redirect('user:profile', username=request.user.username) apps = SingletonHarvester().apps user = request.user for app in apps: workspace = _get_user_workspace(app, user) app.current_use = _convert_storage_units('gb', workspace.get_size('gb')) codename = 'user_workspace_quota' rqh = WorkspaceQuotaHandler(user) current_use = _convert_storage_units(rqh.units, rqh.get_current_use()) quota = get_quota(user, codename) quota = _check_quota_helper(quota) context = {'apps': apps, 'context_user': request.user, 'current_use': current_use, 'quota': quota, } return render(request, 'tethys_portal/user/manage_storage.html', context)
def clear_workspace(request, username, root_url): """ Handle clear workspace requests. """ # Users are not allowed to make changes to other users settings if request.user.username != username: messages.warning(request, "You are not allowed to change other users' settings.") return redirect('user:profile', username=request.user.username) app = TethysApp.objects.get(root_url=root_url) # Handle form submission if request.method == 'POST' and 'clear-workspace-submit' in request.POST: app = get_app_class(app) user = request.user workspace = _get_user_workspace(app, user) app.pre_delete_user_workspace(user) workspace.clear() app.post_delete_user_workspace(user) # Give feedback messages.success(request, 'Your workspace has been successfully cleared.') # Redirect to home return redirect('user:manage_storage', username=username) context = {'app_name': app.name} return render(request, 'tethys_portal/user/clear_workspace.html', context)
def get_current_use(self): """ calculates/retrieves the current use of the resource Returns: Int: current use of resource """ current_use = 0.0 if isinstance(self.entity, User): harvester = SingletonHarvester() installed_apps = harvester.apps for app in installed_apps: workspace = _get_user_workspace(app, self.entity) current_use += float(workspace.get_size(self.units)) elif isinstance(self.entity, TethysApp): harvester = SingletonHarvester() installed_apps = harvester.apps tethys_app = next( (x for x in installed_apps if x.name == self.entity.name), None) if tethys_app is not None: current_use = float( _get_app_workspace(tethys_app).get_size(self.units)) return current_use
def test_get_user_workspace_error(self): with self.assertRaises(ValueError) as context: _get_user_workspace(self.app, 'test') self.assertEquals( "Invalid type for argument 'user': must be either an User or HttpRequest object.", str(context.exception))