Revision 883c1f94 snf-cyclades-app/synnefo/api/networks.py
b/snf-cyclades-app/synnefo/api/networks.py | ||
---|---|---|
87 | 87 |
|
88 | 88 |
user_networks = Network.objects.filter(Q(userid=request.user_uniq) | |
89 | 89 |
Q(public=True))\ |
90 |
.prefetch_related("subnets") |
|
90 |
.order_by('id') |
|
91 |
if detail: |
|
92 |
user_networks = user_networks.prefetch_related("subnets") |
|
91 | 93 |
|
92 | 94 |
user_networks = api.utils.filter_modified_since(request, |
93 | 95 |
objects=user_networks) |
94 | 96 |
|
95 | 97 |
network_dicts = [network_to_dict(network, detail) |
96 |
for network in user_networks.order_by('id')]
|
|
98 |
for network in user_networks] |
|
97 | 99 |
|
98 | 100 |
if request.serialization == 'xml': |
99 | 101 |
data = render_to_string('list_networks.xml', { |
... | ... | |
167 | 169 |
d = {'id': str(network.id), 'name': network.name} |
168 | 170 |
d['links'] = util.network_to_links(network.id) |
169 | 171 |
if detail: |
172 |
# Loop over subnets. Do not perform any extra query because of prefetch |
|
173 |
# related! |
|
174 |
subnet_ids = [] |
|
175 |
for subnet in network.subnets.all(): |
|
176 |
subnet_ids.append(network.id) |
|
177 |
|
|
170 | 178 |
state = "SNF:DRAINED" if network.drained else network.state |
171 | 179 |
d['user_id'] = network.userid |
172 | 180 |
d['tenant_id'] = network.userid |
... | ... | |
177 | 185 |
d['public'] = network.public |
178 | 186 |
d['router:external'] = network.external_router |
179 | 187 |
d['admin_state_up'] = True |
180 |
d['subnets'] = list(network.subnets.values_list('id', flat=True))
|
|
188 |
d['subnets'] = subnet_ids
|
|
181 | 189 |
d['SNF:floating_ip_pool'] = network.floating_ip_pool |
182 | 190 |
return d |
183 | 191 |
|
Also available in: Unified diff