focomy 0.1.108__tar.gz → 0.1.110__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.
- {focomy-0.1.108 → focomy-0.1.110}/PKG-INFO +1 -1
- {focomy-0.1.108 → focomy-0.1.110}/core/utils.py +7 -5
- {focomy-0.1.108 → focomy-0.1.110}/pyproject.toml +1 -1
- {focomy-0.1.108 → focomy-0.1.110}/.gitignore +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/LICENSE +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/README.md +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/__init__.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/admin/__init__.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/admin/routes.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/admin/url.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/api/__init__.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/api/auth.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/api/comments.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/api/entities.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/api/forms.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/api/media.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/api/relations.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/api/revisions.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/api/schema.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/api/search.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/api/seo.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/cli.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/config.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/content_types/__init__.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/content_types/audit_log.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/content_types/category.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/content_types/channel.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/content_types/comment.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/content_types/edit_lock.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/content_types/form.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/content_types/form_submission.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/content_types/menu_item.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/content_types/news.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/content_types/page.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/content_types/plugin.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/content_types/plugin_developer.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/content_types/plugin_review.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/content_types/post.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/content_types/redirect.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/content_types/scheduled_action.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/content_types/series.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/content_types/site_setting.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/content_types/tag.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/content_types/user.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/content_types/widget.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/content_types/workflow_history.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/database.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/engine/__init__.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/engine/routes.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/main.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/migrations/env.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/migrations/script.py.mako +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/migrations/versions/2038bdf6693b_add_import_jobs_table.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/migrations/versions/3a1b2c3d4e5f_add_file_hash_to_media.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/models/__init__.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/models/auth.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/models/entity.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/models/import_job.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/models/media.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/models/relation.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/models/revision.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/plugins/__init__.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/plugins/base.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/plugins/hooks.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/plugins/loader.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/plugins/manager.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/rate_limit.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/relations.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/scaffold/.env.template +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/scaffold/.gitignore.template +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/scaffold/__init__.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/scaffold/config.yaml.template +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/scaffold/themes/default/templates/archive.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/scaffold/themes/default/templates/base.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/scaffold/themes/default/templates/category.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/scaffold/themes/default/templates/home.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/scaffold/themes/default/templates/post.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/scaffold/themes/default/templates/search.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/scaffold/themes/default/theme.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/schemas/__init__.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/schemas/import_schema.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/seo/__init__.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/__init__.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/api_auth.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/assets.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/audit.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/auth.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/block_converter.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/bulk.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/cache.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/cleanup.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/comment.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/config_priority.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/deployment.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/edit_lock.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/entity.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/export.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/field.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/formula.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/i18n.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/index.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/invite.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/link_validator.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/logging.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/mail.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/marketplace.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/marketplace_verify.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/media.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/media_cleanup.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/menu.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/migration_helpers.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/oauth.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/pagination.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/plugin_resolver.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/plugin_sandbox.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/preview.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/query_optimizer.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/rbac.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/redirect.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/relation.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/revision.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/routing.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/sanitizer.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/schedule.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/search.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/sentry.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/seo.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/settings.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/spam_filter.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/storage.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/theme.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/theme_inheritance.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/thumbnail.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/update.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/widget.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/wordpress_import/__init__.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/wordpress_import/acf.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/wordpress_import/analyzer.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/wordpress_import/constants.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/wordpress_import/content_sanitizer.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/wordpress_import/diff_detector.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/wordpress_import/dry_run.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/wordpress_import/error_collector.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/wordpress_import/id_resolver.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/wordpress_import/import_service.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/wordpress_import/importer.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/wordpress_import/link_fixer.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/wordpress_import/media.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/wordpress_import/preview.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/wordpress_import/redirects.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/wordpress_import/rest_client.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/wordpress_import/rollback.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/wordpress_import/verification.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/wordpress_import/wxr_parser.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/services/workflow.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/templates/admin/backup.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/templates/admin/base.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/templates/admin/comments.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/templates/admin/components/editor.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/templates/admin/customize.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/templates/admin/dashboard.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/templates/admin/entity_form.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/templates/admin/entity_list.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/templates/admin/forgot_password.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/templates/admin/import.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/templates/admin/link_validator.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/templates/admin/login.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/templates/admin/media.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/templates/admin/menus.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/templates/admin/plugins.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/templates/admin/redirects.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/templates/admin/reset_password.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/templates/admin/settings.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/templates/admin/sitemap.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/templates/admin/system.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/templates/admin/themes.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/templates/admin/widgets.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/themes/__init__.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/themes/customizer.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/themes/manager.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/core/themes/marketplace.py +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/static/favicon.svg +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/blog/templates/base.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/blog/templates/home.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/blog/templates/post.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/blog/theme.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/corporate/templates/base.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/corporate/templates/home.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/corporate/templates/page.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/corporate/theme.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/default/templates/404.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/default/templates/500.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/default/templates/archive.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/default/templates/base.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/default/templates/category.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/default/templates/channel.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/default/templates/form.html +63 -63
- {focomy-0.1.108 → focomy-0.1.110}/themes/default/templates/form_success.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/default/templates/home.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/default/templates/page.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/default/templates/post.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/default/templates/search.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/default/templates/series.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/default/theme.yaml +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/minimal/templates/base.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/minimal/templates/home.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/minimal/templates/page.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/minimal/templates/post.html +0 -0
- {focomy-0.1.108 → focomy-0.1.110}/themes/minimal/theme.yaml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: focomy
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.110
|
|
4
4
|
Summary: The Most Beautiful CMS - A metadata-driven, zero-duplicate-code content management system
|
|
5
5
|
Project-URL: Homepage, https://github.com/focomy/focomy
|
|
6
6
|
Project-URL: Documentation, https://focomy.dev/docs
|
|
@@ -48,7 +48,8 @@ def require_feature(feature: str) -> None:
|
|
|
48
48
|
async def is_feature_enabled_async(feature: str, db) -> bool:
|
|
49
49
|
"""Check if a feature is enabled (async version, DB-first).
|
|
50
50
|
|
|
51
|
-
Priority: DB settings >
|
|
51
|
+
Priority: DB settings > code default (True)
|
|
52
|
+
Note: config.yaml is ignored for features to allow DB override without restart.
|
|
52
53
|
|
|
53
54
|
Args:
|
|
54
55
|
feature: Feature name (e.g., 'form', 'comment')
|
|
@@ -57,10 +58,11 @@ async def is_feature_enabled_async(feature: str, db) -> bool:
|
|
|
57
58
|
Returns:
|
|
58
59
|
True if feature is enabled, False otherwise
|
|
59
60
|
"""
|
|
60
|
-
from .services.settings import SettingsService
|
|
61
|
+
from .services.settings import SettingsService, DEFAULT_SETTINGS
|
|
61
62
|
|
|
62
63
|
settings_svc = SettingsService(db)
|
|
63
|
-
|
|
64
|
+
# Check DB directly (not through get() which includes config.yaml)
|
|
65
|
+
db_value = await settings_svc._get_db_value(f"features.{feature}")
|
|
64
66
|
|
|
65
67
|
if db_value is not None:
|
|
66
68
|
# DB value exists, use it
|
|
@@ -70,8 +72,8 @@ async def is_feature_enabled_async(feature: str, db) -> bool:
|
|
|
70
72
|
return db_value.lower() in ("true", "1", "yes")
|
|
71
73
|
return bool(db_value)
|
|
72
74
|
|
|
73
|
-
# Fallback to config.yaml
|
|
74
|
-
return
|
|
75
|
+
# Fallback to code default (ignore config.yaml)
|
|
76
|
+
return DEFAULT_SETTINGS.get("features", {}).get(feature, True)
|
|
75
77
|
|
|
76
78
|
|
|
77
79
|
async def require_feature_async(feature: str, db) -> None:
|
|
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
|
{focomy-0.1.108 → focomy-0.1.110}/core/migrations/versions/2038bdf6693b_add_import_jobs_table.py
RENAMED
|
File without changes
|
{focomy-0.1.108 → focomy-0.1.110}/core/migrations/versions/3a1b2c3d4e5f_add_file_hash_to_media.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
|
|
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
|
|
@@ -1,68 +1,5 @@
|
|
|
1
1
|
{% extends "base.html" %}
|
|
2
2
|
|
|
3
|
-
{% block title %}{{ form.title }} - {{ site_name }}{% endblock %}
|
|
4
|
-
|
|
5
|
-
{% block content %}
|
|
6
|
-
<div class="form-page">
|
|
7
|
-
<header class="form-header">
|
|
8
|
-
<h1>{{ form.title }}</h1>
|
|
9
|
-
{% if form.description %}
|
|
10
|
-
<p class="form-description">{{ form.description }}</p>
|
|
11
|
-
{% endif %}
|
|
12
|
-
</header>
|
|
13
|
-
|
|
14
|
-
<form id="dynamic-form" method="POST" action="/forms/{{ form.slug }}" class="dynamic-form">
|
|
15
|
-
<input type="hidden" name="csrf_token" value="{{ csrf_token }}">
|
|
16
|
-
|
|
17
|
-
{% if steps and steps|length > 1 %}
|
|
18
|
-
<!-- ウィザード形式 -->
|
|
19
|
-
<div class="wizard">
|
|
20
|
-
<div class="wizard-progress">
|
|
21
|
-
{% for step in steps %}
|
|
22
|
-
<div class="wizard-step {% if loop.first %}active{% endif %}" data-step="{{ loop.index }}">
|
|
23
|
-
<span class="step-number">{{ loop.index }}</span>
|
|
24
|
-
<span class="step-title">{{ step.title }}</span>
|
|
25
|
-
</div>
|
|
26
|
-
{% endfor %}
|
|
27
|
-
</div>
|
|
28
|
-
|
|
29
|
-
{% for step in steps %}
|
|
30
|
-
<div class="wizard-panel {% if loop.first %}active{% endif %}" data-step="{{ loop.index }}">
|
|
31
|
-
<h2 class="step-heading">{{ step.title }}</h2>
|
|
32
|
-
{% for field in fields %}
|
|
33
|
-
{% if field.name in step.fields %}
|
|
34
|
-
{{ render_field(field) }}
|
|
35
|
-
{% endif %}
|
|
36
|
-
{% endfor %}
|
|
37
|
-
|
|
38
|
-
<div class="wizard-nav">
|
|
39
|
-
{% if not loop.first %}
|
|
40
|
-
<button type="button" class="btn btn-secondary prev-step">戻る</button>
|
|
41
|
-
{% endif %}
|
|
42
|
-
{% if loop.last %}
|
|
43
|
-
<button type="submit" class="btn btn-primary">{{ form.submit_label or '送信する' }}</button>
|
|
44
|
-
{% else %}
|
|
45
|
-
<button type="button" class="btn btn-primary next-step">次へ</button>
|
|
46
|
-
{% endif %}
|
|
47
|
-
</div>
|
|
48
|
-
</div>
|
|
49
|
-
{% endfor %}
|
|
50
|
-
</div>
|
|
51
|
-
{% else %}
|
|
52
|
-
<!-- 通常フォーム -->
|
|
53
|
-
<div class="form-fields">
|
|
54
|
-
{% for field in fields %}
|
|
55
|
-
{{ render_field(field) }}
|
|
56
|
-
{% endfor %}
|
|
57
|
-
</div>
|
|
58
|
-
|
|
59
|
-
<div class="form-actions">
|
|
60
|
-
<button type="submit" class="btn btn-primary">{{ form.submit_label or '送信する' }}</button>
|
|
61
|
-
</div>
|
|
62
|
-
{% endif %}
|
|
63
|
-
</form>
|
|
64
|
-
</div>
|
|
65
|
-
|
|
66
3
|
{% macro render_field(field) %}
|
|
67
4
|
<div class="form-group">
|
|
68
5
|
<label for="{{ field.name }}">
|
|
@@ -134,6 +71,69 @@
|
|
|
134
71
|
</div>
|
|
135
72
|
{% endmacro %}
|
|
136
73
|
|
|
74
|
+
{% block title %}{{ form.title }} - {{ site_name }}{% endblock %}
|
|
75
|
+
|
|
76
|
+
{% block content %}
|
|
77
|
+
<div class="form-page">
|
|
78
|
+
<header class="form-header">
|
|
79
|
+
<h1>{{ form.title }}</h1>
|
|
80
|
+
{% if form.description %}
|
|
81
|
+
<p class="form-description">{{ form.description }}</p>
|
|
82
|
+
{% endif %}
|
|
83
|
+
</header>
|
|
84
|
+
|
|
85
|
+
<form id="dynamic-form" method="POST" action="/forms/{{ form.slug }}" class="dynamic-form">
|
|
86
|
+
<input type="hidden" name="csrf_token" value="{{ csrf_token }}">
|
|
87
|
+
|
|
88
|
+
{% if steps and steps|length > 1 %}
|
|
89
|
+
<!-- ウィザード形式 -->
|
|
90
|
+
<div class="wizard">
|
|
91
|
+
<div class="wizard-progress">
|
|
92
|
+
{% for step in steps %}
|
|
93
|
+
<div class="wizard-step {% if loop.first %}active{% endif %}" data-step="{{ loop.index }}">
|
|
94
|
+
<span class="step-number">{{ loop.index }}</span>
|
|
95
|
+
<span class="step-title">{{ step.title }}</span>
|
|
96
|
+
</div>
|
|
97
|
+
{% endfor %}
|
|
98
|
+
</div>
|
|
99
|
+
|
|
100
|
+
{% for step in steps %}
|
|
101
|
+
<div class="wizard-panel {% if loop.first %}active{% endif %}" data-step="{{ loop.index }}">
|
|
102
|
+
<h2 class="step-heading">{{ step.title }}</h2>
|
|
103
|
+
{% for field in fields %}
|
|
104
|
+
{% if field.name in step.fields %}
|
|
105
|
+
{{ render_field(field) }}
|
|
106
|
+
{% endif %}
|
|
107
|
+
{% endfor %}
|
|
108
|
+
|
|
109
|
+
<div class="wizard-nav">
|
|
110
|
+
{% if not loop.first %}
|
|
111
|
+
<button type="button" class="btn btn-secondary prev-step">戻る</button>
|
|
112
|
+
{% endif %}
|
|
113
|
+
{% if loop.last %}
|
|
114
|
+
<button type="submit" class="btn btn-primary">{{ form.submit_label or '送信する' }}</button>
|
|
115
|
+
{% else %}
|
|
116
|
+
<button type="button" class="btn btn-primary next-step">次へ</button>
|
|
117
|
+
{% endif %}
|
|
118
|
+
</div>
|
|
119
|
+
</div>
|
|
120
|
+
{% endfor %}
|
|
121
|
+
</div>
|
|
122
|
+
{% else %}
|
|
123
|
+
<!-- 通常フォーム -->
|
|
124
|
+
<div class="form-fields">
|
|
125
|
+
{% for field in fields %}
|
|
126
|
+
{{ render_field(field) }}
|
|
127
|
+
{% endfor %}
|
|
128
|
+
</div>
|
|
129
|
+
|
|
130
|
+
<div class="form-actions">
|
|
131
|
+
<button type="submit" class="btn btn-primary">{{ form.submit_label or '送信する' }}</button>
|
|
132
|
+
</div>
|
|
133
|
+
{% endif %}
|
|
134
|
+
</form>
|
|
135
|
+
</div>
|
|
136
|
+
|
|
137
137
|
<style>
|
|
138
138
|
.form-page {
|
|
139
139
|
max-width: 600px;
|
|
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
|