diff options
Diffstat (limited to 'app/posts/models.py')
-rw-r--r-- | app/posts/models.py | 63 |
1 files changed, 30 insertions, 33 deletions
diff --git a/app/posts/models.py b/app/posts/models.py index 0d93482..37c4c9b 100644 --- a/app/posts/models.py +++ b/app/posts/models.py @@ -25,7 +25,7 @@ from django_comments.moderation import CommentModerator, moderator from taggit.managers import TaggableManager from normalize.models import RelatedPost -from media.models import LuxImage, LuxImageSize +from media.models import LuxImage, LuxImageSize, LuxAudio from books.models import Book #from fieldnotes.models import FieldNote from taxonomy.models import TaggedItems, Category @@ -37,16 +37,12 @@ def get_upload_path(self, filename): class PostType(models.IntegerChoices): - FIELD_TEST = 0, ('field test') - REVIEW = 1, ('review') - ESSAY = 2, ('essay') - SRC = 3, ('src') - JRNL = 4, ('jrnl') - FIELD_NOTE = 5, ('field note') + PODCAST = 0, ('Podcast') + JRNL = 1, ('jrnl') + FIELD_NOTE = 2, ('field note') class Post(models.Model): - site = models.ForeignKey(Site, on_delete=models.CASCADE) title = models.CharField(max_length=200) short_title = models.CharField(max_length=200, blank=True, null=True) subtitle = models.CharField(max_length=200, blank=True) @@ -68,16 +64,8 @@ class Post(models.Model): ) status = models.IntegerField(choices=PUB_STATUS, default=0) featured_image = models.ForeignKey(LuxImage, on_delete=models.CASCADE, null=True, blank=True) - TEMPLATES = ( - (0, 'single'), - (1, 'double'), - (2, 'single-dark'), - (3, 'double-dark'), - (4, 'single-black'), - (5, 'double-black'), - ) + featured_audio = models.ForeignKey(LuxAudio, on_delete=models.CASCADE, null=True, blank=True) post_type = models.IntegerField(choices=PostType.choices, default=PostType.JRNL) - template_name = models.IntegerField(choices=TEMPLATES, default=0) has_video = models.BooleanField(blank=True, default=False) has_code = models.BooleanField(blank=True, default=False) disclaimer = models.BooleanField(blank=True, default=False) @@ -86,6 +74,7 @@ class Post(models.Model): topics = models.ManyToManyField(Category, blank=True) originally_published_by = models.CharField(max_length=400, null=True, blank=True) originally_published_by_url = models.CharField(max_length=400, null=True, blank=True) + issue = models.PositiveIntegerField(null=True) class Meta: ordering = ('-pub_date',) @@ -95,8 +84,10 @@ class Post(models.Model): return self.title def get_absolute_url(self): - if self.post_type == 0: - return reverse('guides:reviews:review-detail', kwargs={"slug": self.slug}) + if self.post_type == PostType.JRNL: + return reverse('jrnl:detail', kwargs={"year": self.pub_date.year, "month": self.pub_date.strftime("%m"), "slug": self.slug}) + if self.post_type == PostType.PODCAST: + return reverse('podcasts:detail', kwargs={"episode": self.get_issue_str(), "slug": self.slug}) if self.post_type == 1: return reverse('guides:reviews:review-detail', kwargs={"slug": self.slug}) if self.post_type == 2: @@ -105,8 +96,6 @@ class Post(models.Model): return reverse('src:detail', kwargs={"slug": self.slug}) if self.post_type == 5: return reverse('fieldnote:detail', kwargs={"year": self.pub_date.year, "month": self.pub_date.strftime("%m"), "slug": self.slug}) - if self.post_type == PostType.JRNL: - return reverse('jrnl:detail', kwargs={"year": self.pub_date.year, "month": self.pub_date.strftime("%m"), "slug": self.slug}) def comment_period_open(self): return self.enable_comments and datetime.datetime.today() - datetime.timedelta(30) <= self.pub_date @@ -117,6 +106,14 @@ class Post(models.Model): def get_content_type(self): return ContentType.objects.get(app_label="posts", model="post") + def get_issue_str(self): + issue = self.issue + if self.issue < 100: + issue = "0%s" % self.issue + if self.issue < 10: + issue = "00%s" % self.issue + return issue + @property def get_previous_published(self): return self.get_previous_by_pub_date(status__exact=1,post_type=self.post_type) @@ -179,19 +176,19 @@ class Post(models.Model): if self.prologue_html: self.prologue_html = markdown_to_html(self.prologue_markdown) self.has_video = parse_video(self.body_html) - if created and not self.featured_image: - if self.post_type == PostType.FIELD_NOTE: - self.featured_image = extract_main_image(self.body_markdown) - else: - self.featured_image = LuxImage.objects.latest() + #if created and not self.featured_image: + # if self.post_type == PostType.FIELD_NOTE: + # self.featured_image = extract_main_image(self.body_markdown) + # else: + # self.featured_image = LuxImage.objects.latest() old = type(self).objects.get(pk=self.pk) if self.pk else None - if old and old.featured_image != self.featured_image: # Field has changed - if self.featured_image: - s = LuxImageSize.objects.get(name="featured_jrnl") - ss = LuxImageSize.objects.get(name="picwide-med") - self.featured_image.sizes.add(s) - self.featured_image.sizes.add(ss) - self.featured_image.save() + #if old and old.featured_image != self.featured_image: # Field has changed + # if self.featured_image: + # s = LuxImageSize.objects.get(name="featured_jrnl") + # ss = LuxImageSize.objects.get(name="picwide-med") + # self.featured_image.sizes.add(s) + # self.featured_image.sizes.add(ss) + # self.featured_image.save() if old and old.title != self.title or old and old.slug != self.slug: related, c = RelatedPost.objects.get_or_create(model_name=self.get_content_type(), entry_id = self.id, pub_date=self.pub_date) related.title = self.title |