diff options
Diffstat (limited to 'showcase/views.py')
-rw-r--r-- | showcase/views.py | 40 |
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)) |