Revision 5afce44d

b/docs/quota-api-guide.rst
90 90
  }
91 91

  
92 92
Get Quotas per Service
93
..........
93
......................
94 94

  
95 95
**GET** /astakos/api/service_quotas
96 96

  
......
100 100
X-Auth-Token          Service authentication token
101 101
====================  ============================
102 102

  
103
Optional GET parameter: ?user=<uuid>
104

  
103 105
**Normal Response Code**: 200
104 106

  
105 107
**Error Response Codes**:
b/snf-astakos-app/astakos/api/quotas.py
63 63
@api.api_method(http_method='GET', token_required=True, user_required=False)
64 64
@service_from_token
65 65
def service_quotas(request):
66
    result = get_service_quotas(request.service_instance)
66
    user = request.GET.get('user')
67
    users = [user] if user is not None else None
68
    result = get_service_quotas(request.service_instance, users=users)
67 69
    return json_response(result)
68 70

  
69 71

  
b/snf-astakos-app/astakos/im/quotas.py
68 68
    return quota
69 69

  
70 70

  
71
def get_counters(users,  resources=None, sources=None):
71
def get_counters(users, resources=None, sources=None):
72 72
    uuids = [user.uuid for user in users]
73 73

  
74
    counters = qh.get_holder_quota(holders=uuids,
75
                                   resources=resources,
76
                                   sources=sources)
74
    counters = qh.get_quota(holders=uuids,
75
                            resources=resources,
76
                            sources=sources)
77 77
    return counters
78 78

  
79 79

  
......
95 95
    return quotas[user.uuid]
96 96

  
97 97

  
98
def get_service_quotas(service):
98
def get_service_quotas(service, users=None):
99 99
    resources = Resource.objects.filter(service=service.name)
100 100
    resource_names = [r.name for r in resources]
101
    counters = qh.get_resource_quota(resource_names)
101
    counters = qh.get_quota(holders=users, resources=resource_names)
102 102
    return transform_data(counters)
103 103

  
104 104

  
b/snf-astakos-app/astakos/quotaholder/callpoint.py
52 52

  
53 53
class QuotaholderDjangoDBCallpoint(object):
54 54

  
55
    def get_holder_quota(self, holders=None, sources=None, resources=None):
56
        holdings = Holding.objects.filter(holder__in=holders)
55
    def get_quota(self, holders=None, sources=None, resources=None):
56
        holdings = Holding.objects.all()
57

  
58
        if holders is not None:
59
            holdings = holdings.filter(holder__in=holders)
57 60

  
58 61
        if sources is not None:
59 62
            holdings = holdings.filter(source__in=sources)
......
69 72

  
70 73
        return quotas
71 74

  
72
    def get_resource_quota(self, resources, sources=None):
73
        holdings = Holding.objects.filter(resource__in=resources)
74

  
75
        if sources is not None:
76
            holdings = holdings.filter(source__in=sources)
77

  
78
        quotas = {}
79
        for holding in holdings:
80
            key = (holding.holder, holding.source, holding.resource)
81
            value = (holding.limit, holding.imported_min, holding.imported_max)
82
            quotas[key] = value
83

  
84
        return quotas
85

  
86 75
    def _get_holdings_for_update(self, holding_keys):
87 76
        holding_keys = sorted(holding_keys)
88 77
        holdings = {}

Also available in: Unified diff