simple-module-pagebuilder 0.0.8__tar.gz → 0.0.9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/PKG-INFO +1 -1
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/package.json +1 -1
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/public_views.py +5 -2
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/seo.py +4 -2
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/tenancy.py +26 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pyproject.toml +1 -1
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_tenancy_public.py +37 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/.gitignore +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/README.md +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/__init__.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/board.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/boot.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/ConfirmDialog.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/DiffSummary.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/NewPageDialog.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/NoteDialog.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/PageBoard.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/PageBoardCard.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/PageListFilters.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/PageListRow.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/ScheduledBadge.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/StatusBadge.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/TranslatePageDialog.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/blockRegistry.test.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/blockRegistry.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/blocks/Button.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/blocks/Columns.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/blocks/Heading.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/blocks/Image.test.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/blocks/Image.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/blocks/MediaPicker.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/blocks/Spacer.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/blocks/Text.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/editor/BlockOutline.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/editor/NarrowCanvas.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/editor/PageActions.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/editor/PageEditorToolbar.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/editor/PageInspectorDrawer.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/editor/PageSettingsPanel.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/editor/RevisionHistoryPanel.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/editor/SchedulePanel.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/editor/SeoPreview.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/editor/SeoSettingsPanel.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/editor/TranslationsPanel.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/layoutPuckConfig.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/lazyBlock.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/localizeConfig.test.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/localizeConfig.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/media/MediaFilters.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/media/MediaFolderSidebar.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/media/MediaGrid.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/media/MediaHeader.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/media/MediaUploadQueue.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/media/MediaUsageList.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/media/types.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/migrateContent.test.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/migrateContent.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/puckConfig.test.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/puckConfig.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/snapshots/ImportPlanSummary.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/snapshots/SnapshotList.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/snapshots/UploadBundleDialog.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/snapshots/planSummary.test.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/snapshots/planSummary.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgetCatalog.test.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgetCatalog.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_internal/accent-text.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_internal/disclosure-chevron.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_internal/eyebrow-split-section.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_internal/link-arrow.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_internal/rich-text.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_internal/solid-icons.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_shared/background-media.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_shared/content-media.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_shared/cta-button.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_shared/empty-placeholder.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_shared/eyebrow-text.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_shared/heading.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_shared/image-srcset.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_shared/index.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_shared/mask.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_shared/section.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_shared/social-icon.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_shared/text-link.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/accordion-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/alert-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/app-store-badges-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/article-cards-render.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/article-cards-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/call-to-action-render.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/call-to-action-styles.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/call-to-action-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/carousel-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/centered-hero-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/colored-action-list-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/column-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/contact-cards-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/contact-form-render.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/contact-form-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/container-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/definition-list-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/divider-widget.test.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/divider-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/eyebrow-section-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/faq-render.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/faq-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/feature-card-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/feature-cards-render.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/feature-cards-styles.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/feature-cards-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/feature-grid-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/feature-showcase-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/gallery-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/grid-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/hero-widget-props.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/hero-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/html-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/iframe-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/leaderboard-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/list-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/logo-cloud-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/markdown-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/media-object-layout.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/media-object-render.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/media-object-text.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/media-object-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/newsletter-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/page-header-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/prose-section-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/quote-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/row-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/section-intro-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/signup-banner-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/simple-action-list-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/site-footer-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/site-header-nav.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/site-header-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/social-banner-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/stats-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/steps-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/story-cards-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/table-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/tabs-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/tags-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/testimonial-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/timeline-layout.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/timeline-render.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/timeline-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/under-construction-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/video-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/welcome-widget.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/contracts/__init__.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/contracts/events.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/contracts/schemas/__init__.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/contracts/schemas/_layout.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/contracts/schemas/_media.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/contracts/schemas/_pages.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/contracts/schemas/_snapshots.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/conversion/blocks-to-html.test.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/conversion/blocks-to-html.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/conversion/index.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/conversion/types.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/deps.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/diff.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/__init__.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/api/__init__.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/api/_deps.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/api/layout.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/api/media_detail.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/api/pages.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/api/revisions.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/api/snapshots.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/api/uploads.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/api/workflow.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/content_views.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/views.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/fields/checkbox-field.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/fields/file-picker/file-gallery.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/fields/file-picker/image-picker-field.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/fields/file-picker/index.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/fields/file-picker/types.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/fields/index.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/fields/media-adapter.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/hooks/useAutosave.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/hooks/useEditorForm.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/hooks/useIsNarrow.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/hooks/useMediaDetail.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/hooks/useMediaUploads.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/hooks/usePageRevisions.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/hooks/usePageSchedule.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/hooks/usePageWorkflow.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/hooks/usePendingDialog.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/hooks/useSnapshots.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/layout_service.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/locales/en.json +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/locales.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/media_files.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/media_images.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/media_queries.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/media_service.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/media_usage.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/models/__init__.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/models/_base.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/models/_layout.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/models/_media.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/models/_page.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/models/_redirect.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/models/_snapshot.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/module.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/pages/ContentImportReview.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/pages/ContentSnapshots.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/pages/LayoutEditor.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/pages/MediaDetail.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/pages/MediaLibrary.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/pages/PageEditor.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/pages/PageList.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/pages/PendingReview.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/pages/PublicPage.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/pages/Trash.tsx +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/permissions.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/public_claims.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/py.typed +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/redirects.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/scheduler.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/security.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/service/__init__.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/service/_common.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/service/_revisions.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/service/_translations.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/service/_trash.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/service/_workflow.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/services.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/settings.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/snapshots/__init__.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/snapshots/apply.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/snapshots/archive.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/snapshots/assets.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/snapshots/blobs.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/snapshots/capture.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/snapshots/format.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/snapshots/media_match.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/snapshots/pages.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/snapshots/plan.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/snapshots/service.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/snapshots/validate.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/static/widgets-base.css +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/translation/apply.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/translation/extract.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/translation/index.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/translation/translatable-fields.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/translation/translation.test.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/api.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/blockOutline.test.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/blockOutline.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/datetime.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/decorative-image.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/editorSnapshot.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/i18n.test.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/i18n.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/locale.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/markdown.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/measure.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/mediaApi.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/mediaFormat.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/pagesApi.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/parse-list.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/request.test.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/request.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/slugify.test.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/slugify.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/snapshotsApi.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/types.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/widgetUtils.ts +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/conftest.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/db_fixture.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/locale_fixture.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/page_helpers.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/pg_support.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/snapshot_fixture.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/tenant_app.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/tenant_fixture.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_admin_list_view.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_approval_workflow.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_auth_gating.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_csrf.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_draft_preview.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_hreflang_and_sitemap.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_i18n.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_image_processing.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_media_detail.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_media_files.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_media_security.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_media_usage_escaping.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_module.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_multilingual.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_page_templates.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_page_translations.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_pages_api.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_pages_search.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_public_claims.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_public_routes.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_public_view_headers.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_public_viewer.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_redirects.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_revision_notes_and_diff.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_revisions_api.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_scheduled_publish.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_scheduler_stop.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_scheduler_tenancy.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_seo_meta.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_settings_source.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_site_layout.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_sitemap_robots.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_apply.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_apply_media.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_archive.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_assets.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_blobs.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_capture.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_media_match.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_models.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_multilingual.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_page_payload.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_plan.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_validate.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_views.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshots_api.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_tenancy_blobs.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_tenancy_core.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_tenancy_isolation.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_tenancy_media.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_tenancy_routes.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_trash.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_trash_preconditions.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_uploads_api.py +0 -0
- {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tsconfig.json +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: simple_module_pagebuilder
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.9
|
|
4
4
|
Summary: Drag-and-drop visual page builder for simple_module apps
|
|
5
5
|
Project-URL: Repository, https://github.com/antosubash/simple_module_python_modules
|
|
6
6
|
Author-email: Anto Subash <antosubash@live.com>
|
|
@@ -28,7 +28,7 @@ from pagebuilder.deps import get_settings
|
|
|
28
28
|
from pagebuilder.layout_service import LayoutService, public_layout_props
|
|
29
29
|
from pagebuilder.service import PagesService
|
|
30
30
|
from pagebuilder.settings import PagebuilderSettings
|
|
31
|
-
from pagebuilder.tenancy import bind_public
|
|
31
|
+
from pagebuilder.tenancy import bind_public, vary_on_tenant
|
|
32
32
|
|
|
33
33
|
_PAGE_PUBLIC = "PageBuilder/PublicPage"
|
|
34
34
|
|
|
@@ -167,7 +167,8 @@ async def render_public_page(
|
|
|
167
167
|
# the exact thing recording a redirect exists to prevent.
|
|
168
168
|
claimed = await public_claims.claimed_url(db, moved_to, active)
|
|
169
169
|
target = claimed or locales.public_path(prefix, moved_to, active)
|
|
170
|
-
|
|
170
|
+
# A 301 is cacheable by default; key it on what picks the tenant.
|
|
171
|
+
return vary_on_tenant(RedirectResponse(target, status_code=301), request.app)
|
|
171
172
|
raise HTTPException(status_code=404, detail="Page not found")
|
|
172
173
|
|
|
173
174
|
layout = await LayoutService(db).get()
|
|
@@ -181,6 +182,8 @@ async def render_public_page(
|
|
|
181
182
|
def apply_headers(response: Response) -> Response:
|
|
182
183
|
response.headers["ETag"] = etag
|
|
183
184
|
response.headers["Vary"] = "X-Inertia"
|
|
185
|
+
# On a multi-tenant host the tenant can come from the session, not the Host.
|
|
186
|
+
vary_on_tenant(response, request.app)
|
|
184
187
|
response.headers["Cache-Control"] = cache_control
|
|
185
188
|
# Which language was negotiated, for caches and for anything reading
|
|
186
189
|
# the response without parsing the body.
|
{simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/seo.py
RENAMED
|
@@ -19,7 +19,7 @@ from pagebuilder import locales, public_claims
|
|
|
19
19
|
from pagebuilder.deps import get_settings
|
|
20
20
|
from pagebuilder.service import PagesService
|
|
21
21
|
from pagebuilder.settings import PagebuilderSettings
|
|
22
|
-
from pagebuilder.tenancy import bind_public
|
|
22
|
+
from pagebuilder.tenancy import bind_public, vary_on_tenant
|
|
23
23
|
|
|
24
24
|
seo_router = APIRouter()
|
|
25
25
|
|
|
@@ -137,11 +137,13 @@ async def sitemap(
|
|
|
137
137
|
+ ("\n" if entries else "")
|
|
138
138
|
+ "</urlset>\n"
|
|
139
139
|
)
|
|
140
|
-
|
|
140
|
+
response = Response(
|
|
141
141
|
content=body,
|
|
142
142
|
media_type="application/xml",
|
|
143
143
|
headers={"Cache-Control": f"public, max-age={settings.seo_cache_max_age}"},
|
|
144
144
|
)
|
|
145
|
+
# Tenant-bound: on a multi-tenant host the session can pick the tenant.
|
|
146
|
+
return vary_on_tenant(response, request.app)
|
|
145
147
|
|
|
146
148
|
|
|
147
149
|
@seo_router.get("/robots.txt", response_class=Response)
|
|
@@ -45,6 +45,8 @@ __all__ = [
|
|
|
45
45
|
"mode_of",
|
|
46
46
|
"resolve_admin",
|
|
47
47
|
"resolve_public",
|
|
48
|
+
"tenant_vary",
|
|
49
|
+
"vary_on_tenant",
|
|
48
50
|
]
|
|
49
51
|
|
|
50
52
|
_log = logging.getLogger("simple_module.pagebuilder")
|
|
@@ -119,6 +121,30 @@ def configure(app: Any) -> TenancyMode:
|
|
|
119
121
|
return mode
|
|
120
122
|
|
|
121
123
|
|
|
124
|
+
def tenant_vary(app: Any) -> tuple[str, ...]:
|
|
125
|
+
"""The request headers that pick a public response's tenant.
|
|
126
|
+
|
|
127
|
+
``SINGLE``: none. ``MULTI``: on the apex host the framework falls back to
|
|
128
|
+
a member's session (``Cookie``) or the configured tenant header, so the
|
|
129
|
+
same Host + URL answers with different tenants' content and a shared
|
|
130
|
+
cache has to key on them too.
|
|
131
|
+
"""
|
|
132
|
+
if mode_of(app) is TenancyMode.SINGLE:
|
|
133
|
+
return ()
|
|
134
|
+
header = (getattr(_tenant_middleware(app), "kwargs", None) or {}).get("header")
|
|
135
|
+
return ("Cookie", header) if header else ("Cookie",)
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
def vary_on_tenant(response: Any, app: Any) -> Any:
|
|
139
|
+
"""Append :func:`tenant_vary` to *response*'s ``Vary``; a no-op in SINGLE."""
|
|
140
|
+
listed = [f.strip() for f in response.headers.get("vary", "").split(",") if f.strip()]
|
|
141
|
+
seen = {f.lower() for f in listed}
|
|
142
|
+
added = [f for f in tenant_vary(app) if f.lower() not in seen]
|
|
143
|
+
if added:
|
|
144
|
+
response.headers["Vary"] = ", ".join(listed + added)
|
|
145
|
+
return response
|
|
146
|
+
|
|
147
|
+
|
|
122
148
|
def mode_of(app: Any) -> TenancyMode:
|
|
123
149
|
"""The stored mode, or a fresh detection before ``on_startup`` has run."""
|
|
124
150
|
mode = getattr(getattr(app.state, _PACKAGE, None), "tenancy", None)
|
{simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_tenancy_public.py
RENAMED
|
@@ -76,6 +76,43 @@ async def test_sitemap_lists_only_the_bound_tenant(mt: AsyncClient) -> None:
|
|
|
76
76
|
assert "/p/beta" in b.text and "/p/alpha" not in b.text
|
|
77
77
|
|
|
78
78
|
|
|
79
|
+
def _vary(response) -> list[str]:
|
|
80
|
+
"""The distinct Vary fields: Starlette's ``SessionMiddleware`` appends
|
|
81
|
+
``Cookie`` without checking whether it is already listed."""
|
|
82
|
+
fields = (v.strip() for v in response.headers.get("vary", "").split(","))
|
|
83
|
+
return list(dict.fromkeys(f for f in fields if f))
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
@pytest.mark.unbound_tenant
|
|
87
|
+
async def test_multi_mode_public_responses_vary_on_cookie(mt: AsyncClient) -> None:
|
|
88
|
+
"""The apex host can take the tenant from a member's session, so a shared
|
|
89
|
+
cache keyed on Host + URL alone could serve one tenant's page to another."""
|
|
90
|
+
await _publish(mt, A, "about", "About Acme")
|
|
91
|
+
page = await mt.get("/p/about", headers=A)
|
|
92
|
+
assert page.status_code == 200, page.text
|
|
93
|
+
assert _vary(page) == ["X-Inertia", "Cookie"]
|
|
94
|
+
cached = await mt.get("/p/about", headers={**A, "If-None-Match": page.headers["etag"]})
|
|
95
|
+
assert cached.status_code == 304
|
|
96
|
+
assert _vary(cached) == ["X-Inertia", "Cookie"]
|
|
97
|
+
sitemap = await mt.get("/sitemap.xml", headers=A)
|
|
98
|
+
assert sitemap.status_code == 200
|
|
99
|
+
assert sitemap.headers["cache-control"].startswith("public")
|
|
100
|
+
assert _vary(sitemap) == ["Cookie"]
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
async def test_single_mode_vary_is_unchanged(authed_client: AsyncClient) -> None:
|
|
104
|
+
created = await authed_client.post(API, json={"title": "Hi", "slug": "hi", "draft_data": {}})
|
|
105
|
+
assert created.status_code == 201, created.text
|
|
106
|
+
await authed_client.post(f"{API}/{created.json()['id']}/publish", json={})
|
|
107
|
+
page = await authed_client.get("/p/hi")
|
|
108
|
+
assert page.status_code == 200, page.text
|
|
109
|
+
# ``Cookie`` here is SessionMiddleware's (the render read the session).
|
|
110
|
+
assert page.headers["vary"] == "X-Inertia, Cookie"
|
|
111
|
+
cached = await authed_client.get("/p/hi", headers={"If-None-Match": page.headers["etag"]})
|
|
112
|
+
assert (cached.status_code, cached.headers.get("vary")) == (304, "X-Inertia")
|
|
113
|
+
assert (await authed_client.get("/sitemap.xml")).headers.get("vary") is None
|
|
114
|
+
|
|
115
|
+
|
|
79
116
|
async def test_single_mode_stamps_the_default_tenant(authed_client: AsyncClient, db) -> None:
|
|
80
117
|
created = await authed_client.post(API, json={"title": "Hi", "slug": "hi", "draft_data": {}})
|
|
81
118
|
assert created.status_code == 201, created.text
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/contracts/events.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/conversion/index.ts
RENAMED
|
File without changes
|
{simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/conversion/types.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|