summaryrefslogtreecommitdiff
path: root/showcase/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'showcase/views.py')
-rw-r--r--showcase/views.py40
1 files changed, 37 insertions, 3 deletions
diff --git a/showcase/views.py b/showcase/views.py
index 7134830..c72cbba 100644
--- a/showcase/views.py
+++ b/showcase/views.py
@@ -6,8 +6,26 @@ from django.utils.translation import ugettext_lazy as _
from .models import ShowCase
+def convert_dict(value):
+ """
+ Convert key in each tree to replace "-" with "_"
+ """
+ if isinstance(value, dict):
+ new_dict = {}
+ for k in value.keys():
+ new_dict[k.replace("-", "_")] = convert_dict(value[k])
+ return new_dict
+ elif isinstance(value, (list, tuple)):
+ new_lst = []
+ for v in value:
+ new_lst.append(convert_dict(v))
+ return new_lst
+ return value
+
+
def display_item(request, slug, number):
q = ShowCase.objects.filter(slug=slug)
+ number = int(number)
if not q.count():
return Http404(_("Unknown source."))
showcase = q.all()[0]
@@ -20,11 +38,27 @@ def display_item(request, slug, number):
str(_("Template {} is not defined. Ask your administrator to "
"define a template for this source type.")).format(
template_name))
- data = source.get_item(int(number))
- if not data:
+ data = showcase.get_context(request)
+ data_source = source.get_item(number)
+ if not data_source:
raise Http404(
str(_("Data unavailable"))
)
- data["showcase"] = slug
+ data["data"] = convert_dict(data_source)
+ data["page"] = showcase
+ data_list = showcase.data
+ data_list_count = len(data_list)
+ if number:
+ previous = source.get_item(number - 1)
+ if previous:
+ data["previous"] = previous
+ data["previous_number"] = number - 1
+ if number < data_list_count:
+ next_item = source.get_item(number + 1)
+ if next_item:
+ data["next"] = next_item
+ data["next_number"] = number + 1
+ data["current_number_1"] = number + 1
+ data["total"] = data_list_count
return HttpResponse(template.render(data, request))