Skip to content

Instantly share code, notes, and snippets.

@andreasnuesslein
Created July 29, 2022 08:39
Show Gist options
  • Save andreasnuesslein/7abee778be1c0869f14e153d8f91f212 to your computer and use it in GitHub Desktop.
Save andreasnuesslein/7abee778be1c0869f14e153d8f91f212 to your computer and use it in GitHub Desktop.
Find wagtail Pages that have specific block types in their Streamfields
from django.core.management.base import BaseCommand
from wagtail.core.models import Page
SF_CLASS_NAMES = [
"StreamField",
"TranslationStreamField",
"TranslationNoWrapsStreamField",
"NoWrapsStreamField",
]
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument("blocktype", type=str)
def handle(self, *args, **options):
blocktype = options["blocktype"]
for page in Page.objects.all().specific():
for field in page._meta.fields:
if field.__class__.__name__ not in SF_CLASS_NAMES:
continue
sfield = getattr(page, field.name)
if f"'type': '{blocktype}'" in str(sfield.raw_data):
print(page, page.get_url())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment