blob: 96f0276de886ce46b64a5200a0efa8684344bcbd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
from django.http import Http404, HttpResponse
from django.template import TemplateDoesNotExist
from django.template.loader import get_template
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)
number -= 1 # human page number to computer page number
if not q.count():
return Http404(_("Unknown source."))
showcase = q.all()[0]
source = showcase.external_source
template_name = "showcase/item-{}.html".format(source.source_type.slug)
try:
template = get_template(template_name)
except TemplateDoesNotExist:
raise Http404(
str(_("Template {} is not defined. Ask your administrator to "
"define a template for this source type.")).format(
template_name))
data = showcase.get_context(request)
data_source = source.get_item(number)
if not data_source:
raise Http404(
str(_("Data unavailable"))
)
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))
|