Revision b6bc4afa
b/snf-cyclades-app/synnefo/api/floating_ips.py | ||
---|---|---|
92 | 92 |
log.debug("list_floating_ips") |
93 | 93 |
|
94 | 94 |
userid = request.user_uniq |
95 |
floating_ips = FloatingIP.objects.filter(userid=userid, deleted=False)\
|
|
96 |
.order_by("id")
|
|
95 |
floating_ips = FloatingIP.objects.filter(userid=userid).order_by("id")
|
|
96 |
floating_ips = utils.filter_modified_since(request, objects=floating_ips)
|
|
97 | 97 |
|
98 | 98 |
floating_ips = map(ip_to_dict, floating_ips) |
99 | 99 |
|
... | ... | |
231 | 231 |
@api.api_method(http_method='GET', user_required=True, logger=log, |
232 | 232 |
serializations=["json"]) |
233 | 233 |
def list_floating_ip_pools(request): |
234 |
networks = Network.objects.filter(public=True, deleted=False,
|
|
235 |
floating_ip_pool=True)
|
|
234 |
networks = Network.objects.filter(public=True, floating_ip_pool=True)
|
|
235 |
networks = utils.filter_modified_since(request, objects=networks)
|
|
236 | 236 |
pools = [{"name": str(net.id)} for net in networks] |
237 | 237 |
request.serialization = "json" |
238 | 238 |
data = json.dumps({"floating_ip_pools": pools}) |
b/snf-cyclades-app/synnefo/api/networks.py | ||
---|---|---|
120 | 120 |
# overLimit (413) |
121 | 121 |
|
122 | 122 |
log.debug('list_networks detail=%s', detail) |
123 |
since = utils.isoparse(request.GET.get('changes-since')) |
|
124 | 123 |
user_networks = Network.objects.filter(Q(userid=request.user_uniq) | |
125 | 124 |
Q(public=True)) |
126 |
|
|
127 |
if since: |
|
128 |
user_networks = user_networks.filter(updated__gte=since) |
|
129 |
if not user_networks: |
|
130 |
return HttpResponse(status=304) |
|
131 |
else: |
|
132 |
user_networks = user_networks.filter(deleted=False) |
|
125 |
user_networks = utils.filter_modified_since(request, objects=user_networks) |
|
133 | 126 |
|
134 | 127 |
networks_dict = [network_to_dict(network, request.user_uniq, detail) |
135 | 128 |
for network in user_networks.order_by('id')] |
b/snf-cyclades-app/synnefo/api/servers.py | ||
---|---|---|
242 | 242 |
log.debug('list_servers detail=%s', detail) |
243 | 243 |
user_vms = VirtualMachine.objects.filter(userid=request.user_uniq) |
244 | 244 |
|
245 |
since = utils.isoparse(request.GET.get('changes-since')) |
|
246 |
|
|
247 |
if since: |
|
248 |
user_vms = user_vms.filter(updated__gte=since) |
|
249 |
if not user_vms: |
|
250 |
return HttpResponse(status=304) |
|
251 |
else: |
|
252 |
user_vms = user_vms.filter(deleted=False) |
|
245 |
user_vms = utils.filter_modified_since(request, objects=user_vms) |
|
253 | 246 |
|
254 | 247 |
servers_dict = [vm_to_dict(server, detail) |
255 | 248 |
for server in user_vms.order_by('id')] |
b/snf-django-lib/snf_django/lib/api/utils.py | ||
---|---|---|
34 | 34 |
import datetime |
35 | 35 |
from dateutil.parser import parse as date_parse |
36 | 36 |
from django.utils import simplejson as json |
37 |
from django.http import HttpResponse |
|
37 | 38 |
|
38 | 39 |
from django.conf import settings |
39 | 40 |
from snf_django.lib.api import faults |
... | ... | |
115 | 116 |
prefix += '/' |
116 | 117 |
pattern = '^' + prefix |
117 | 118 |
return pattern |
119 |
|
|
120 |
|
|
121 |
def filter_modified_since(request, objects): |
|
122 |
"""Filter DB objects based on 'changes-since' request parameter. |
|
123 |
|
|
124 |
Parse request for 'changes-since' parameter and get only the DB objects |
|
125 |
that have been updated after that time. Otherwise, return the non-deleted |
|
126 |
objects. |
|
127 |
|
|
128 |
""" |
|
129 |
since = isoparse(request.GET.get("changes-since")) |
|
130 |
if since: |
|
131 |
modified_objs = objects.filter(updated__gte=since) |
|
132 |
if not modified_objs: |
|
133 |
return HttpResponse(status=304) |
|
134 |
return modified_objs |
|
135 |
else: |
|
136 |
return objects.filter(deleted=False) |
Also available in: Unified diff