tags:

views:

202

answers:

2

How do I install a Django snippet, in particular snippet 818 - dumpscript, on Linux?

Update 2. The question was about Linux, but for reference I have listed the corresponding way to install dumpscript on Windows below, e.g. for use during development. (But it can also be done the other/standard way if there are no file access restrictions.)

Update 1. This will install it for an application named "programRelease" (in a Linux command-line window, Bash shell):

cd /home/msquant/www/GoogleCodeHost/programRelease
mkdir management
touch management/__init__.py
mkdir management/commands
touch management/commands/__init__.py
wget  http://www.djangosnippets.org/snippets/818/download/ --output-document=/home/msquant/818.py
cp /home/msquant/818.py management/commands/dumpscript.py

The snippet dumpscript is now part of Django Custom Management Command Extensions but I can't install it as this is on the hosting server where I have no rights to touch the Python installation. This is the error message when running "python setup.py install" to install the command extentions:

error: could not create '/usr/lib/python2.5/site-packages/django_extensions': Permission denied

Instead I just want to install the snippet and use it.

I have tried to install it this way on the hosting server:

cd /home/msquant/
wget  http://www.djangosnippets.org/snippets/818/download/  --output-document=818.py
cp /home/msquant/818.py /home/msquant/www/GoogleCodeHost/dumpscript.py

And using it this way:

cd /home/msquant/www/GoogleCodeHost
python manage.py dumpscript programRelease 

Error message:

Unknown command: 'dumpscript'
Type 'manage.py help' for usage.

The built-in dumpdata works (outputting in the JSON format):

cd /home/msquant/www/GoogleCodeHost
python manage.py dumpdata programRelease 

Ref "Update 2" above:

To install on Windows (assumes EXE file wget lives in directory D:\wget, and that the temporary directory, d:\temp2, exists):

d:
cd D:\dproj\MSQall\website\GoogleCodeHost
mkdir management
echo. > management\__init__.py
mkdir management\commands
echo. > management\commands\__init__.py
D:\wget\wget.exe  http://www.djangosnippets.org/snippets/818/download/ --output-document=d:\temp2\818.py
copy d:\temp2\818.py management\commands\dumpscript.py
+2  A: 

Just put the snippet in {appname}/management/commands/, where {appname} is the name of an installed app. Each Python module in that directory will be auto-discovered and registered as a command that can be executed as an action when you run manage.py.

You'll need to put an empty __init__.py in both {appname}/management/ and {appname}/management/commands/ for this to work, if those files don't already exist.

See the docs for more on writing custom commands (obviously in your case, the command is already written).

Dominic Rodger
It worked with the management/commands directories after creating an empty "__init__.py" in each of the two directories. Thanks!. I have updated the question with the final solution.
Peter Mortensen
@Peter Mortensen - thanks, forgot that. I've updated my answer.
Dominic Rodger
+1  A: 

I haven't updated that djangosnippets version for a while, I hope it works for you.

Note that, you don't need to "install" pure python apps like django_extensions; you can use it by just putting the folder on your path somewhere (like where you project's directory is). Failing that, try and use the dumpscript.py file found in django_extensions (it's newer)

I should have some time in the next few weeks to develop dumpscript a little further and get it to play better with some of the newer django features :-)

Cheers, Will

Will Hardy
dumpscript works fine. E.g. I used it today for a database migration (because the Django models in my application were extended).
Peter Mortensen