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.
54 lines
1.4 KiB
54 lines
1.4 KiB
# -*- coding: utf-8 -*-
|
|
import re
|
|
import datetime
|
|
|
|
from django.shortcuts import get_object_or_404
|
|
from django.core.cache import cache
|
|
|
|
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
|
|
|