Refactoring is important enough to be treated as a development activity in its own right and should not be shoe-horned in on the quiet along with other tasks
This post is partly an attempt to atone for my own sins (and apologise to @stevejalim), partly a public aide memoire to prevent me from doing it again.
In 20 years of software . . .
Using mixins to add fluid filters to Django model managers.
There are plenty of samples on the web showing how to create custom Django
QuerySet and Manager classes to create fluid manager interfaces; here's
We have a lot of shared fields across models, that we filter on in similar
ways, irrespective of the model. A good . . .
In the third (probably not final) post on our deployment process, our Fabric
script has become intelligent enough to manage deployment options on our
Testing code that relies on remote APIs that themselves rely on OAuth can be painful, if not impossible. This is how we do it.
For all of its well-publicised issues, OAuth is a great step-forward for secure authentication / authorisation for granting access to remote APIs on by apps on behalf of users. We use OAuth to access LinkedIn data on . . .
We've upgraded our Fabric deployment scripts so that we can now see all of
the commits that will be pushed as part of the deployment.
As we mature as a company and a development team, our use of Fabric to script
basic tasks is also maturing. Our latest addition is to incorporate the git
changelog into the deployment script, so that prior . . .
P introspection with logging_tree
Have you ever wondered where all your logging information is coming from (or even where it's going to, or possibly why it's all duplicated)? If so, then logging_tree is your saviour.
I came across the logging_tree library recently as I was following a specific issue in the
urllib3 library, regarding the proliferation of INFO . . .
A run of pickling problems with our tests has required us to delve into the rq and django-rq source code. If you run rq in synchronous mode, queued functions are run directly by the
enqueue method, but redis is still used to store 'job' information.
We use the redis -> rq -> django-rq chain to run all our async processes, and a . . .