projects/models.py @ 444fa384fab8

Got a working photoblog (almost).
author Steve Losh <steve@stevelosh.com>
date Sat, 14 Feb 2009 12:39:39 -0500
parents c6f37ebd2f3e
children a3380ed37242
from django.db import models
import datetime


class Project(models.Model):
    """A model of a project."""
    
    name = models.CharField(blank=False, max_length=140)
    snip = models.CharField(blank=False, max_length=140)
    type = models.CharField(blank=True, max_length=15)
    body = models.TextField(blank=True)
    posted = models.DateTimeField(blank=False, default=datetime.datetime.now)
    slug = models.SlugField()
    
    @models.permalink
    def get_absolute_url(self):
        return ('project-view', (self.slug,),)
    
    def __unicode__(self):
        return u"%s" % (self.name,)


class ProjectFile(models.Model):
    """A single file for a project."""
    
    title = models.CharField(blank=False, max_length=140)
    description = models.TextField(blank=True, null=True)
    file = models.FileField(upload_to='storage/projects/files')
    project = models.ForeignKey(Project)
    
    def __unicode__(self):
        return u"%s - %s" % (self.project.name, self.title)


class ProjectPhoto(models.Model):
    """A single photograph for a project."""
    
    title = models.CharField(blank=False, max_length=140)
    description = models.TextField(blank=True, null=True)
    height = models.IntegerField(blank=True, null=True)
    width = models.IntegerField(blank=True, null=True)
    photo = models.ImageField(upload_to='storage/projects/images',
                              height_field='height', width_field='width')
    project = models.ForeignKey(Project)
    position = models.IntegerField(blank=True, null=True)
    
    def __unicode__(self):
        return u"%s - %s" % (self.project.name, self.title)


class Comment(models.Model):
    name = models.CharField(blank=False, null=False, max_length=40)
    body = models.TextField(blank=False, null=False)
    submitted = models.DateTimeField(default=datetime.datetime.now)
    project = models.ForeignKey(Project)
    spam = models.BooleanField(default=False)
    
    def get_absolute_url(self):
        return self.project.get_absolute_url() + "#comment-" + str(self.id)
    
    def __unicode__(self):
        return u'%s on %s' % (self.name, self.project.name)