Revision 3848b521

b/snf-astakos-app/astakos/im/management/commands/quota.py
113 113
        if user_ident is not None:
114 114
            users = [self.get_user(user_ident)]
115 115
        else:
116
            users = AstakosUser.objects.moderated()
116
            users = AstakosUser.objects.accepted()
117 117

  
118 118
        if list_only:
119 119
            qh_quotas, astakos_i = list_user_quotas(users)
......
150 150
        else:
151 151
            raise CommandError('Please specify user by uuid or email')
152 152

  
153
        if not user.moderated:
154
            raise CommandError('%s is not an accepted user.\n' % user.uuid)
153
        if not user.is_accepted():
154
            raise CommandError('%s is not an accepted user.' % user.uuid)
155 155

  
156 156
        return user
157 157

  
b/snf-astakos-app/astakos/im/management/commands/reconcile-resources-astakos.py
82 82
        qh_holdings = service_get_quotas(astakos, query)
83 83

  
84 84
        if userid is None:
85
            users = AstakosUser.objects.moderated()
85
            users = AstakosUser.objects.accepted()
86 86
        else:
87 87
            try:
88
                users = [AstakosUser.objects.get(uuid=userid)]
88
                user = AstakosUser.objects.get(uuid=userid)
89 89
            except AstakosUser.DoesNotExist:
90 90
                raise CommandError("There is no user with uuid '%s'." % userid)
91
            if not user.is_accepted():
92
                raise CommandError("%s is not an accepted user." % userid)
93
            users = [user]
91 94

  
92 95
        db_holdings = count_pending_app(users)
93 96

  
b/snf-astakos-app/astakos/im/models.py
315 315
    def verified(self):
316 316
        return self.filter(email_verified=True)
317 317

  
318
    def moderated(self):
319
        return self.filter(moderated=True)
318
    def accepted(self):
319
        return self.filter(moderated=True, is_rejected=False)
320 320

  
321 321
    def uuid_catalog(self, l=None):
322 322
        """
......
482 482
        group, _ = Group.objects.get_or_create(name=gname)
483 483
        self.groups.add(group)
484 484

  
485
    def is_accepted(self):
486
        return self.moderated and not self.is_rejected
487

  
485 488
    def is_project_admin(self, application_id=None):
486 489
        return self.uuid in astakos_settings.PROJECT_ADMINS
487 490

  
b/snf-astakos-app/astakos/im/quotas.py
316 316

  
317 317

  
318 318
def qh_add_resource_limit(resource, diff):
319
    objs = AstakosUser.forupdate.filter(Q(moderated=True) &
320
                                        ~Q(policy=resource))
319
    objs = AstakosUser.forupdate.filter(
320
        Q(moderated=True, is_rejected=False) & ~Q(policy=resource))
321 321
    users = objs.order_by('id').select_for_update()
322 322
    uuids = [u.uuid for u in users]
323 323
    qh.add_resource_limit(holders=uuids, sources=[SYSTEM],
......
326 326

  
327 327
def qh_sync_new_resource(resource, limit):
328 328
    users = AstakosUser.forupdate.filter(
329
        moderated=True).order_by('id').select_for_update()
329
        moderated=True, is_rejected=False).order_by('id').select_for_update()
330 330

  
331 331
    resource_name = resource.name
332 332
    data = []
b/snf-astakos-app/astakos/im/tests/api.py
74 74
        # create user
75 75
        user = get_local_user('test@grnet.gr')
76 76
        backend.accept_user(user)
77
        non_moderated_user = get_local_user('nonmon@example.com')
77
        non_moderated_user = get_local_user('nonmon@example.com',
78
                                            is_active=False)
79
        r_user = get_local_user('rej@example.com',
80
                                is_active=False, email_verified=True)
81
        backend.reject_user(r_user, "reason")
78 82

  
79 83
        component2 = Component.objects.create(name="comp2")
80 84
        register.add_service(component2, "service2", "type2", [])
......
112 116

  
113 117
        nmheaders = {'HTTP_X_AUTH_TOKEN': non_moderated_user.auth_token}
114 118
        r = client.get(u('quotas/'), **nmheaders)
115
        self.assertEqual(r.status_code, 200)
116
        body = json.loads(r.content)
117
        self.assertEqual(body, {})
119
        self.assertEqual(r.status_code, 401)
120

  
121
        q = quotas.get_user_quotas(non_moderated_user)
122
        self.assertEqual(q, {})
123

  
124
        q = quotas.get_user_quotas(r_user)
125
        self.assertEqual(q, {})
118 126

  
119 127
        r = client.get(u('service_quotas'))
120 128
        self.assertEqual(r.status_code, 401)

Also available in: Unified diff