コード例 #1
0
ファイル: user.py プロジェクト: rileyhales/tethys
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)
コード例 #2
0
 def test_rqh_check_eq_dne(self, _):
     with transaction.atomic():
         user = User.objects.create_user(username="******",
                                         email="*****@*****.**",
                                         password="******")
         resource_quota_handler = WorkspaceQuotaHandler(user)
         self.assertEquals("workspace_quota",
                           resource_quota_handler.codename)
         self.assertTrue(resource_quota_handler.check())
コード例 #3
0
ファイル: user.py プロジェクト: rfun/tethys
def settings(request, username=None):
    """
    Handle the settings view. Access to change settings are not publicly accessible
    """
    # Get the user object from model
    request_user = request.user

    # 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)

    if request.method == 'POST' and 'user-settings-submit' in request.POST:
        # Create a form populated with request data
        form = UserSettingsForm(request.POST)

        if form.is_valid():
            first_name = form.cleaned_data['first_name']
            last_name = form.cleaned_data['last_name']
            email = form.cleaned_data['email']

            # Update the User Model
            request_user.first_name = first_name
            request_user.last_name = last_name
            request_user.email = email

            # Save changes
            request_user.save()

            # Redirect
            return redirect('user:profile', username=username)
    else:
        # Create a form populated with data from the instance user
        form = UserSettingsForm(instance=request_user)

    # Create template context object
    user_token, token_created = Token.objects.get_or_create(user=request_user)
    codename = 'user_workspace_quota'
    rqh = WorkspaceQuotaHandler(request_user)
    current_use = _convert_storage_units(rqh.units, rqh.get_current_use())
    quota = get_quota(request_user, codename)
    quota = _check_quota_helper(quota)

    context = {
        'form': form,
        'context_user': request.user,
        'user_token': user_token.key,
        'current_use': current_use,
        'quota': quota,
    }

    return render(request, 'tethys_portal/user/settings.html', context)
コード例 #4
0
    def manage_app_storage(self, app):
        codename = 'tethysapp_workspace_quota'
        rqh = WorkspaceQuotaHandler(app)
        current_use = _convert_storage_units(rqh.units, rqh.get_current_use())
        quota = get_quota(app, codename)
        if quota['quota']:
            quota = _convert_storage_units(quota['units'], quota['quota'])
        else:
            quota = "∞"

        url = reverse('admin:clear_workspace', kwargs={'app_id': app.id})

        return format_html("""
        <span>{} of {}</span>
        <a id="clear-workspace" class="btn btn-danger btn-sm"
        href="{url}">
        Clear Workspace</a>
        """.format(current_use, quota, url=url))
コード例 #5
0
    def setUp(self):
        user = User.objects.create_user(username="******",
                                        email="*****@*****.**",
                                        password="******")

        self.resource_quota_handler = WorkspaceQuotaHandler(user)
        self.resource_quota_user = ResourceQuota(
            codename='test_user_codename',
            name='test_name',
            description='test_description',
            default=1.21,
            units='gb',
            applies_to='django.contrib.auth.models.User',
            impose_default=False,
            help='Exceeded quota',
            _handler='tethys_quotas.handlers.workspace.WorkspaceQuotaHandler')
        self.resource_quota_user.save()
        self.entity_quota_user = UserQuota(
            resource_quota=self.resource_quota_user,
            entity=user,
            value=100,
        )
        self.entity_quota_user.save()

        self.resource_quota_app = ResourceQuota(
            codename='test_app_codename',
            name='test_name',
            description='test_description',
            default=1.21,
            units='gb',
            applies_to='tethys_apps.models.TethysApp',
            impose_default=True,
            help='Exceeded quota',
            _handler='tethys_quotas.handlers.workspace.WorkspaceQuotaHandler')
        self.resource_quota_app.save()

        self.app_model = TethysApp(name='Test App')
        self.app_model.save()
        self.entity_quota_app = TethysAppQuota(
            resource_quota=self.resource_quota_app,
            entity=self.app_model,
            value=200,
        )
        self.entity_quota_app.save()
コード例 #6
0
ファイル: user.py プロジェクト: rileyhales/tethys
def profile(request, username=None):
    """
    Handle the profile view. Profiles could potentially be publicly accessible.
    """
    # The profile should display information about the user that is given in the url.
    # However, the template will hide certain information if the username is not the same
    # as the username of the user that is accessing the page.
    context_user = User.objects.get(username=username)
    user_token, token_created = Token.objects.get_or_create(user=context_user)
    codename = 'user_workspace_quota'
    rqh = WorkspaceQuotaHandler(context_user)
    current_use = _convert_storage_units(rqh.units, rqh.get_current_use())
    quota = get_quota(context_user, codename)
    quota = _check_quota_helper(quota)

    context = {
        'context_user': context_user,
        'user_token': user_token.key,
        'current_use': current_use,
        'quota': quota,
    }
    return render(request, 'tethys_portal/user/profile.html', context)
コード例 #7
0
    def test_rqh_check_eq_app_passes(self, _):
        resource_quota_handler = WorkspaceQuotaHandler(self.app_model)

        self.assertTrue(resource_quota_handler.check())
コード例 #8
0
 def test_rqh_check_rq_dne(self, _):
     bad_rqh = WorkspaceQuotaHandler("not.a.user")
     self.assertTrue(bad_rqh.check())
コード例 #9
0
class ResourceQuotaHandlerTest(TestCase):
    def setUp(self):
        user = User.objects.create_user(username="******",
                                        email="*****@*****.**",
                                        password="******")

        self.resource_quota_handler = WorkspaceQuotaHandler(user)
        self.resource_quota_user = ResourceQuota(
            codename='test_user_codename',
            name='test_name',
            description='test_description',
            default=1.21,
            units='gb',
            applies_to='django.contrib.auth.models.User',
            impose_default=False,
            help='Exceeded quota',
            _handler='tethys_quotas.handlers.workspace.WorkspaceQuotaHandler')
        self.resource_quota_user.save()
        self.entity_quota_user = UserQuota(
            resource_quota=self.resource_quota_user,
            entity=user,
            value=100,
        )
        self.entity_quota_user.save()

        self.resource_quota_app = ResourceQuota(
            codename='test_app_codename',
            name='test_name',
            description='test_description',
            default=1.21,
            units='gb',
            applies_to='tethys_apps.models.TethysApp',
            impose_default=True,
            help='Exceeded quota',
            _handler='tethys_quotas.handlers.workspace.WorkspaceQuotaHandler')
        self.resource_quota_app.save()

        self.app_model = TethysApp(name='Test App')
        self.app_model.save()
        self.entity_quota_app = TethysAppQuota(
            resource_quota=self.resource_quota_app,
            entity=self.app_model,
            value=200,
        )
        self.entity_quota_app.save()

    def tearDown(self):
        self.resource_quota_user.delete()
        self.entity_quota_user.delete()
        self.resource_quota_app.delete()
        self.entity_quota_app.delete()
        self.app_model.delete()

    @mock.patch('tethys_quotas.utilities.log')
    def test_rqh_check_rq_dne(self, _):
        bad_rqh = WorkspaceQuotaHandler("not.a.user")
        self.assertTrue(bad_rqh.check())

    @mock.patch('tethys_quotas.utilities.log')
    def test_rqh_check_eq_dne(self, _):
        with transaction.atomic():
            user = User.objects.create_user(username="******",
                                            email="*****@*****.**",
                                            password="******")
            resource_quota_handler = WorkspaceQuotaHandler(user)
            self.assertEquals("workspace_quota",
                              resource_quota_handler.codename)
            self.assertTrue(resource_quota_handler.check())

    @mock.patch('tethys_quotas.utilities.log')
    def test_rqh_check_eq_passes(self, _):
        self.assertTrue(self.resource_quota_handler.check())

    @mock.patch('tethys_quotas.utilities.log')
    def test_rqh_check_eq_app_passes(self, _):
        resource_quota_handler = WorkspaceQuotaHandler(self.app_model)

        self.assertTrue(resource_quota_handler.check())