Skip to content

Instantly share code, notes, and snippets.

@Quard
Quard / beat_config_example.py
Last active April 10, 2019 21:26
The Python Celery Cookbook: Small Tool, Big Possibilities
from celery.schedules import crontab
CELERY_BEAT_SCHEDULE = {
'monday-statistics-email': {
'task': 'myproject.apps.statistics.tasks.monday_email',
'schedule': crontab(day_of_week=1, hour=7),
},
}
@Quard
Quard / dev_smtpd.py
Created April 15, 2014 06:36
SMTP server on python for development with storing emails.
#!/usr/bin/env python
import argparse
import asyncore
import smtpd
import time
import os
SMTPD_MAIN_CLASSES = [
smtpd.DebuggingServer.__name__,
@Quard
Quard / date_range.py
Created August 15, 2013 08:04
simple date range iterator
from datetime import datetime, date, timedelta
class date_range(object):
def __init__(self, since, until, step=timedelta(days=1)):
assert isinstance(since, (datetime, date))
assert isinstance(until, (datetime, date))
assert isinstance(step, timedelta)
@Quard
Quard / gist:3720255
Created September 14, 2012 06:43
en<->ru letters replacer
import sys
from copy import copy
_map = {':': u'\u0416', "'": u'\u044d', '"': u'\u042d', '{': u'\u0425', '[': u'\u0445', '.': u'\u044e', ']': u'\u044a', ',': u'\u0431', '^': ',', 'a': u'\u0444', '&': '.', 'c': u'\u0441', 'b': u'\u0438', 'e': u'\u0443', 'd': u'\u0432', 'g': u'\u043f', 'f': u'\u0430', 'i': u'\u0448', 'h': u'\u0440', 'k': u'\u043b', 'j': u'\u043e', 'm': '\xd1\x8c', 'l': u'\u0434', 'o': u'\u0449', 'n': u'\u0442', 'q': u'\u0439', 'p': u'\u0437', 's': u'\u044b', 'r': u'\u043a', 'u': u'\u0433', 't': u'\u0435', 'w': u'\u0446', 'v': u'\u043c', 'y': u'\u043d', 'x': u'\u0447', ';': u'\u0436', 'z': u'\u044f', '}': u'\u042a', '<': u'\u0411', '>': u'\u042e'}
letters_map = copy(_map)
letters_map.update(dict([(k.upper(), v.upper()) for k, v in _map.iteritems() if k.upper() != k and not k in letters_map]))
letters_map.update(dict([(k, v) for v, k in _map.iteritems() if not k in letters_map]))
letters_map.update(dict([(k.upper(), v.upper()) for v, k in _map.iteritems() if k.upper() != k and not k in letters_
@Quard
Quard / gist:1766187
Created February 8, 2012 06:48
Widget for upload file/image by selecting from local disk or from URL
import urlparse
import httplib
from copy import copy
try:
from cStringIO import StringIO
except:
from StringIO import StringIO
from django import forms
from django.core.files import File
from django.core.files.temp import NamedTemporaryFile