Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / plankton / urls.py @ 2eda9c61

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 6b256427 Christos Stavrakakis
from django.conf.urls import patterns, include
35 a6b17d33 Christos Stavrakakis
36 15137c54 Giorgos Verigakis
from django.http import HttpResponseNotAllowed
37 269ac8de Christos Stavrakakis
from snf_django.lib.api import api_endpoint_not_found
38 c34de90f Giorgos Verigakis
39 15137c54 Giorgos Verigakis
from synnefo.plankton import views
40 15137c54 Giorgos Verigakis
41 15137c54 Giorgos Verigakis
42 15137c54 Giorgos Verigakis
def demux(request):
43 15137c54 Giorgos Verigakis
    if request.method == 'GET':
44 b2f94a0c Christos Stavrakakis
        return views.list_images(request)
45 15137c54 Giorgos Verigakis
    elif request.method == 'POST':
46 15137c54 Giorgos Verigakis
        return views.add_image(request)
47 15137c54 Giorgos Verigakis
    else:
48 15137c54 Giorgos Verigakis
        return HttpResponseNotAllowed(['GET', 'POST'])
49 15137c54 Giorgos Verigakis
50 aed77afe Christos Stavrakakis
51 15137c54 Giorgos Verigakis
def demux_image(request, image_id):
52 f13aab5d Christos Stavrakakis
    if request.method == "GET":
53 15137c54 Giorgos Verigakis
        return views.get_image(request, image_id)
54 f13aab5d Christos Stavrakakis
    elif request.method == "HEAD":
55 15137c54 Giorgos Verigakis
        return views.get_image_meta(request, image_id)
56 f13aab5d Christos Stavrakakis
    elif request.method == "PUT":
57 15137c54 Giorgos Verigakis
        return views.update_image(request, image_id)
58 f13aab5d Christos Stavrakakis
    elif request.method == "DELETE":
59 f13aab5d Christos Stavrakakis
        return views.delete_image(request, image_id)
60 15137c54 Giorgos Verigakis
    else:
61 f13aab5d Christos Stavrakakis
        return HttpResponseNotAllowed(["GET", "HEAD", "PUT", "DELETE"])
62 15137c54 Giorgos Verigakis
63 aed77afe Christos Stavrakakis
64 15137c54 Giorgos Verigakis
def demux_image_members(request, image_id):
65 15137c54 Giorgos Verigakis
    if request.method == 'GET':
66 15137c54 Giorgos Verigakis
        return views.list_image_members(request, image_id)
67 15137c54 Giorgos Verigakis
    elif request.method == 'PUT':
68 15137c54 Giorgos Verigakis
        return views.update_image_members(request, image_id)
69 15137c54 Giorgos Verigakis
    else:
70 15137c54 Giorgos Verigakis
        return HttpResponseNotAllowed(['GET', 'PUT'])
71 15137c54 Giorgos Verigakis
72 aed77afe Christos Stavrakakis
73 15137c54 Giorgos Verigakis
def demux_members(request, image_id, member):
74 15137c54 Giorgos Verigakis
    if request.method == 'DELETE':
75 15137c54 Giorgos Verigakis
        return views.remove_image_member(request, image_id, member)
76 15137c54 Giorgos Verigakis
    elif request.method == 'PUT':
77 15137c54 Giorgos Verigakis
        return views.add_image_member(request, image_id, member)
78 15137c54 Giorgos Verigakis
    else:
79 15137c54 Giorgos Verigakis
        return HttpResponseNotAllowed(['DELETE', 'PUT'])
80 15137c54 Giorgos Verigakis
81 15137c54 Giorgos Verigakis
82 69edece7 Georgios D. Tsoukalas
image_v1_patterns = patterns(
83 cc92b70f Christos Stavrakakis
    '',
84 15137c54 Giorgos Verigakis
    (r'^images/$', demux),
85 b2f94a0c Christos Stavrakakis
    (r'^images/detail$', views.list_images, {'detail': True}),
86 15137c54 Giorgos Verigakis
    (r'^images/([\w-]+)$', demux_image),
87 15137c54 Giorgos Verigakis
    (r'^images/([\w-]+)/members$', demux_image_members),
88 aed77afe Christos Stavrakakis
    (r'^images/([\w-]+)/members/([\w@._-]+)$', demux_members),
89 69edece7 Georgios D. Tsoukalas
    (r'^shared-images/([\w@._-]+)$', views.list_shared_images),
90 69edece7 Georgios D. Tsoukalas
)
91 69edece7 Georgios D. Tsoukalas
92 69edece7 Georgios D. Tsoukalas
urlpatterns = patterns(
93 69edece7 Georgios D. Tsoukalas
    '',
94 bb516951 Kostas Papadimitriou
    (r'^v1.0/', include(image_v1_patterns)),
95 269ac8de Christos Stavrakakis
    (r'^.*', api_endpoint_not_found),
96 c34de90f Giorgos Verigakis
)