Skip to content

Instantly share code, notes, and snippets.

@nicksnell
nicksnell / model_analyzer.py
Created February 25, 2014 10:16
Utility to pull all the callable methods from a given Django model. Tries to ignore default internal methods.
import yaml
DEFAULT_IGNORE = [
'__unicode__', '__module__', '_meta', 'MultipleObjectsReturned', '_base_manager',
'objects', 'DoesNotExist', '__doc__', '_default_manager', '_curried',
]
def analyze_model(model, ignore=[], default_ignore=True):
"""Analyze a Django Model to return a list of methods along with
the methods docstring"""
@nicksnell
nicksnell / vimeo_thumbnail.py
Created December 19, 2013 20:52
Fetches a thumbnail URL for a given video (and size) from Vimeo metadata API.
import json
import urllib2
def get_vimeo_thumbnail(vimeo_video_id, size='large'):
"""Fetches a thumbnail URL for a given video (and size) from Vimeo metadata API"""
assert size in ['small', 'medium', 'large'], 'You must specify a valid size! small/medium/large'
req = urllib2.urlopen('http://vimeo.com/api/v2/video/%s.json' % vimeo_video_id)
@nicksnell
nicksnell / django_http_auth.py
Created November 1, 2013 13:09
Dead simple HTTP Auth decorator for django. Just add @http_basic_auth(username='...some user...', password='...some pass...') round the view
from django.http import HttpResponse, HttpResponseForbidden
def _auth_request(realm):
response = HttpResponse()
response.status_code = 401
response['WWW-Authenticate'] = 'Basic realm="%s"' % realm
return response
def http_basic_auth(username=None, password=None, realm='Authorization required'):
@nicksnell
nicksnell / geocode.py
Created August 29, 2013 15:31
Quick & dirty utility to geocode an address into lat/lng
import urllib
import urllib2
import json
def geocode(address):
"""Quick & Dirty utility to get geocoded lat/lng from Google Geocode API"""
address = urllib.quote(address.replace(' ', '+').encode('utf-8'))
query = 'http://maps.googleapis.com/maps/api/geocode/json?address=%s&sensor=false' % address
raw_json = None
@nicksnell
nicksnell / rebuild_variations.py
Created March 13, 2013 11:10
Deploy CMS - rebuild all image variations manually
import os.path
from deploy.utils.importing import import_object
def _get_variation_path(path, variation):
return os.path.join(
os.path.dirname(path),
variation.lower().replace(' ', '-'),
os.path.basename(path)
)
@nicksnell
nicksnell / whatsmyip.sh
Created February 18, 2013 12:33
Get the current IP address of a box via the command line using DynDNS
curl -s http://checkip.dyndns.org/ 2>&1 | sed 's/.*\(<body>.*\s\(.*\)<\/body>\).*/\2/'
@nicksnell
nicksnell / django_show_urls.py
Created January 17, 2013 19:04
Tool for django to show all the current URL patterns installed.
import urls
def show_urls(urllist, depth=0):
for entry in urllist:
print "-" * depth, entry.regex.pattern
if hasattr(entry, 'url_patterns'):
show_urls(entry.url_patterns, depth + 1)
show_urls(urls.urlpatterns)
@nicksnell
nicksnell / rmbp-screen-man.sh
Created December 3, 2012 21:53
Retina Macbook - Screen Manufacturer
ioreg -lw0 | grep \"EDID\" | sed "/[^<]*</s///" | xxd -p -r | strings -6
@nicksnell
nicksnell / check_checkboxes.js
Created November 27, 2012 17:12
Check all Checkboxes - Javascript
javascript:inputs=document.getElementsByTagName('input');for(i=0;i<inputs.length;i++){if(inputs[i].type&&inputs[i].type=='checkbox'){inputs[i].checked=true;}}
@nicksnell
nicksnell / ufw-updater.sh
Created November 23, 2012 14:21
UFW Updater (MySQL)
#!/bin/bash
target_hosts="dynhost.does-not-exist.com another-host.does-not-exist.com"
if [ -f "/root/mysql-allow-hosts-current" ]; then
mv /root/mysql-allow-hosts-current /root/mysql-allow-hosts-prev
fi
touch /root/mysql-allow-hosts-current