Archive for September, 2009


HTML to PDF in Django

I’ve been involved in a number of project where I need to create pdf reports from a set of data using the Django framework. The easiest way for me to do this is generate the pdf directly from html.

I will provide a list of software required, and how to program a django view to generate the pdf.

Here’s the software you’ll need:

pisa: http://pypi.python.org/pypi/pisa/

ReportLab: http://www.reportlab.org/downloads.html

html5lib: http://code.google.com/p/html5lib/downloads/list

Here’s a simple view to generate the pdf.

#view.py

import cStringIO as StringIO
import ho.pisa as pisa
from django.http import HttpResponse
from django.template.loader import render_to_string

def my_view(request, *args, **kwargs):

   html = render_to_string('some_template.html', RequestContext(request, {
       'title': 'This is a test PDF document'
   }))
   result = StringIO.StringIO()
   pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("ISO-8859-1")), result)
   response = HttpResponse(result.getvalue(), mimetype='application/pdf')
   response['Content-Disposition'] = 'attachment; filename=document.pdf'
   return response

Enjoy

Setup git on Centos 5.3, Centos 5.4 and make public over ssh

update oct 22. 2009:
This method also works in Centos 5.4. I’ll post the epel think below once they’re available

I setup git on a Centos 5.3 server the other day, accessible over ssh. Here are the steps I followed to get things up and running.

Centos’s yum repository does not have git in it, so setup fedoras epel (Extra Packages for Enterprise Linux) repo.

i386:

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm

x86_64:

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-3.noarch.rpm

As root run this command:

yum install git

Next I’m going to setup a new repository and make it accessible over ssh:

mdkir /home/username/repo #create directory for new repository
cd /home/username/repo
git init

We’ll create a dummy file to get started. If you trying to clone (checkout) an empty git repository, you’ll just get errors:

touch firstfile

Add all files in this directory to your git repository:

git add .

Commit the changes you’ve made to the repo:

git commit

Next we’ll create a clone of the repo and configure it to be public:

cd /home/username
git clone --bare ./repo repo.git
touch  repo.git/git-daemon-export-ok

you can copy your repo.git directory to where you want to make the repo public

Now we want to checkout a copy of the new repository from a different server.

git clone ssh://yourserveraddress/home/username/repo.git

You should now have a new directory labeled repo which contains the file ‘firstfile’

To add a new file to the repo:

cd repo
touch secondfile
git add .
git commit

Now we want to submit the changes back to the git server:

git push

You’ll be prompted for your password.

Enjoy.