<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: django code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Sun, 27 Jul 2008 00:58:08 GMT</pubDate>
    <description>DZone Snippets: django code</description>
    <item>
      <title>simple init.d script for django using fastcgi</title>
      <link>http://snippets.dzone.com/posts/show/5775</link>
      <description>&lt;code&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;#&lt;br /&gt;# chkconfig:	345 85 15&lt;br /&gt;# description:	FastCGI server for Django&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# Source function library&lt;br /&gt;. /etc/rc.d/init.d/functions&lt;br /&gt;&lt;br /&gt;# Source networking configuration.&lt;br /&gt;. /etc/sysconfig/network&lt;br /&gt;&lt;br /&gt;# Check that networking is up.&lt;br /&gt;[ "${NETWORKING}" = "no" ] &amp;&amp; exit 0&lt;br /&gt;&lt;br /&gt;PROJ=myproject					# Django project name&lt;br /&gt;PROJSPATH=/home/user/www			# The folder Django project is in&lt;br /&gt;SOCKSPATH=/tmp					# Where you put UNIX socket file&lt;br /&gt;PIDSPATH=/var/run				# Where you put .pid file&lt;br /&gt;RUNAS=root					# Set a different user to run the FastCGI server&lt;br /&gt;&lt;br /&gt;SRVNAME=fcgi-$PROJ				# Process name&lt;br /&gt;&lt;br /&gt;# Maximum requests for a child to service before expiring&lt;br /&gt;#MAXREQ=&lt;br /&gt;# Spawning method - prefork or threaded&lt;br /&gt;#METHOD=&lt;br /&gt;# Maximum number of children to have idle&lt;br /&gt;#MAXSPARE=&lt;br /&gt;# Minimum number of children to have idle&lt;br /&gt;#MINSPARE=&lt;br /&gt;# Maximum number of children to spawn&lt;br /&gt;#MAXCHILDREN=&lt;br /&gt;&lt;br /&gt;start () {&lt;br /&gt;	# Check if the service is already running?&lt;br /&gt;	if [ ! -f $PIDSPATH/$SRVNAME.pid ]; then&lt;br /&gt;		echo -n $"Starting $SRVNAME..."&lt;br /&gt;		daemon --user $RUNAS $PROJSPATH/$PROJ/manage.py runfcgi pidfile=$PIDSPATH/$SRVNAME.pid \&lt;br /&gt;			socket=$SOCKSPATH/$SRVNAME.sock \&lt;br /&gt;			${MAXREQ:+maxrequests=$MAXREQ} \&lt;br /&gt;			${METHOD:+method=$METHOD} \&lt;br /&gt;			${MAXSPARE:+maxspare=$MAXSPARE} \&lt;br /&gt;			${MINSPARE:+minspare=$MINSPARE} \&lt;br /&gt;			${MAXCHILDREN:+maxchildren=$MAXCHILDREN} \&lt;br /&gt;			${DAEMONISE:+damonize=True}&lt;br /&gt;		echo&lt;br /&gt;		chmod 777 $SOCKSPATH/$SRVNAME.sock&lt;br /&gt;		RETVAL=$?&lt;br /&gt;	else&lt;br /&gt;		echo $"$SRVNAME is already running."&lt;br /&gt;	fi&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;stop() {&lt;br /&gt;	# Stop daemons.&lt;br /&gt;	if [ -f $PIDSPATH/$SRVNAME.pid ]; then&lt;br /&gt;		echo -n $"Stopping $SRVNAME..."&lt;br /&gt;		killproc -p "$PIDSPATH/$SRVNAME.pid" -d 60 $SRVNAME&lt;br /&gt;		echo&lt;br /&gt;		# Delete pidfile only when Django was called successfully&lt;br /&gt;		if [ $? -eq 0 ]; then&lt;br /&gt;			rm -f $PIDSPATH/$SRVNAME.pid "$SRVNAME.pid"  &gt;/dev/null 2&gt;&amp;1&lt;br /&gt;		fi&lt;br /&gt;	else&lt;br /&gt;		echo $"$SRVNAME is NOT running."&lt;br /&gt;	fi&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;RETVAL=0&lt;br /&gt;&lt;br /&gt;case "$1" in&lt;br /&gt;	start)&lt;br /&gt;		start&lt;br /&gt;		;;&lt;br /&gt;	stop)&lt;br /&gt;		stop&lt;br /&gt;		;;&lt;br /&gt;	status)&lt;br /&gt;		status -p "$PIDSPATH/$SRVNAME.pid" $SRVNAME&lt;br /&gt;		RETVAL=$?&lt;br /&gt;		;;&lt;br /&gt;	restart)&lt;br /&gt;		stop&lt;br /&gt;		start&lt;br /&gt;		;;&lt;br /&gt;	*)&lt;br /&gt;		echo $"Usage: $0 {start|stop|restart|status}"&lt;br /&gt;		exit 3&lt;br /&gt;		;;&lt;br /&gt;esac&lt;br /&gt;&lt;br /&gt;exit $RETVAL&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 15 Jul 2008 23:01:13 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5775</guid>
      <author>stvnz (Steven)</author>
    </item>
    <item>
      <title>send django queries to OutputDebugString (Win32)</title>
      <link>http://snippets.dzone.com/posts/show/5476</link>
      <description>Modify django/db/backends/util.py as follows:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import win32api&lt;br /&gt;&lt;br /&gt;class CursorDebugWrapper(object):&lt;br /&gt;    def __init__(self, cursor, db):&lt;br /&gt;        self.cursor = cursor&lt;br /&gt;        self.db = db # Instance of a BaseDatabaseWrapper subclass&lt;br /&gt;&lt;br /&gt;    def debug_trace(self,category,message):&lt;br /&gt;        win32api.OutputDebugString('|django              |%s|%s\n' % (category,message))&lt;br /&gt;&lt;br /&gt;    def trace_entry (self, sql, elapsed): &lt;br /&gt;        self.debug_trace('Q',sql)&lt;br /&gt;        if elapsed &gt;= 0.01:&lt;br /&gt;            self.debug_trace(' ','elapsed: %.3f' % elapsed)&lt;br /&gt;&lt;br /&gt;    def execute(self, sql, params=()):&lt;br /&gt;        start = time()&lt;br /&gt;        try:&lt;br /&gt;            return self.cursor.execute(sql, params)&lt;br /&gt;        finally:&lt;br /&gt;            stop = time()&lt;br /&gt;            sql = self.db.ops.last_executed_query(self.cursor, sql, params)&lt;br /&gt;            self.db.queries.append({&lt;br /&gt;                'sql': sql,&lt;br /&gt;                'time': "%.3f" % (stop - start),&lt;br /&gt;            })&lt;br /&gt;            self.trace_entry(sql, stop - start) &lt;br /&gt;&lt;br /&gt;    def executemany(self, sql, param_list):&lt;br /&gt;        start = time()&lt;br /&gt;        try:&lt;br /&gt;            return self.cursor.executemany(sql, param_list)&lt;br /&gt;        finally:&lt;br /&gt;            stop = time()&lt;br /&gt;            self.db.queries.append({&lt;br /&gt;                'sql': '%s times: %s' % (len(param_list), sql),&lt;br /&gt;                'time': "%.3f" % (stop - start),&lt;br /&gt;            })&lt;br /&gt;            self.trace_entry(sql, stop - start) &lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;</description>
      <pubDate>Thu, 08 May 2008 13:18:14 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5476</guid>
      <author>morlandi (Mario Orlandi)</author>
    </item>
    <item>
      <title>Generating Taconite command documents</title>
      <link>http://snippets.dzone.com/posts/show/5475</link>
      <description>// description of your code here&lt;br /&gt;Hello,&lt;br /&gt;&lt;br /&gt;This is a port of a php class used to generate XML taconite command documents, useful for (very) easy and powerful ajaxy stuff, if you don't know what that is just check it there in french : http://www.desfrenes.com/playground/taconite/ or there in english : http://www.malsup.com/jquery/taconite/.&lt;br /&gt;&lt;br /&gt;Basically what it does is generate an XML document that is later processed by a javascript plugin which executes a serie of DOM modifications.&lt;br /&gt;&lt;br /&gt;About the code, I'm a Django beginner as well as a Python beginner so kind advices are welcome.&lt;br /&gt;&lt;br /&gt;Cheers. &lt;br /&gt;&lt;code&gt;&lt;br /&gt;# usage:&lt;br /&gt;#&lt;br /&gt;# t = Taconite()&lt;br /&gt;#&lt;br /&gt;# t.append("#toto","&lt;label&gt;test&lt;/label&gt;")&lt;br /&gt;# t.remove("#tutu")&lt;br /&gt;# t.js('alert("hello world");')&lt;br /&gt;# t.toggleClass('blue','body')&lt;br /&gt;# t.css("body","background-color","white")&lt;br /&gt;# [...]&lt;br /&gt;# print t.toprettyxml()&lt;br /&gt;&lt;br /&gt;import xml.dom.minidom as dom&lt;br /&gt;&lt;br /&gt;class Taconite(dom.Document):&lt;br /&gt;    def __init__(self):&lt;br /&gt;        dom.Document.__init__(self)&lt;br /&gt;        taconite = self.createElement("taconite")&lt;br /&gt;        self.appendChild(taconite)&lt;br /&gt;&lt;br /&gt;    def __str__(self):&lt;br /&gt;        return self.toxml(encoding="utf-8")&lt;br /&gt;    &lt;br /&gt;    def camelizeCssProperty(self,property):&lt;br /&gt;        words = property.split('-')&lt;br /&gt;        camelized = words[0].lower()&lt;br /&gt;        for word in words[1:] :&lt;br /&gt;            camelized = camelized + word[0].upper() + word[1:]&lt;br /&gt;        return camelized&lt;br /&gt;    &lt;br /&gt;    def js(self,script):&lt;br /&gt;        command = self.createElement("eval")&lt;br /&gt;        js = self.createTextNode(script)&lt;br /&gt;        command.appendChild(js)&lt;br /&gt;        self.childNodes[0].appendChild(command)&lt;br /&gt;    &lt;br /&gt;    def changeContentCommand(self,method,selector,content):&lt;br /&gt;        html_dom = dom.parseString(content)&lt;br /&gt;        command = self.createElement(method)&lt;br /&gt;        command.setAttribute("select",selector)&lt;br /&gt;        command.appendChild(html_dom.childNodes[0])&lt;br /&gt;        self.childNodes[0].appendChild(command)&lt;br /&gt;    &lt;br /&gt;    def changeStateCommand(self,action,selector):&lt;br /&gt;        command = self.createElement(action)&lt;br /&gt;        command.setAttribute("select",selector)&lt;br /&gt;        self.childNodes[0].appendChild(command)&lt;br /&gt;    &lt;br /&gt;    def CssCommand(self,action,css_class,selector):&lt;br /&gt;        command1 = self.createElement(action)&lt;br /&gt;        command1.setAttribute("select",selector)&lt;br /&gt;        command1.setAttribute("arg1",css_class)&lt;br /&gt;        command2 = self.createElement(action)&lt;br /&gt;        command2.setAttribute("select",selector)&lt;br /&gt;        command2.setAttribute("value",css_class)&lt;br /&gt;        self.childNodes[0].appendChild(command1)&lt;br /&gt;        self.childNodes[0].appendChild(command2)&lt;br /&gt;    &lt;br /&gt;    def addClass(self,css_class,selector):&lt;br /&gt;        self.CssCommand("addClass",css_class,selector)&lt;br /&gt;&lt;br /&gt;    def removeClass(self,css_class,selector):&lt;br /&gt;        self.CssCommand("remove",css_class,selector)&lt;br /&gt;&lt;br /&gt;    def toggleClass(self,css_class,selector):&lt;br /&gt;        self.CssCommand("toggleClass",css_class,selector)&lt;br /&gt;    &lt;br /&gt;    def append(self,selector,content):&lt;br /&gt;        self.changeContentCommand("append",selector,content)&lt;br /&gt;    &lt;br /&gt;    def prepend(self,selector,content):&lt;br /&gt;        self.changeContentCommand("prepend",selector,content)&lt;br /&gt;        &lt;br /&gt;    &lt;br /&gt;    def before(self,selector,content):&lt;br /&gt;        self.changeContentCommand("before",selector,content)&lt;br /&gt;        &lt;br /&gt;    &lt;br /&gt;    def after(self,selector,content):&lt;br /&gt;        self.changeContentCommand("after",selector,content)&lt;br /&gt;    &lt;br /&gt;    def wrap(self,selector,content):&lt;br /&gt;        self.changeContentCommand("wrap",selector,content)&lt;br /&gt;    &lt;br /&gt;    def replace(self,selector,content):&lt;br /&gt;        self.changeContentCommand("replace",selector,content)&lt;br /&gt;    &lt;br /&gt;    def replaceContent(self,selector,content):&lt;br /&gt;        self.changeContentCommand("replaceContent",selector,content)&lt;br /&gt;    &lt;br /&gt;    def remove(self,selector):&lt;br /&gt;        self.changeStateCommand("remove",selector)&lt;br /&gt;    &lt;br /&gt;    def show(self,selector):&lt;br /&gt;        self.changeStateCommand("show",selector)&lt;br /&gt;    &lt;br /&gt;    def hide(self,selector):&lt;br /&gt;        self.changeStateCommand("hide",selector)&lt;br /&gt;    &lt;br /&gt;    def removeContent(self,selector):&lt;br /&gt;        self.changeStateCommand("empty",selector)&lt;br /&gt;    &lt;br /&gt;    def css(self,selector,property,value):&lt;br /&gt;        command = self.createElement("css")&lt;br /&gt;        command.setAttribute("select",selector)&lt;br /&gt;        command.setAttribute("name",self.camelizeCssProperty(property))&lt;br /&gt;        command.setAttribute("value",value)&lt;br /&gt;        self.childNodes[0].appendChild(command)&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 08 May 2008 02:50:20 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5475</guid>
      <author>desfrenes (desfrenes)</author>
    </item>
    <item>
      <title>Bootstrap Django templates out-of-framework</title>
      <link>http://snippets.dzone.com/posts/show/3339</link>
      <description>This is the quickest way I've found to bootstrap Django templates without using the entire framework.  This is suited for "plain-python" apps without using all the Django types.  You'll probably want to cache the Template returns for each given name, but here's the basics.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# Kick off django config machinery first&lt;br /&gt;from django.conf import settings&lt;br /&gt;settings.configure(TEMPLATE_DIRS=("/whatever/templates",))&lt;br /&gt;&lt;br /&gt;import django.template&lt;br /&gt;import django.template.loader&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def render(name, *values):&lt;br /&gt;    ctx = django.template.Context()&lt;br /&gt;    for d in values:&lt;br /&gt;        ctx.push()&lt;br /&gt;        ctx.update(d)&lt;br /&gt;&lt;br /&gt;    t = django.template.loader.get_template(name)&lt;br /&gt;    return t.render(ctx)&lt;br /&gt;&lt;br /&gt;print render('layout.tmpl', dict(title='User'), dict(name='Bob', gender='M'))&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 19 Jan 2007 22:22:23 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3339</guid>
      <author>sphivo (Mike Owens)</author>
    </item>
    <item>
      <title>Multi-lingual model in Django used for internationalizing content</title>
      <link>http://snippets.dzone.com/posts/show/2979</link>
      <description>The approach taken here gives each object (in this case a wiki Page) a language and a translation_of field.  These two fields can be added to any model that wants to add content translations.&lt;br /&gt;&lt;br /&gt;Pages are created in a default language. To translate a page, you create a new page and set the translation_of field to the page in the default language that you are translating.&lt;br /&gt;&lt;br /&gt;A set of helper methods allow you to get the root version of the page (in the default language), all translations of a page, or a specific translation. These are useful for adding translation links.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;LANGUAGE_CHOICES = (&lt;br /&gt;    ('en', 'English'),&lt;br /&gt;    ('nl', 'Nederlands')&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;class Page(models.Model):&lt;br /&gt;    language = models.CharField(maxlength=2, choices=LANGUAGE_CHOICES)&lt;br /&gt;    title = models.CharField(maxlength=60)&lt;br /&gt;    path = models.SlugField(prepopulate_from=('title',))&lt;br /&gt;    translation_of = models.ForeignKey('self', related_name='translation_set', limit_choices_to = {'language' : settings.DEFAULT_LANGUAGE}, blank=True, null=True, help_text="Select which page this is a translation of. Don't set this for english pages.", validator_list = [local_models.validate_translation_of])&lt;br /&gt;    content = models.TextField(blank=True)&lt;br /&gt;&lt;br /&gt;    def get_root_translation(self):&lt;br /&gt;        """Returns the root translation for this page.&lt;br /&gt;        &lt;br /&gt;        This page will be in the settings.DEFAULT_LANGUAGE."""&lt;br /&gt;        if self.translation_of is None:&lt;br /&gt;            return self&lt;br /&gt;        else:&lt;br /&gt;            return self.translation_of&lt;br /&gt;&lt;br /&gt;    def get_translations(self):&lt;br /&gt;        """Return all of the translations for this page."""&lt;br /&gt;        # If I am the root translation, just return all of my translations.&lt;br /&gt;        if self.translation_of is None:&lt;br /&gt;            return self.translation_set.all()&lt;br /&gt;        else:&lt;br /&gt;            # If I am not the root, return the root translations, plus all of its&lt;br /&gt;            # translations, minus myself.&lt;br /&gt;            return Page.objects.filter(&lt;br /&gt;                models.Q(id=self.translation_of.id) | &lt;br /&gt;                models.Q(translation_of=self.translation_of.id)).exclude(pk=self.id)&lt;br /&gt;                &lt;br /&gt;    def get_translation(self, language):&lt;br /&gt;        """Return a specific translation of this page."""&lt;br /&gt;        if self.language == language:&lt;br /&gt;            return self&lt;br /&gt;        # If I am the root translation, search for translations of me in the given language&lt;br /&gt;        elif self.translation_of is None:&lt;br /&gt;            try:&lt;br /&gt;                return Page.objects.get(translation_of=self.id, language=language)&lt;br /&gt;            except Page.DoesNotExist:&lt;br /&gt;                return None&lt;br /&gt;        # Find the root page and the specific translation&lt;br /&gt;        else:&lt;br /&gt;            # If am not the root, find the root page with the given language,&lt;br /&gt;            # otherwise find the page that is a translation of me in the given language&lt;br /&gt;            return Page.objects.filter(&lt;br /&gt;                models.Q(id=self.translation_of.id) |&lt;br /&gt;                models.Q(translation_of=self.translation_of.id),&lt;br /&gt;                language=language)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;In local_models.py there's this validator to check if the translation_of attribute was not set for pages in the default language:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;def validate_translation_of(field_data, all_data):&lt;br /&gt;  if field_data is not None and len(str(field_data)) &gt; 0 and all_data['language'] == settings.DEFAULT_LANGUAGE:&lt;br /&gt;    raise validators.ValidationError("Do not set the translation for english pages.")&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 08 Nov 2006 16:44:56 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2979</guid>
      <author>fdb (Frederik De Bleser)</author>
    </item>
  </channel>
</rss>
