Revision 6c997921 snf-astakos-app/astakos/im/models.py

b/snf-astakos-app/astakos/im/models.py
136 136
        for s in resources:
137 137
            self.resource_set.create(**s)
138 138

  
139
    def add_resource(self, service, resource, uplimit, update=True):
140
        """Raises ObjectDoesNotExist, IntegrityError"""
141
        resource = Resource.objects.get(service__name=service, name=resource)
142
        if update:
143
            AstakosUserQuota.objects.update_or_create(user=self,
144
                                                      resource=resource,
145
                                                      defaults={'uplimit': uplimit})
146
        else:
147
            q = self.astakosuserquota_set
148
            q.create(resource=resource, uplimit=uplimit)
149

  
150 139

  
151 140
class ResourceMetadata(models.Model):
152 141
    key = models.CharField(_('Name'), max_length=255, unique=True, db_index=True)
......
344 333
        default_quota = get_default_quota()
345 334
        d.update(default_quota)
346 335
        for q in self.policies:
347
            d[q.resource] += q.uplimit or inf
336
            d[q.resource] = q.capacity or inf
348 337
        for m in self.projectmembership_set.select_related().all():
349 338
            if not m.acceptance_date:
350 339
                continue
......
363 352
    @policies.setter
364 353
    def policies(self, policies):
365 354
        for p in policies:
366
            service = policies.get('service', None)
367
            resource = policies.get('resource', None)
368
            uplimit = policies.get('uplimit', 0)
369
            update = policies.get('update', True)
370
            self.add_policy(service, resource, uplimit, update)
371

  
372
    def add_policy(self, service, resource, uplimit, update=True):
355
            p.setdefault('resource', '')
356
            p.setdefault('capacity', 0)
357
            p.setdefault('quantity', 0)
358
            p.setdefault('import_limit', 0)
359
            p.setdefault('export_limit', 0)
360
            p.setdefault('update', True)
361
            self.add_resource_policy(**p)
362

  
363
    def add_resource_policy(
364
            self, resource, capacity, quantity, import_limit,
365
            export_limit, update=True):
373 366
        """Raises ObjectDoesNotExist, IntegrityError"""
374
        resource = Resource.objects.get(service__name=service, name=resource)
367
        s, sep, r = resource.partition(RESOURCE_SEPARATOR)
368
        resource = Resource.objects.get(service__name=s, name=r)
375 369
        if update:
376
            AstakosUserQuota.objects.update_or_create(user=self,
377
                                                      resource=resource,
378
                                                      defaults={'uplimit': uplimit})
370
            AstakosUserQuota.objects.update_or_create(
371
                user=self, resource=resource, defaults={
372
                    'capacity':capacity,
373
                    'quantity': quantity,
374
                    'import_limit':import_limit,
375
                    'export_limit':export_limit})
379 376
        else:
380 377
            q = self.astakosuserquota_set
381
            q.create(resource=resource, uplimit=uplimit)
378
            q.create(
379
                resource=resource, capacity=capacity, quanity=quantity,
380
                import_limit=import_limit, export_limit=export_limit)
382 381

  
383
    def remove_policy(self, service, resource):
382
    def remove_resource_policy(self, service, resource):
384 383
        """Raises ObjectDoesNotExist, IntegrityError"""
385 384
        resource = Resource.objects.get(service__name=service, name=resource)
386 385
        q = self.policies.get(resource=resource).delete()
......
394 393
                self.uuid = uuid_val
395 394
        return self.uuid
396 395

  
397
    @property
398
    def extended_groups(self):
399
        return self.membership_set.select_related().all()
400

  
401 396
    def save(self, update_timestamps=True, **kwargs):
402 397
        if update_timestamps:
403 398
            if not self.id:
......
801 796

  
802 797
class AstakosUserQuota(models.Model):
803 798
    objects = ExtendedManager()
804
    limit = models.PositiveIntegerField(_('Limit'), null=True)    # obsolete field
805
    uplimit = models.BigIntegerField(_('Up limit'), null=True)
799
    capacity = models.BigIntegerField(_('Capacity'), null=True)
800
    quantity = models.BigIntegerField(_('Quantity'), null=True)
801
    export_limit = models.BigIntegerField(_('Export limit'), null=True)
802
    import_limit = models.BigIntegerField(_('Import limit'), null=True)
806 803
    resource = models.ForeignKey(Resource)
807 804
    user = models.ForeignKey(AstakosUser)
808 805

  

Also available in: Unified diff