Skip to content

Instantly share code, notes, and snippets.

@robhudson
robhudson / top_books.py
Created October 14, 2013 22:27
An example of doing a "Top 10" query in elasticsearch using a term_stats facet.
import datetime
import random
from collections import defaultdict
from elasticsearch import Elasticsearch
INDEX = 'test-top-books'
TYPE = 'book-sales'
today = datetime.date.today()
@robhudson
robhudson / middleware.py
Created September 25, 2013 16:12
CNAME handling in Django middleware example
import threading
from django.conf import settings
from django.http import HttpResponseRedirect
# We used our own model to associate users with sites, but could use django.contrib.sites here.
from .models import Network
# List of allowed URLs if user isn't in the network
ALLOWED = [
u'/accounts/register/',
@robhudson
robhudson / gist:5296851
Created April 2, 2013 22:38
.git/hooks/pre-commit and flake8
#!/usr/bin/env python
import sys
from flake8.run import git_hook
ignore = [
'E121',
'E123',
'E124',
'E125',
'E126',
@robhudson
robhudson / lsCache.js
Last active December 14, 2015 16:09
caching and localStorage
var lsCache = function() {
var TIMEOUT_DEFAULT = 60;
var self = {
set: function(key, val, timeout) {
var timeout = parseInt(timeout, 10) || TIMEOUT_DEFAULT;
var now = Math.round(new Date().getTime() / 1000);
localStorage.setItem(key, val);
localStorage.setItem(key + '.timeout', now * timeout);
},
@robhudson
robhudson / gist:3848832
Last active December 28, 2024 16:13
Quick way to set CORS headers on django-tastypie resources
class CORSResource(object):
"""
Adds CORS headers to resources that subclass this.
"""
def create_response(self, *args, **kwargs):
response = super(CORSResource, self).create_response(*args, **kwargs)
response['Access-Control-Allow-Origin'] = '*'
response['Access-Control-Allow-Headers'] = 'Content-Type'
return response
@robhudson
robhudson / post-merge
Created September 18, 2012 16:41
git post-merge hook to look for changes to requirements
#!/bin/sh
if [ $(git diff HEAD@{1} HEAD --name-only | grep 'requirements/' -c) -ne 0 ]
then
$VIRTUAL_ENV/bin/pip install -r requirements/dev.txt
fi
@robhudson
robhudson / dumpdata_to_s3.sh
Created March 8, 2011 18:02
One-liner for cron to backup a Django project to S3 using dumpdata
# Assumptions:
#
# Assumes boto is installed which comes with the s3put command
#
# Assumes your S3 keys are in ~/.boto in the form:
#
# [Credentials]
# aws_access_key_id = XXX
# aws_secret_access_key = XXX
#
def roll_release(version):
local('git flow release start %s' % (version,), capture=True)
local('sed -e "s/\'AWS_PREFIX\':.*$/\'AWS_PREFIX\': \'%s\', # cache bust/g" -i \'\' potluck/settings/base.py' % (version,))
local('git commit -am \'Bumped media version to %s\'' % (version,))
local('git flow release finish -m %s -p %s' % (version, version), capture=True)
@robhudson
robhudson / gist:423138
Created June 2, 2010 22:54
Django error logging middleware for GoPlanApp
class GPATicketErrorLogMiddleware(object):
@transaction.commit_on_success
def process_exception(self, request, exception):
import oauth2 as oauth
import sys
import traceback
create_ticket_url = 'http://%s.goplanapp.com/api/tickets/create' % (
@robhudson
robhudson / parse_date.py
Created October 8, 2009 23:47
parse_date template tag
import datetime
from django.template import Library
from django.template.defaultfilters import stringfilter
register = Library()
@stringfilter
def parse_date(date_string, format):
"""