aboutsummaryrefslogtreecommitdiffstats
path: root/src/testapp/models.py
blob: 3960d00437019932777a18eed353cd6f1deb9736 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
from django.db import models
from django.template.defaultfilters import slugify
from datetime import datetime
import uuid

def uuid_str():
    return str(uuid.uuid1())

class ExampleModel(models.Model):
    num = models.IntegerField(default=2, choices=((1,'one'), (2, 'two')))
    hidden_num = models.IntegerField(verbose_name='Something', help_text='HELP')
    text = models.TextField(blank=False)
    another = models.CharField(max_length=10)


class ExampleContainer(models.Model):
    """Container.  Has a key, a name, and some internal data, and contains a set of items."""
    key = models.CharField(primary_key=True, default=uuid_str, max_length=36, editable=False)
    name = models.CharField(max_length=256)
    internal = models.IntegerField(default=0)

    @models.permalink
    def get_absolute_url(self):
        return ('testapp.views.ContainerInstance', [self.key])


class ExampleItem(models.Model):
    """Item.  Belongs to a container and has an index number and a note.
    Items are uniquely identified by their container and index number."""
    container = models.ForeignKey(ExampleContainer, related_name='items')
    index = models.IntegerField()
    note = models.CharField(max_length=1024)
    unique_together = (container, index)


class BlogPost(models.Model):
    slug = models.SlugField(editable=False, primary_key=True, default='blah')
    title = models.CharField(max_length=128)
    content = models.TextField()
    when = models.DateTimeField(editable=False)

    @models.permalink
    def get_absolute_url(self):
        return ('testapp.views.BlogPostInstance', (self.slug,))

    def save(self, *args, **kwargs):
        self.slug = slugify(self.title)
        self.when = datetime.now()
        super(self.__class__, self).save(*args, **kwargs)


class Comment(models.Model):
    blogpost = models.ForeignKey(BlogPost, related_name='comments')
    name = models.CharField(max_length=128)
    content = models.TextField()
    when = models.DateTimeField(auto_now_add=True)

    @models.permalink
    def get_absolute_url(self):
        return ('testapp.views.CommentInstance', (self.blogpost.slug, self.id))
   
    def save(self):
        self.index = self.blogpost.comments.count()