Skip to content

Instantly share code, notes, and snippets.

@bradrice
Created August 15, 2019 15:52
Show Gist options
  • Save bradrice/00dedcf4cabfc7b55a188cc88811896f to your computer and use it in GitHub Desktop.
Save bradrice/00dedcf4cabfc7b55a188cc88811896f to your computer and use it in GitHub Desktop.
snippets for resources
from django.db import models
from django.shortcuts import render
from modelcluster.fields import ParentalKey
from wagtail.core.models import Page, Orderable
from wagtail.core.fields import RichTextField
from wagtail.admin.edit_handlers import (
FieldPanel,
PageChooserPanel,
MultiFieldPanel,
InlinePanel
)
from wagtail.images.edit_handlers import ImageChooserPanel
from wagtail.snippets.edit_handlers import SnippetChooserPanel
from wagtail.contrib.routable_page.models import RoutablePageMixin, route
from wagtail.snippets.models import register_snippet
import uuid
class Resource(models.Model):
"""Snippet for Resources"""
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
resource_name = models.CharField(max_length=128, blank=False, null=True)
phone_number = models.CharField(max_length=12, blank=True, null=True)
website = models.URLField(blank=True, null=True)
info = RichTextField(blank=True, null=True)
panels = [
MultiFieldPanel(
[
FieldPanel("resource_name"),
FieldPanel("phone_number"),
],
heading="Resource information"
),
MultiFieldPanel(
[
FieldPanel('website')
],
heading="Links"
),
MultiFieldPanel(
[
FieldPanel('info')
],
heading="Info"
),
MultiFieldPanel(
[
InlinePanel("category")
]
)
]
def __str__(self):
"""String representation of this class"""
return self.resource_name
class Meta:
verbose_name = "Resource"
verbose_name_plural = "Resources"
register_snippet(Resource)
class ResourceCatsOrderable(Orderable):
"""child category for multiple category choices"""
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
resource = ParentalKey('home.Resource', related_name="resource")
category = models.ForeignKey('home.ResourceCategory', on_delete=models.CASCADE, null=True, blank=True)
panels = [
SnippetChooserPanel("category")
]
class ResourceCategory(models.Model):
"""Snippet for Resources"""
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
category_name = models.CharField(max_length=128, blank=False, null=True)
panels = [
MultiFieldPanel(
[
FieldPanel('category_name')
],
heading="Category"
)
]
def __str__(self):
"""String representation of this class"""
return self.category_name
class Meta:
verbose_name = "Category"
verbose_name_plural = "Categories"
register_snippet(ResourceCategory)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment