-
Notifications
You must be signed in to change notification settings - Fork 1
/
context_processors.py
70 lines (55 loc) · 1.9 KB
/
context_processors.py
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
66
67
68
69
# -*- coding: utf-8 -*-
from django.core.urlresolvers import resolve
from django.conf import settings
from pentackle.models import Article
#КЛЮЧ С НАЗВАНИЕМ ТЕКУЩЕГО РАЗДЕЛА ИМЕЕТ ЗНАЧЕНИЕМ ACTIVE
def active_section(request):
view, args, kwargs = resolve(request.path)
try:
return { 'active_section': { dict((
# список постов и архив
map(lambda F: (F, lambda kwargs: kwargs['slug']), ('articles', 'archive')) +
# просмотр поста
map(lambda F:
(F, lambda kwargs: Article.objects.get(slug=kwargs['slug']).sections.all()[0].slug),
('object_detail',)) +
# просмотр статических страниц
map(lambda F:
(F, lambda kwargs: kwargs['template'].replace('staticpages/', '').replace('.html', '')),
('direct_to_template',)
) +
# серфинг по магазину
map(lambda F: (F, lambda kwargs: 'shop'), (
'featured', 'cart', 'category', 'order', 'orders', 'product'
))
))[view.__name__](kwargs): 'active' } }
except KeyError:
return {}
#ОБЩАЯ ЦЕНА КОРЗИНЫ
def cart(request):
try:
return {
'cart': reduce(lambda sum, (id, p): {
'quantity': sum['quantity'] + p.quantity,
'price' : sum['price'] + p.quantity * p.price
}, request.session['cart'].iteritems(), {'quantity': 0, 'price': 0}),
}
except KeyError:
return {'cart': {'quantity': 0, 'price': 0}}
#MEDIA SERVER URL
def media_url(request):
return { 'media_url': settings.MEDIA_URL }
#МЕТА ДАННЫЕ ДЛЯ URL-А
def SEO(request):
import re
from seo.models import Meta
try:
path = re.sub(r'/$', '', request.META['PATH_INFO'])
meta = Meta.objects.get(url__in=(path, path+'/'))
return {
'META_DESCRIPTION': meta.description,
'META_KEYWORDS' : meta.keywords,
'TITLE' : meta.title,
}
except Meta.DoesNotExist:
return {}