Skip to content

Instantly share code, notes, and snippets.

View peterbe's full-sized avatar

Peter Bengtsson peterbe

View GitHub Profile
@peterbe
peterbe / gist:1113601
Created July 29, 2011 10:49
ldap_lookup.py
import ldap
from django.conf import settings
from django.core.cache import cache
from django_auth_ldap.config import LDAPSearch
def fetch_user_details(email, force_refresh=False):
cache_key = 'ldap_user_details_%s' % hash(email)
if not force_refresh:
results = cache.get(cache_key)
@peterbe
peterbe / gist:1118434
Created August 1, 2011 16:13
EmailInput HTML5 friendly for Django
class EmailInput(forms.widgets.Input):
input_type = 'email'
def render(self, name, value, attrs=None):
if attrs is None:
attrs = {}
attrs.update(dict(autocorrect='off',
autocapitalize='off',
spellcheck='false'))
return super(EmailInput, self).render(name, value, attrs=attrs)
@peterbe
peterbe / newtcbs.py
Created August 5, 2011 08:37 — forked from lonnen/newtcbs.py
newtcbs
#!/usr/bin/python
import sys
import logging
import psycopg2
logger = logging.getLogger("duplicates")
logger.addHandler(logging.StreamHandler(sys.stderr))
from bson.code import Code
map_ = Code("""
function() {
if (this.right)
emit('right', {total:this.time, count:1});
if (!this.right && this.answer)
emit('wrong', {total:this.time, count:1});
}
""")
@peterbe
peterbe / gist:1244833
Created September 27, 2011 11:13
Makes sure all docs/*.rst files are properly right-stripped of whitespace
#!/usr/bin/env python
"""
Makes sure all docs/*.rst files are properly right-stripped of whitespace
By: peterbe
"""
import os
from glob import glob
DIR = os.path.normpath(os.path.join(os.path.dirname(__file__), '..', 'docs'))
from .base import *
try:
from .local import *
except ImportError, exc:
exc.args = tuple(['%s (did you rename settings/local.py-dist?)' % exc.args[0]])
raise exc
class UpdateTwitterHandler(tornado.web.RequestHandler, tornado.auth.TwitterMixin):
@tornado.web.asynchronous
@tornado.gen.engine
def post(self):
access_token = self.get_current_user_access_token()
result = yield tornado.gen.Task(self.twitter_request,
"/account/update_profile_background_image",
image=open('new_image.png', 'rb').read(),
access_token=access_token)
@peterbe
peterbe / gist:2913338
Created June 11, 2012 23:13
A very practical decorator for Django Class Based Views
from django.utils.decorators import method_decorator
def class_decorator(decorator):
def inner(cls):
orig_dispatch = cls.dispatch
@method_decorator(decorator)
def new_dispatch(self, request, *args, **kwargs):
return orig_dispatch(self, request, *args, **kwargs)
cls.dispatch = new_dispatch
return cls
$(document).ready(function() {
$('#new-status').submit(function(e) {
e.preventDefault();
$.post('/status', { text: $(this).find('textarea').val() },
function(data) {
$('#statuses').append('<li>' + data.text + '</li>');
$(this).find('textarea').val('');
});
});
@peterbe
peterbe / handlers.py
Created October 7, 2012 19:06
Async creation of thumbnails with RQ
@route(r'/thumbnails/(?P<image>\w{1}/\w{2}/\w{6})/(?P<width>\w{1,3})'
r'.(?P<extension>png|jpg)',
name='thumbail')
class TileHandler(BaseHandler):
@tornado.web.asynchronous
@tornado.gen.engine
def get(self, image, width, extension):
width = int(width)