summaryrefslogtreecommitdiff
path: root/app/tutorials/models.py
blob: 7c7570cb885ade7e8d6c624ef3906e600f350e67 (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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
from django.db import models
from django.urls import reverse
from django.contrib.sitemaps import Sitemap
import datetime
from itertools import chain

from taggit.managers import TaggableManager

from utils.util import render_images, markdown_to_html
from taxonomy.models import TaggedItems


class Tutorial(models.Model):
    title = models.CharField(max_length=200)
    sub_title = models.CharField(max_length=200, blank=True)
    slug = models.SlugField(unique_for_date='pub_date')
    body_html = models.TextField(blank=True)
    body_markdown = models.TextField()
    pub_date = models.DateTimeField('Date published')
    tags = TaggableManager(through=TaggedItems, blank=True, help_text='Topics Covered')
    last_updated = models.DateTimeField(auto_now=True)
    enable_comments = models.BooleanField(default=False)
    has_code = 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)

    class Meta:
        ordering = ('-pub_date',)
        get_latest_by = 'pub_date'
        verbose_name_plural = 'posts'

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('src:detail', kwargs={"slug": self.slug})

    def comment_period_open(self):
        return self.enable_comments and datetime.datetime.today() - datetime.timedelta(30) <= self.pub_date

    @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 = render_images(self.body_markdown)
        #self.body_html = markdown_to_html(md)
        super(Tutorial, self).save()


class TutorialSitemap(Sitemap):
    changefreq = "never"
    priority = 1.0
    protocol = "https"

    def items(self):
        return Tutorial.objects.filter(status=1)

    def lastmod(self, obj):
        return obj.pub_date
def get_upload_path(self, filename):
    return "images/src/%s" % filename


'''class SrcDemo(models.Model):
    title = models.CharField(max_length=254)
    slug = models.SlugField()
    body = models.TextField(blank=True, null=True)
    head = models.TextField(blank=True, null=True)
    DEMO_TEMPLATES = (
        (0, 'Blank'),
        (1, 'Basic_light'),
    )
    template = models.IntegerField(choices=DEMO_TEMPLATES, default=0)
    pub_date = models.DateTimeField('Date published', blank=True)

    class Meta:
        verbose_name_plural = "Demos"
        app_label = 'projects'
        ordering = ('-pub_date',)

    def save(self):
        if not self.id:
            self.pub_date = datetime.datetime.now()
        super(SrcDemo, self).save()
'''


class SrcSitemap(Sitemap):
    changefreq = "never"
    priority = 0.7
    protocol = "https"

    def items(self):
        return list(chain(
            Post.objects.filter(status=1),
            Topic.objects.all()
        ))

    def lastmod(self, obj):
        return obj.pub_date