#
from collections import defaultdict
import hashlib
+import os.path
import random
import re
import time
def get_random_hash(seed):
- sha_digest = hashlib.sha1('%s%s%s%s' %
- (randrange(0, MAX_SESSION_KEY), time.time(), unicode(seed).encode('utf-8', 'replace'),
- settings.SECRET_KEY)).digest()
+ sha_digest = hashlib.sha1('%s%s%s%s' % (
+ randrange(0, MAX_SESSION_KEY), time.time(), unicode(seed).encode('utf-8', 'replace'), settings.SECRET_KEY)
+ ).digest()
return urlsafe_b64encode(sha_digest).replace('=', '').replace('_', '-').lower()
self.lock.close()
-#@task
+# @task
def create_zip(paths, zip_slug):
"""
Creates a zip in MEDIA_ROOT/zip directory containing files from path.
for chunk in read_chunks(f):
self.write(chunk)
+
class MultiQuerySet(object):
def __init__(self, *args, **kwargs):
self.querysets = args
(offset, stop, step) = item.indices(self.count())
except AttributeError:
# it's not a slice - make it one
- return self[item : item + 1][0]
+ return self[item:item + 1][0]
items = []
total_len = stop - offset
for qs in self.querysets:
stop = total_len - len(items)
continue
+
class SortedMultiQuerySet(MultiQuerySet):
def __init__(self, *args, **kwargs):
self.order_by = kwargs.pop('order_by', None)
(offset, stop, step) = item.indices(self.count())
except AttributeError:
# it's not a slice - make it one
- return self[item : item + 1][0]
+ return self[item:item + 1][0]
items = []
total_len = stop - offset
skipped = 0
candidate = competitor
candidate_i = i
except IndexError:
- continue # continue next sort_head
+ continue # continue next sort_head
# we have no more elements:
if candidate is None:
break
sort_heads[candidate_i] += 1
if skipped < offset:
skipped += 1
- continue # continue next item
+ continue # continue next item
items.append(candidate)
return items
except ValueError:
pass
else:
- # SGML: An end tag closes, back to the matching start tag, all unclosed intervening start tags with omitted end tags
+ # SGML: An end tag closes, back to the matching start tag,
+ # all unclosed intervening start tags with omitted end tags
open_tags = open_tags[i+1:]
else:
# Add it to the start of the open tags list
def __getattribute__(self, name):
if name.startswith('_'):
return object.__getattribute__(self, name)
- value = getattr(settings,
- "%s_%s" % (self._prefix, name),
- object.__getattribute__(self, name))
+ value = getattr(settings, "%s_%s" % (self._prefix, name), object.__getattribute__(self, name))
more = "_more_%s" % name
if hasattr(self, more):
value = getattr(self, more)(value)
return value
-def trim_query_log(trim_to=25):
- """
-connection.queries includes all SQL statements -- INSERTs, UPDATES, SELECTs, etc. Each time your app hits the database, the query will be recorded.
-This can sometimes occupy lots of memory, so trim it here a bit.
- """
- if settings.DEBUG:
- from django.db import connection
- connection.queries = trim_to > 0 \
- and connection.queries[-trim_to:] \
- or []
-
-
def delete_from_cache_by_language(cache, key_template):
cache.delete_many([key_template % lc for lc, ln in settings.LANGUAGES])
+
+
+def gallery_path(slug):
+ return os.path.join(settings.MEDIA_ROOT, settings.IMAGE_DIR, slug)
+
+
+def gallery_url(slug):
+ return '%s%s%s/' % (settings.MEDIA_URL, settings.IMAGE_DIR, slug)