Add index page.
authorMikko Värri <vmj@linuxbox.fi>
Fri, 17 Sep 2010 23:21:44 +0000 (02:21 +0300)
committerMikko Värri <vmj@linuxbox.fi>
Fri, 17 Sep 2010 23:21:44 +0000 (02:21 +0300)
recycloid_api/templates/recycloid_api/response.json
recycloid_api/templates/recycloid_api/response.xml
recycloid_api/templatetags/defined.py [new file with mode: 0644]
recycloid_api/urls.py
recycloid_api/views.py

index a51fe99..e615d15 100644 (file)
@@ -1,4 +1,5 @@
 {% load timestamp %}
+{% load defined %}
 {
     "response": {
 {% if meta %}{% for key, value in meta.items %}
@@ -10,7 +11,7 @@
             "text": "{{ error.text }}"
         },
 {% endif %}
-{% if servers %}
+{% if servers|defined %}
         "servers": {
             "@href": "{% url recycloid-api-servers %}",
             "server": [
@@ -28,7 +29,7 @@
             ]
         },
 {% endif %}
-{% if owners %}
+{% if owners|defined %}
         "owners": {
             "@href": "{% url recycloid-api-owners %}",
             "owner": [
@@ -49,7 +50,7 @@
             ]
         },
 {% endif %}
-{% if stashes %}
+{% if stashes|defined %}
         "stashes": {
             "@href": "{% url recycloid-api-stashes %}",
             "stash": [
@@ -77,7 +78,7 @@
             ]
         },
 {% endif %}
-{% if items %}
+{% if items|defined %}
         "items": {
             "@href": "{% url recycloid-api-items %}",
             "item": [
             ]
         },
 {% endif %}
-{% if images %}
+{% if images|defined %}
         "images": {
             "@href": "{% url recycloid-api-images %}",
             "image": [
index 7bdc955..573ed35 100644 (file)
@@ -1,5 +1,6 @@
 {% spaceless %}
 {% load timestamp %}
+{% load defined %}
 <?xml version="1.0" encoding="UTF-8"?>
 <response{% if meta %}{% for key, value in meta.items %} {{ key }}="{{ value }}"{% endfor %}{% endif %}>
 {% if error %}
@@ -7,7 +8,7 @@
         <text>{{ error.text }}</text>
     </error>
 {% endif %}
-{% if servers %}
+{% if servers|defined %}
     <servers href="{% url recycloid-api-servers %}">
     {% for server in servers %}
         <server uuid="{{ server.uuid }}">
@@ -21,7 +22,7 @@
     {% endfor %}
     </servers>
 {% endif %}
-{% if owners %}
+{% if owners|defined %}
     <owners href="{% url recycloid-api-owners %}">
     {% for owner in owners %}
         <owner uuid="{{ owner.uuid }}" server="{{ owner.server.uuid }}">
@@ -37,7 +38,7 @@
     {% endfor %}
     </owners>
 {% endif %}
-{% if stashes %}
+{% if stashes|defined %}
     <stashes href="{% url recycloid-api-stashes %}">
     {% for stash in stashes %}
         <stash uuid="{{ stash.uuid }}" owner="{{ stash.owner.uuid }}" server="{{ stash.server.uuid }}">
@@ -59,7 +60,7 @@
     {% endfor %}
     </stashes>
 {% endif %}
-{% if items %}
+{% if items|defined %}
     <items href="{% url recycloid-api-items %}">
     {% for item in items %}
         <item uuid="{{ item.uuid }}" stash="{{ item.stash.uuid }}">
@@ -78,7 +79,7 @@
     {% endfor %}
     </items>
 {% endif %}
-{% if images %}
+{% if images|defined %}
     <images href="{% url recycloid-api-images %}">
     {% for image in images %}
         <image uuid="{{ image.uuid }}" item="{{ image.item.uuid }}">
diff --git a/recycloid_api/templatetags/defined.py b/recycloid_api/templatetags/defined.py
new file mode 100644 (file)
index 0000000..b6783ea
--- /dev/null
@@ -0,0 +1,38 @@
+from django import template
+
+register = template.Library()
+
+
+@register.filter
+def defined(value):
+    """
+    Answers whether the value is defined or not.
+
+    This is useful when you want to distinguish between an empty value and an undefined value::
+
+      {% if athletes_list %}
+        There are athletes.
+      {% else %}
+        List of athletes is either empty or not defined at all.
+      {% endif %}
+      
+      {% if athletes_list|length >= 0 %}
+        List of athletes is either empty or not defined at all.
+      {% else %}
+        There are athletes.
+      {% endif %}
+      
+      {% if athletes_list|defined %}
+        List of athletes is defined but might be empty.
+      {% else %}
+        List of athletes is not defined.
+      {% endif %}
+
+    Note that technically this compares the value against ``None``, which
+    is what template system returnes for undefined variables in the
+    context.  In other words, if the context has the variable, but its
+    value is ``None``, it is considered undefined byt this filter.
+    """
+    if value is None:
+        return False
+    return True
index 497b27d..20d0d21 100644 (file)
@@ -10,6 +10,7 @@ item = r'(?P<item>' + uuid + r')'
 image = r'(?P<image>' + uuid + r')'
 
 urlpatterns = patterns('recycloid_api.views',
+        url(r'^$', 'index', name='recycloid-api-index'),
         url(r'^servers/$', 'servers', name='recycloid-api-servers'),
         url(r'^servers/' + server + r'/$', 'servers', name='recycloid-api-server'),
         url(r'^servers/' + server + r'/stashes/$', 'stashes'),
index 236fc0f..85eaeb8 100644 (file)
@@ -186,6 +186,21 @@ def __object_list_response(request, objects, name, add_related_func):
     return __response(request, context)
 
 
+def index(request):
+    """
+    Returns a list of links.
+
+    :param request: HttpRequest
+    :return: HttpReponse
+    """
+    context = {'servers': [],
+               'owners': [],
+               'stashes': [],
+               'items': [],
+               'images': []}
+    return __response(request, context)
+
+
 def servers(request, server=None):
     """
     Returns a list of servers or one server.