module.exports = `# Model Fields

# Note: Optional arguments are using defaults that match what Django will use
# as a default, e.g. with max_length fields.  Doing this as a form of self
# documentation and to make it easy to know whether you should override the
# default or not.

# Note: Optional arguments that are booleans will use the opposite since you
# can either not specify them, or override them, e.g. auto_now_add=False.

snippet auto
	\${1:FIELDNAME} = models.AutoField(\${2})
snippet bool
	\${1:FIELDNAME} = models.BooleanField(\${2:default=True})
snippet char
	\${1:FIELDNAME} = models.CharField(max_length=\${2}\${3:, blank=True})
snippet comma
	\${1:FIELDNAME} = models.CommaSeparatedIntegerField(max_length=\${2}\${3:, blank=True})
snippet date
	\${1:FIELDNAME} = models.DateField(\${2:auto_now_add=True, auto_now=True}\${3:, blank=True, null=True})
snippet datetime
	\${1:FIELDNAME} = models.DateTimeField(\${2:auto_now_add=True, auto_now=True}\${3:, blank=True, null=True})
snippet decimal
	\${1:FIELDNAME} = models.DecimalField(max_digits=\${2}, decimal_places=\${3})
snippet email
	\${1:FIELDNAME} = models.EmailField(max_length=\${2:75}\${3:, blank=True})
snippet file
	\${1:FIELDNAME} = models.FileField(upload_to=\${2:path/for/upload}\${3:, max_length=100})
snippet filepath
	\${1:FIELDNAME} = models.FilePathField(path=\${2:"/abs/path/to/dir"}\${3:, max_length=100}\${4:, match="*.ext"}\${5:, recursive=True}\${6:, blank=True, })
snippet float
	\${1:FIELDNAME} = models.FloatField(\${2})
snippet image
	\${1:FIELDNAME} = models.ImageField(upload_to=\${2:path/for/upload}\${3:, height_field=height, width_field=width}\${4:, max_length=100})
snippet int
	\${1:FIELDNAME} = models.IntegerField(\${2})
snippet ip
	\${1:FIELDNAME} = models.IPAddressField(\${2})
snippet nullbool
	\${1:FIELDNAME} = models.NullBooleanField(\${2})
snippet posint
	\${1:FIELDNAME} = models.PositiveIntegerField(\${2})
snippet possmallint
	\${1:FIELDNAME} = models.PositiveSmallIntegerField(\${2})
snippet slug
	\${1:FIELDNAME} = models.SlugField(max_length=\${2:50}\${3:, blank=True})
snippet smallint
	\${1:FIELDNAME} = models.SmallIntegerField(\${2})
snippet text
	\${1:FIELDNAME} = models.TextField(\${2:blank=True})
snippet time
	\${1:FIELDNAME} = models.TimeField(\${2:auto_now_add=True, auto_now=True}\${3:, blank=True, null=True})
snippet url
	\${1:FIELDNAME} = models.URLField(\${2:verify_exists=False}\${3:, max_length=200}\${4:, blank=True})
snippet xml
	\${1:FIELDNAME} = models.XMLField(schema_path=\${2:None}\${3:, blank=True})
# Relational Fields
snippet fk
	\${1:FIELDNAME} = models.ForeignKey(\${2:OtherModel}\${3:, related_name=''}\${4:, limit_choices_to=}\${5:, to_field=''})
snippet m2m
	\${1:FIELDNAME} = models.ManyToManyField(\${2:OtherModel}\${3:, related_name=''}\${4:, limit_choices_to=}\${5:, symmetrical=False}\${6:, through=''}\${7:, db_table=''})
snippet o2o
	\${1:FIELDNAME} = models.OneToOneField(\${2:OtherModel}\${3:, parent_link=True}\${4:, related_name=''}\${5:, limit_choices_to=}\${6:, to_field=''})

# Code Skeletons

snippet form
	class \${1:FormName}(forms.Form):
		"""\${2:docstring}"""
		\${3}

snippet model
	class \${1:ModelName}(models.Model):
		"""\${2:docstring}"""
		\${3}
		
		class Meta:
			\${4}
		
		def __unicode__(self):
			\${5}
		
		def save(self, force_insert=False, force_update=False):
			\${6}
		
		@models.permalink
		def get_absolute_url(self):
			return ('\${7:view_or_url_name}' \${8})

snippet modeladmin
	class \${1:ModelName}Admin(admin.ModelAdmin):
		\${2}
	
	admin.site.register(\$1, \$1Admin)
	
snippet tabularinline
	class \${1:ModelName}Inline(admin.TabularInline):
		model = \$1

snippet stackedinline
	class \${1:ModelName}Inline(admin.StackedInline):
		model = \$1

snippet r2r
	return render_to_response('\${1:template.html}', {
			\${2}
		}\${3:, context_instance=RequestContext(request)}
	)
`;
