Django Dev/Prod Deployment using Mercurial
Two branches for different environment (with env-specific changes in each, thus - additional merge before deploy)

or

MQ extension, "clean" code in changesets, MQ-patch for every environment on top of single branch (and accuracy with apply|unapply of patches)
I've a puzzle of a development and production Django setup that I can't figure out a good way to deploy in a simple way. Here's the setup:

/srv/www/projectprod contains my production code, served at www.domain.com
/srv/www/projectbeta contains my development code, served at www.dev.domain.com
Prod and Dev are also split into two different virtualenvs, to isolate their various Python packages, just in case. 

What I want to do here is to make a bunch of changes in dev, then push to my Mercurial server, and then re-pull those changes in production when stable. But there are a few things making this complicated:

wsgi.py contains the activate_this.py call for the virtualenv, but the path is scoped to either prod or dev, so that needs to be edited before deployment. 
manage.py has a shebang at the top to define the correct python path for the virtualenv. (This is currently #!/srv/ve/.virtualenvs/project-1.2/bin/python so I'm wondering if I can just remove this to simplify things)
settings.py contains paths to the templates, staticfiles, media root, etc. which are all stored under /srv/www/project[prod|dev]/*

I've looked into Fabric, but I don't see anything in it that would re-write these files for me prior to doing the mercurial push/pull. 
Does anyone have any tips for simplifying this, or a way to automate this deployment?