Revision 26551b92 snf-astakos-app/astakos/im/models.py

b/snf-astakos-app/astakos/im/models.py
98 98
    _content_type = content_type
99 99
    return content_type
100 100

  
101
RESOURCE_SEPARATOR = '.'
102

  
103 101
inf = float('inf')
104 102

  
105 103
class Service(models.Model):
......
132 130
    def __str__(self):
133 131
        return self.name
134 132

  
135
    @property
136
    def resources(self):
137
        return self.resource_set.all()
138

  
139
    @resources.setter
140
    def resources(self, resources):
141
        for s in resources:
142
            self.resource_set.create(**s)
143

  
144 133

  
145 134
_presentation_data = {}
146 135
def get_presentation(resource):
......
154 143

  
155 144
class Resource(models.Model):
156 145
    name = models.CharField(_('Name'), max_length=255, unique=True)
157
    service = models.ForeignKey(Service)
158 146
    desc = models.TextField(_('Description'), null=True)
159
    unit = models.CharField(_('Name'), null=True, max_length=255)
160
    group = models.CharField(_('Group'), null=True, max_length=255)
147
    service = models.CharField(_('Service identifier'), max_length=255,
148
                               null=True)
149
    unit = models.CharField(_('Unit'), null=True, max_length=255)
161 150
    uplimit = intDecimalField(default=0)
162 151

  
163 152
    objects = ForUpdateManager()
......
175 164
                }
176 165

  
177 166
    @property
167
    def group(self):
168
        default = self.name
169
        return get_presentation(str(self)).get('group', default)
170

  
171
    @property
178 172
    def help_text(self):
179
        return get_presentation(str(self)).get('help_text', '')
173
        default = "%s resource" % self.name
174
        return get_presentation(str(self)).get('help_text', default)
180 175

  
181 176
    @property
182 177
    def help_text_input_each(self):
183
        return get_presentation(str(self)).get('help_text_input_each', '')
178
        default = "%s resource" % self.name
179
        return get_presentation(str(self)).get('help_text_input_each', default)
184 180

  
185 181
    @property
186 182
    def is_abbreviation(self):
......
188 184

  
189 185
    @property
190 186
    def report_desc(self):
191
        return get_presentation(str(self)).get('report_desc', '')
187
        default = "%s resource" % self.name
188
        return get_presentation(str(self)).get('report_desc', default)
192 189

  
193 190
    @property
194 191
    def placeholder(self):
195
        return get_presentation(str(self)).get('placeholder', '')
192
        return get_presentation(str(self)).get('placeholder', self.unit)
196 193

  
197 194
    @property
198 195
    def verbose_name(self):
199
        return get_presentation(str(self)).get('verbose_name', '')
196
        return get_presentation(str(self)).get('verbose_name', self.name)
200 197

  
201 198
    @property
202 199
    def display_name(self):
......
408 405
            self, resource, capacity,
409 406
            update=True):
410 407
        """Raises ObjectDoesNotExist, IntegrityError"""
411
        s, sep, r = resource.partition(RESOURCE_SEPARATOR)
412
        resource = Resource.objects.get(service__name=s, name=r)
408
        resource = Resource.objects.get(name=resource)
413 409
        if update:
414 410
            AstakosUserQuota.objects.update_or_create(
415 411
                user=self, resource=resource, defaults={
......
422 418
                )
423 419

  
424 420
    def get_resource_policy(self, resource):
425
        s, sep, r = resource.partition(RESOURCE_SEPARATOR)
426
        resource = Resource.objects.get(service__name=s, name=r)
421
        resource = Resource.objects.get(name=resource)
427 422
        default_capacity = resource.uplimit
428 423
        try:
429 424
            policy = AstakosUserQuota.objects.get(user=self, resource=resource)
......
433 428

  
434 429
    def remove_resource_policy(self, service, resource):
435 430
        """Raises ObjectDoesNotExist, IntegrityError"""
436
        resource = Resource.objects.get(service__name=service, name=resource)
431
        resource = Resource.objects.get(name=resource)
437 432
        q = self.policies.get(resource=resource).delete()
438 433

  
439 434
    def update_uuid(self):
......
1445 1440
    def add_resource_policy(self, service, resource, uplimit):
1446 1441
        """Raises ObjectDoesNotExist, IntegrityError"""
1447 1442
        q = self.projectresourcegrant_set
1448
        resource = Resource.objects.get(service__name=service, name=resource)
1443
        resource = Resource.objects.get(name=resource)
1449 1444
        q.create(resource=resource, member_capacity=uplimit)
1450 1445

  
1451 1446
    def members_count(self):
......
1453 1448

  
1454 1449
    @property
1455 1450
    def grants(self):
1456
        return self.projectresourcegrant_set.values(
1457
            'member_capacity', 'resource__name', 'resource__service__name')
1451
        return self.projectresourcegrant_set.values('member_capacity',
1452
                                                    'resource__name')
1458 1453

  
1459 1454
    @property
1460 1455
    def resource_policies(self):

Also available in: Unified diff