class NotesPage(Page):
date = models.DateField("Post date")
intro = models.CharField(max_length=250)
#body = RichTextField(blank=True)
tags = ClusterTaggableManager(through=NotePageTag, blank=True)
categories = ParentalManyToManyField('study_notes.NoteCategory', blank=True)
body = StreamField([
('heading', CharBlock(form_classname="title")),
('paragraph', RichTextBlock()),
('image', ImageChooserBlock()),
('code', CodeBlock(label="Code")),
('equation', MathBlock())
], use_json_field=True)
search_fields = Page.search_fields + [
index.SearchField('intro'),
index.SearchField('body'),
]
content_panels = Page.content_panels + [
MultiFieldPanel([
FieldPanel('date'),
FieldPanel('tags'),
FieldPanel('categories', widget=forms.CheckboxSelectMultiple),
], heading="Note information"),
FieldPanel('intro'),
FieldPanel('body'),
InlinePanel('gallery_images', label="Gallery images"),
]
def get_context(self, request):
# Update context to include only published posts, ordered by reverse-chron
context = super().get_context(request)
context.update(BASE_CONTEXT)
return context
def main_image(self):
gallery_item = self.gallery_images.first()
if gallery_item:
return gallery_item.image
else:
return None