Beispiel #1
0
def addmembers(request, chain_id, addmembers_form):
    if addmembers_form.is_valid():
        try:
            chain_id = int(chain_id)
            map(
                lambda u: enroll_member(chain_id, u, request_user=request.user
                                        ), addmembers_form.valid_users)
        except ProjectError as e:
            messages.error(request, e)
Beispiel #2
0
def addmembers(request, chain_id, addmembers_form):
    if addmembers_form.is_valid():
        try:
            chain_id = int(chain_id)
            map(lambda u: enroll_member(chain_id,
                                        u,
                                        request_user=request.user),
                addmembers_form.valid_users)
        except ProjectError as e:
            messages.error(request, e)
Beispiel #3
0
def addmembers(request, chain_id, addmembers_form):
    if addmembers_form.is_valid():
        try:
            chain_id = int(chain_id)
            map(lambda u: enroll_member(
                    chain_id,
                    u,
                    request_user=request.user),
                addmembers_form.valid_users)
        except (IOError, PermissionDenied), e:
            messages.error(request, e)
Beispiel #4
0
    def test_quota(self):
        """Test if quotas are displayed properly for a user."""
        def get_project_id(obj):
            """Sort by project id."""
            return obj['project'].uuid

        def assertQuotaEqual(quota1, quota2):
            """Custom assert function fro quota lists."""
            quota1 = sorted(quota1, key=get_project_id)
            quota2 = sorted(quota2, key=get_project_id)
            self.assertEqual(len(quota1), len(quota2))

            for q1, q2 in zip(quota1, quota2):
                p1 = q1['project']
                p2 = q2['project']
                r1 = q1['resources']
                r2 = q2['resources']
                self.assertEqual(p1.uuid, p2.uuid)
                self.assertItemsEqual(r1, r2)

        # Get the reported description of the resources.
        resource = Resource.objects.get(name=u"σέρβις1.ρίσορς11")
        desc11 = resource.report_desc
        resource = Resource.objects.get(name=u"σέρβις1.resource12")
        desc12 = resource.report_desc
        resource = Resource.objects.get(name=u"astakos.pending_app")
        desc13 = resource.report_desc

        # These should be the base quota of the user
        base_quota = [{'project': self.user.base_project,
                       'resources': [(desc11, '0', '100'),
                                     (desc13, '0', '3'),
                                     (desc12, '0 bytes', '1.00 kB')]
                       }]

        # Test 1 - Check if get_quotas works properly for base quotas
        quota = get_quotas(self.user)
        assertQuotaEqual(quota, base_quota)

        # Test 2 - Check if get_quotas works properly for projects too.
        #
        # Add member to a project
        with transaction.atomic():
            enroll_member(self.project.uuid, self.user)

        # These should be the additional quota from the project.
        new_quota = [{'project': self.project,
                      'resources': [(desc11, '0', '512')]
                      }]

        # Assert that get_quotas works as intented
        quota = get_quotas(self.user)
        assertQuotaEqual(new_quota + base_quota, quota)

        # Test 3 - Check if get_quotas shows zero values for removed member
        # from a project.
        #
        # Remove member from project
        membership = ProjectMembership.objects.get(project=self.project,
                                                   person=self.user)
        with transaction.atomic():
            remove_membership(membership.id)

        # These should be the new quota from the project. They are zero since
        # the user has not used any of the resources, but they are still
        # displayed as the project limit is > 0.
        new_quota = [{'project': self.project,
                      'resources': [(desc11, '0', '0')]
                      }]

        # Assert that get_quotas works as intented
        quota = get_quotas(self.user)
        assertQuotaEqual(new_quota + base_quota, quota)
Beispiel #5
0
    def test_quota(self):
        """Test if quotas are displayed properly for a user."""
        def get_project_id(obj):
            """Sort by project id."""
            return obj['project'].uuid

        def assertQuotaEqual(quota1, quota2):
            """Custom assert function fro quota lists."""
            quota1 = sorted(quota1, key=get_project_id)
            quota2 = sorted(quota2, key=get_project_id)
            self.assertEqual(len(quota1), len(quota2))

            for q1, q2 in zip(quota1, quota2):
                p1 = q1['project']
                p2 = q2['project']
                r1 = q1['resources']
                r2 = q2['resources']
                self.assertEqual(p1.uuid, p2.uuid)
                self.assertItemsEqual(r1, r2)

        # Get the reported description of the resources.
        resource = Resource.objects.get(name=u"σέρβις1.ρίσορς11")
        desc11 = resource.report_desc
        resource = Resource.objects.get(name=u"σέρβις1.resource12")
        desc12 = resource.report_desc
        resource = Resource.objects.get(name=u"astakos.pending_app")
        desc13 = resource.report_desc

        # These should be the base quota of the user
        base_quota = [{
            'project':
            self.user.base_project,
            'resources': [(desc11, '0', '100'), (desc13, '0', '3'),
                          (desc12, '0 bytes', '1.00 kB')]
        }]

        # Test 1 - Check if get_quotas works properly for base quotas
        quota = get_quotas(self.user)
        assertQuotaEqual(quota, base_quota)

        # Test 2 - Check if get_quotas works properly for projects too.
        #
        # Add member to a project
        with transaction.atomic():
            enroll_member(self.project.uuid, self.user)

        # These should be the additional quota from the project.
        new_quota = [{
            'project': self.project,
            'resources': [(desc11, '0', '512')]
        }]

        # Assert that get_quotas works as intented
        quota = get_quotas(self.user)
        assertQuotaEqual(new_quota + base_quota, quota)

        # Test 3 - Check if get_quotas shows zero values for removed member
        # from a project.
        #
        # Remove member from project
        membership = ProjectMembership.objects.get(project=self.project,
                                                   person=self.user)
        with transaction.atomic():
            remove_membership(membership.id)

        # These should be the new quota from the project. They are zero since
        # the user has not used any of the resources, but they are still
        # displayed as the project limit is > 0.
        new_quota = [{
            'project': self.project,
            'resources': [(desc11, '0', '0')]
        }]

        # Assert that get_quotas works as intented
        quota = get_quotas(self.user)
        assertQuotaEqual(new_quota + base_quota, quota)