Esempio n. 1
0
    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])
Esempio n. 2
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])
Esempio n. 3
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])
Esempio n. 4
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)
Esempio n. 5
0
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)
Esempio n. 6
0
    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
Esempio n. 7
0
 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))