Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / plankton / urls.py @ 9ca32eaa

History | View | Annotate | Download (3.4 kB)

1 c34de90f Giorgos Verigakis
# Copyright 2011 GRNET S.A. All rights reserved.
2 c34de90f Giorgos Verigakis
#
3 c34de90f Giorgos Verigakis
# Redistribution and use in source and binary forms, with or
4 c34de90f Giorgos Verigakis
# without modification, are permitted provided that the following
5 c34de90f Giorgos Verigakis
# conditions are met:
6 c34de90f Giorgos Verigakis
#
7 c34de90f Giorgos Verigakis
#   1. Redistributions of source code must retain the above
8 c34de90f Giorgos Verigakis
#      copyright notice, this list of conditions and the following
9 c34de90f Giorgos Verigakis
#      disclaimer.
10 c34de90f Giorgos Verigakis
#
11 c34de90f Giorgos Verigakis
#   2. Redistributions in binary form must reproduce the above
12 c34de90f Giorgos Verigakis
#      copyright notice, this list of conditions and the following
13 c34de90f Giorgos Verigakis
#      disclaimer in the documentation and/or other materials
14 c34de90f Giorgos Verigakis
#      provided with the distribution.
15 c34de90f Giorgos Verigakis
#
16 c34de90f Giorgos Verigakis
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 c34de90f Giorgos Verigakis
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 c34de90f Giorgos Verigakis
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 c34de90f Giorgos Verigakis
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 c34de90f Giorgos Verigakis
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 c34de90f Giorgos Verigakis
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 c34de90f Giorgos Verigakis
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 c34de90f Giorgos Verigakis
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 c34de90f Giorgos Verigakis
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 c34de90f Giorgos Verigakis
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 c34de90f Giorgos Verigakis
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 c34de90f Giorgos Verigakis
# POSSIBILITY OF SUCH DAMAGE.
28 c34de90f Giorgos Verigakis
#
29 c34de90f Giorgos Verigakis
# The views and conclusions contained in the software and
30 c34de90f Giorgos Verigakis
# documentation are those of the authors and should not be
31 c34de90f Giorgos Verigakis
# interpreted as representing official policies, either expressed
32 c34de90f Giorgos Verigakis
# or implied, of GRNET S.A.
33 c34de90f Giorgos Verigakis
34 69edece7 Georgios D. Tsoukalas
from django.conf.urls.defaults import patterns, include
35 15137c54 Giorgos Verigakis
from django.http import HttpResponseNotAllowed
36 269ac8de Christos Stavrakakis
from snf_django.lib.api import api_endpoint_not_found
37 c34de90f Giorgos Verigakis
38 15137c54 Giorgos Verigakis
from synnefo.plankton import views
39 15137c54 Giorgos Verigakis
40 15137c54 Giorgos Verigakis
41 15137c54 Giorgos Verigakis
def demux(request):
42 15137c54 Giorgos Verigakis
    if request.method == 'GET':
43 b2f94a0c Christos Stavrakakis
        return views.list_images(request)
44 15137c54 Giorgos Verigakis
    elif request.method == 'POST':
45 15137c54 Giorgos Verigakis
        return views.add_image(request)
46 15137c54 Giorgos Verigakis
    else:
47 15137c54 Giorgos Verigakis
        return HttpResponseNotAllowed(['GET', 'POST'])
48 15137c54 Giorgos Verigakis
49 aed77afe Christos Stavrakakis
50 15137c54 Giorgos Verigakis
def demux_image(request, image_id):
51 f13aab5d Christos Stavrakakis
    if request.method == "GET":
52 15137c54 Giorgos Verigakis
        return views.get_image(request, image_id)
53 f13aab5d Christos Stavrakakis
    elif request.method == "HEAD":
54 15137c54 Giorgos Verigakis
        return views.get_image_meta(request, image_id)
55 f13aab5d Christos Stavrakakis
    elif request.method == "PUT":
56 15137c54 Giorgos Verigakis
        return views.update_image(request, image_id)
57 f13aab5d Christos Stavrakakis
    elif request.method == "DELETE":
58 f13aab5d Christos Stavrakakis
        return views.delete_image(request, image_id)
59 15137c54 Giorgos Verigakis
    else:
60 f13aab5d Christos Stavrakakis
        return HttpResponseNotAllowed(["GET", "HEAD", "PUT", "DELETE"])
61 15137c54 Giorgos Verigakis
62 aed77afe Christos Stavrakakis
63 15137c54 Giorgos Verigakis
def demux_image_members(request, image_id):
64 15137c54 Giorgos Verigakis
    if request.method == 'GET':
65 15137c54 Giorgos Verigakis
        return views.list_image_members(request, image_id)
66 15137c54 Giorgos Verigakis
    elif request.method == 'PUT':
67 15137c54 Giorgos Verigakis
        return views.update_image_members(request, image_id)
68 15137c54 Giorgos Verigakis
    else:
69 15137c54 Giorgos Verigakis
        return HttpResponseNotAllowed(['GET', 'PUT'])
70 15137c54 Giorgos Verigakis
71 aed77afe Christos Stavrakakis
72 15137c54 Giorgos Verigakis
def demux_members(request, image_id, member):
73 15137c54 Giorgos Verigakis
    if request.method == 'DELETE':
74 15137c54 Giorgos Verigakis
        return views.remove_image_member(request, image_id, member)
75 15137c54 Giorgos Verigakis
    elif request.method == 'PUT':
76 15137c54 Giorgos Verigakis
        return views.add_image_member(request, image_id, member)
77 15137c54 Giorgos Verigakis
    else:
78 15137c54 Giorgos Verigakis
        return HttpResponseNotAllowed(['DELETE', 'PUT'])
79 15137c54 Giorgos Verigakis
80 15137c54 Giorgos Verigakis
81 69edece7 Georgios D. Tsoukalas
image_v1_patterns = patterns(
82 cc92b70f Christos Stavrakakis
    '',
83 15137c54 Giorgos Verigakis
    (r'^images/$', demux),
84 b2f94a0c Christos Stavrakakis
    (r'^images/detail$', views.list_images, {'detail': True}),
85 15137c54 Giorgos Verigakis
    (r'^images/([\w-]+)$', demux_image),
86 15137c54 Giorgos Verigakis
    (r'^images/([\w-]+)/members$', demux_image_members),
87 aed77afe Christos Stavrakakis
    (r'^images/([\w-]+)/members/([\w@._-]+)$', demux_members),
88 69edece7 Georgios D. Tsoukalas
    (r'^shared-images/([\w@._-]+)$', views.list_shared_images),
89 69edece7 Georgios D. Tsoukalas
)
90 69edece7 Georgios D. Tsoukalas
91 69edece7 Georgios D. Tsoukalas
urlpatterns = patterns(
92 69edece7 Georgios D. Tsoukalas
    '',
93 bb516951 Kostas Papadimitriou
    (r'^v1.0/', include(image_v1_patterns)),
94 269ac8de Christos Stavrakakis
    (r'^.*', api_endpoint_not_found),
95 c34de90f Giorgos Verigakis
)