Skip to content

Instantly share code, notes, and snippets.

View dcramer's full-sized avatar
💭
I may be slow to respond.

David Cramer dcramer

💭
I may be slow to respond.
View GitHub Profile
"""
Patches the database wrapper and template engine to throw an exception if a query is executed inside of a template.
In your urls.py, enable it like so:
>>> import monkey
>>> monkey.patch_templates()
"""
import logging
@dcramer
dcramer / Questions
Created June 21, 2011 08:47
Kiwi Pycon Give-away
GitHub username: dcramer
Day job: DISQUS
Favorite open source project: Django
Open Source contributions (if any): Sentry, Gargoyle, Debug Toolbar, <100 more>
Stranded on an island, what 3 items do you take: Laptop, Mobile Phone, and as much alcohol as I can manage :)
Tie-breaker, pick a number between 1 and 20,000: 20,000
@dcramer
dcramer / gist:1163531
Created August 22, 2011 20:59 — forked from voodootikigod/gist:1155790
PyCodeConf Ticket Give-away
Day job:
I build cool Python things at Disqus
Favorite Python project:
Does it count if I pick my own? :)
github.com/dcramer/django-sentry
"data": {
"__sentry__": {
"frames": [
{
"filename": filename,
"module": module,
"function": function,
"lineno": ...,
"vars": {
"key": "value"
# install requirements from github
pip install git+ssh://git@github.com:dcramer/sentry.git@2.0#egg=raven==2.0.0-DEV
pip install git+ssh://git@github.com:dcramer/raven.git@2.0#egg=sentry==2.0.0-DEV
# start sentry webserver
sentry start
# add raven to whatever app
# e.g. Django:
INSTALLED_APPS = (
@dcramer
dcramer / gist:1618119
Created January 16, 2012 00:00
Using Sentry from Heroku outside of Heroku
# create a dummy heroku app
heroku create --stack cedar
# add sentry
heroku addons:add sentry
# fetch your config
heroku config | grep SENTRY_DSN
# configure your application via http://getsentry.com/guide/
def ManagerMock(manager, return_value=None):
"""
>>> objects = ManagerMock(Post.objects, ['queryset', 'result'])
>>> assert objects.filter() == objects.all()
"""
return_value = return_value or []
class ManagerMock(mock.MagicMock):
def _get_child_mock(self, **kwargs):
Getting Play to work:
- Change Gemfile.lock's version of mocha to be 0.11.1
- Open iTunes -> select iTunes DJ -> Start playing a song
Some caveats:
- iTunes Match songs (that are not on disk) won't queue
- Frontend seems sluggish, but it could be the machine it's on (not super powerful, but should be able to keep up)
with cache.Lock('key name'[, timeout]):
# do something that usually has a race thats too hard to solve
# best example
def get_or_create(model, **kwargs):
with cache.Lock('get_or_create:%s:%s' % (model, make_key(kwargs)):
model.objects.get_or_create(**kwargs)
class Lock(object):
"""
Uses the defined cache backend to create a lock.
>>> with Lock('key name'):
>>> # do something
"""
def __init__(self, lock_key, timeout=10, cache=None):
if cache is None:
self.cache = _cache