diff options
author | luxagraf <sng@luxagraf.net> | 2015-10-28 14:49:07 -0400 |
---|---|---|
committer | luxagraf <sng@luxagraf.net> | 2015-10-28 14:49:07 -0400 |
commit | 6424135f9233c6a7c9139859ebb465de0e84a898 (patch) | |
tree | e7558965f002bc82d5be7c382885e0ba3b9057da /app/src/models.py | |
parent | ec7ff6d1f8ab27fe475f680bf84feb580080d712 (diff) |
added the src app to port all technical writing over from longhandpixels
Diffstat (limited to 'app/src/models.py')
-rw-r--r-- | app/src/models.py | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/app/src/models.py b/app/src/models.py new file mode 100644 index 0000000..f7362cb --- /dev/null +++ b/app/src/models.py @@ -0,0 +1,93 @@ +from django.db import models +from blog.models import image_url_replace, extract_images +import markdown + +class Topic(models.Model): + name = models.CharField(max_length=60) + slug = models.SlugField() + pluralized_name = models.CharField(max_length=60) + + def __str__(self): + return self.name + + +class Entry(models.Model): + title = models.CharField(max_length=200) + slug = models.SlugField(unique_for_date='pub_date') + body_html = models.TextField(blank=True) + body_markdown = models.TextField() + pub_date = models.DateTimeField('Date published') + topics = models.ManyToManyField(Topic, blank=True) + last_updated = models.DateTimeField(auto_now=True) + enable_comments = models.BooleanField(default=False) + PUB_STATUS = ( + (0, 'Draft'), + (1, 'Published'), + ) + status = models.IntegerField(choices=PUB_STATUS, default=0) + meta_description = models.CharField(max_length=256, null=True, blank=True) + TEMPLATES = ( + (0, 'default'), + ) + template_name = models.IntegerField(choices=TEMPLATES, default=0) + + class Meta: + ordering = ('-pub_date',) + get_latest_by = 'pub_date' + verbose_name_plural = 'entries' + + def __str__(self): + return self.title + + def get_absolute_url(self): + return "/src/%s" % self.slug + + def comment_period_open(self): + return self.enable_comments and datetime.datetime.today() - datetime.timedelta(30) <= self.pub_date + + + def get_images(self): + return extract_images(self.body_html) + + @property + def get_previous_published(self): + return self.get_previous_by_pub_date(status__exact=1) + + @property + def get_next_published(self): + return self.get_next_by_pub_date(status__exact=1) + + def save(self): + md = image_url_replace(self.body_markdown) + self.body_html = markdown.markdown(md, extensions=['extra'], safe_mode=False) + super(Entry, self).save() + + +def get_upload_path(self, filename): + return "images/src/%s" % filename + + +class Book(models.Model): + title = models.CharField(max_length=200) + image = models.FileField(blank=True, null=True, upload_to=get_upload_path) + slug = models.SlugField(unique_for_date='pub_date') + body_html = models.TextField(blank=True) + body_markdown = models.TextField() + pub_date = models.DateTimeField('Date published') + last_updated = models.DateTimeField(auto_now=True) + PUB_STATUS = ( + (0, 'Draft'), + (1, 'Published'), + ) + status = models.IntegerField(choices=PUB_STATUS, default=0) + meta_description = models.CharField(max_length=256, null=True, blank=True) + + class Meta: + ordering = ('-pub_date',) + get_latest_by = 'pub_date' + + def __str__(self): + return self.title + + def get_absolute_url(self): + return "/src/books/%s" % (self.slug) |