You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

85 lines
2.6 KiB

# -*- coding: utf-8 -*-
import re
import datetime
import json
from ConfigParser import ConfigParser
from django.shortcuts import get_object_or_404
from django.core.cache import cache
from django.conf import settings
from django.utils.translation import get_language, activate
from django.core.urlresolvers import reverse, reverse_lazy
from accounts.models import User
from emencia.django.newsletter.models import Contact
def get_referer(request, default=None):
referer = request.META.get('HTTP_REFERER')
if not referer:
return default
# remove the protocol and split the url at the slashes
referer = re.sub('^https?:\/\/', '', referer).split('/')
# add the slash at the relative path's view and finished
referer = u'/' + u'/'.join(referer[1:])
return referer
def split_params(st):
st = st.split('/')
params = []
for item in st:
n = item.find('-')
if n != -1:
params.append({'type': item[:n], 'url':item[n+1:]})
return params
def dates_range(date1, date2):
delta = date2 - date1
dates = []
for i in range(delta.days + 1):
dates.append(date1 + datetime.timedelta(days=i))
return dates
def get_user(url):
try:
url = int(url)
user = get_object_or_404(User, id=url)
except ValueError:
user = get_object_or_404(User, url=url)
return user
def get_subscribers_count():
key = 'contact_count'
count = cache.get(key)
if count is None:
count = Contact.objects.valid_subscribers().filter(from_users=False).count()
cache.set(key, count, datetime.timedelta(days=1).total_seconds())
return count
# def test_get_side_items():
# from city.models import City
# activate('ru')
# get_side_items('conf', City)
def get_side_items(event_type, model):
cache_timeout = datetime.timedelta(days=1)
lang = get_language()
option = '{type}_{model}'.format(type=event_type, model=model.__name__.lower())
key = '{option}_catalog_{lang}'.format(option=option, lang=lang)
data = cache.get(key)
if data is None:
data = []
config = ConfigParser()
config.read(settings.INI_CONFIG_PATH)
pks = json.loads(config.get('sections', option, '[]'))
if pks:
qs = model.objects.language().filter(pk__in=pks).values_list('pk', 'name', 'url')
raw_data = dict(map(lambda item: (item[0], {'name': item[1], 'url': reverse(option, args=[item[2]])}), qs))
for pk in pks:
item = raw_data.get(pk)
if item:
data.append(item)
cache.set(key, data, cache_timeout.total_seconds())
return data