Revision 6556e514 snf-astakos-app/astakos/im/templatetags/filters.py

b/snf-astakos-app/astakos/im/templatetags/filters.py
85 85

  
86 86
@register.filter
87 87
def lookup(d, key):
88
    return d.get(key)
88
    try:
89
        return d.get(key)
90
    except:
91
        return
89 92

  
90 93
@register.filter
91 94
def lookup_uni(d, key):
......
231 234
        return dict((RESOURCE_SEPARATOR.join([e[1], e[0]]), e[2]) for e in grants)
232 235
    except:
233 236
        return {}
234

  
235
class ResourcePresentation():
236

  
237
    def __init__(self, data):
238
        self.data = data
239

  
240
    def populate_resource_data(self, resource_data):
241
        for r in resource_data:
242
            rname = '%s%s%s' % (r.get('service'), RESOURCE_SEPARATOR, r.get('name'))
243
            if not rname in self.data['resources']:
244
                self.data['resources'][rname] = {}
245

  
246
            self.data['resources'][rname].update(r)
247
            self.data['resources'][rname]['id'] = rname
248
            group = r.get('group')
249
            if not group in self.data['groups']:
250
                self.data['groups'][group] = {}
251

  
252
            self.data['groups'][r.get('group')].update({'name': r.get('group')})
253

  
254
    def test(self, quota_dict):
255
        for k, v in quota_dict.iteritems():
256
            rname = k
257
            value = v
258
            if not rname in self.data['resources']:
259
                self.data['resources'][rname] = {}
260

  
261

  
262
            self.data['resources'][rname]['value'] = value
263

  
264

  
265
    def populate_report_data(self, report_data):
266
        for r in report_data:
267
            rname = r.get('name')
268
            if not rname in self.data['resources']:
269
                self.data['resources'][rname] = {}
270

  
271
            self.data['resources'][rname].update(r)
272
            self.data['resources'][rname]['id'] = rname
273
            group = r.get('group')
274
            if not group in self.data['groups']:
275
                self.data['groups'][group] = {}
276

  
277
            self.data['groups'][r.get('group')].update({'name': r.get('group')})
278

  
279
    def get_group_resources(self, group):
280
        return dict(filter(lambda t: t[1].get('group') == group, self.data['resources'].iteritems()))
281

  
282
    def get_groups_resources(self):
283
        for g in self.data['groups']:
284
            yield g, self.get_group_resources(g)
285

  
286
    def get_quota(self, group_quotas):
287
        for r, v in group_quotas:
288
            rname = str(r)
289
            quota = self.data['resources'].get(rname)
290
            quota['value'] = v
291
            yield quota
292

  
293

  
294
    def get_policies(self, policies_data):
295
        for policy in policies_data:
296
            rname = '%s%s%s' % (policy.get('service'), RESOURCE_SEPARATOR, policy.get('resource'))
297
            policy.update(self.data['resources'].get(rname))
298
            yield policy
299

  
300
    def __repr__(self):
301
        return self.data.__repr__()
302

  
303
    def __iter__(self, *args, **kwargs):
304
        return self.data.__iter__(*args, **kwargs)
305

  
306
    def __getitem__(self, *args, **kwargs):
307
        return self.data.__getitem__(*args, **kwargs)
308

  
309
    def get(self, *args, **kwargs):
310
        return self.data.get(*args, **kwargs)
311
resource_presentation = ResourcePresentation(RESOURCES_PRESENTATION_DATA)
312

  
313

  
314
@register.filter
315
def populated_resource_catalog(resource_catalog):
316
    resource_presentation.populate_resource_data(resource_catalog)
317
    return resource_presentation

Also available in: Unified diff