commentail 0.1.0__tar.gz → 0.2.0__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.
- commentail-0.2.0/CHANGELOG.md +116 -0
- {commentail-0.1.0 → commentail-0.2.0}/MANIFEST.in +2 -2
- {commentail-0.1.0/commentail.egg-info → commentail-0.2.0}/PKG-INFO +68 -18
- {commentail-0.1.0 → commentail-0.2.0}/README.md +63 -15
- commentail-0.2.0/README.ru.md +236 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/admin_views.py +30 -17
- {commentail-0.1.0 → commentail-0.2.0}/commentail/avatars.py +20 -6
- {commentail-0.1.0 → commentail-0.2.0}/commentail/config.py +10 -0
- commentail-0.2.0/commentail/locale/de/LC_MESSAGES/django.mo +0 -0
- commentail-0.2.0/commentail/locale/de/LC_MESSAGES/django.po +920 -0
- commentail-0.2.0/commentail/locale/es/LC_MESSAGES/django.mo +0 -0
- commentail-0.2.0/commentail/locale/es/LC_MESSAGES/django.po +920 -0
- commentail-0.2.0/commentail/locale/fr/LC_MESSAGES/django.mo +0 -0
- commentail-0.2.0/commentail/locale/fr/LC_MESSAGES/django.po +920 -0
- commentail-0.2.0/commentail/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
- commentail-0.2.0/commentail/locale/pt_BR/LC_MESSAGES/django.po +920 -0
- commentail-0.2.0/commentail/locale/ru/LC_MESSAGES/django.mo +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/locale/ru/LC_MESSAGES/django.po +98 -3
- commentail-0.2.0/commentail/migrations/0014_reading_indexes.py +39 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/models.py +16 -2
- {commentail-0.1.0 → commentail-0.2.0}/commentail/objects.py +15 -1
- {commentail-0.1.0 → commentail-0.2.0}/commentail/outbox.py +27 -16
- {commentail-0.1.0 → commentail-0.2.0}/commentail/panels.py +7 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/policies.py +44 -15
- {commentail-0.1.0 → commentail-0.2.0}/commentail/public.py +71 -33
- commentail-0.2.0/commentail/recent.py +226 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/services.py +72 -26
- {commentail-0.1.0 → commentail-0.2.0}/commentail/static/commentail/admin.css +18 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/static/commentail/commentail.js +13 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/templates/commentail/admin/list.html +2 -2
- commentail-0.2.0/commentail/templates/commentail/admin/page_panel.html +28 -0
- commentail-0.2.0/commentail/templates/commentail/emails/base.html +20 -0
- commentail-0.2.0/commentail/templates/commentail/emails/button.html +2 -0
- commentail-0.2.0/commentail/templates/commentail/emails/confirm.html +10 -0
- commentail-0.2.0/commentail/templates/commentail/emails/confirm.txt +18 -0
- commentail-0.2.0/commentail/templates/commentail/emails/edit.html +9 -0
- commentail-0.2.0/commentail/templates/commentail/emails/edit.txt +17 -0
- commentail-0.2.0/commentail/templates/commentail/emails/published.html +6 -0
- commentail-0.2.0/commentail/templates/commentail/emails/published.txt +10 -0
- commentail-0.2.0/commentail/templates/commentail/emails/published_subject.txt +1 -0
- commentail-0.2.0/commentail/templates/commentail/emails/rejected.html +7 -0
- commentail-0.2.0/commentail/templates/commentail/emails/rejected.txt +13 -0
- commentail-0.2.0/commentail/templates/commentail/emails/rejected_subject.txt +1 -0
- commentail-0.2.0/commentail/templates/commentail/emails/reply.html +8 -0
- commentail-0.2.0/commentail/templates/commentail/emails/reply.txt +17 -0
- commentail-0.2.0/commentail/templates/commentail/form.html +1 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/templatetags/commentail_tags.py +24 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/wagtail_hooks.py +2 -2
- {commentail-0.1.0 → commentail-0.2.0/commentail.egg-info}/PKG-INFO +68 -18
- {commentail-0.1.0 → commentail-0.2.0}/commentail.egg-info/SOURCES.txt +40 -1
- {commentail-0.1.0 → commentail-0.2.0}/commentail.egg-info/requires.txt +2 -2
- commentail-0.2.0/docs/releases/0.1.1.md +53 -0
- commentail-0.2.0/docs/releases/0.2.0.md +83 -0
- commentail-0.2.0/docs/wiki/Changelog.md +116 -0
- {commentail-0.1.0 → commentail-0.2.0}/docs/wiki/Configuration.md +24 -2
- {commentail-0.1.0 → commentail-0.2.0}/docs/wiki/Deployment.md +2 -0
- {commentail-0.1.0 → commentail-0.2.0}/docs/wiki/Email-and-worker.md +27 -0
- {commentail-0.1.0 → commentail-0.2.0}/docs/wiki/Example-and-testing.md +26 -6
- {commentail-0.1.0 → commentail-0.2.0}/docs/wiki/Guest-comments.md +5 -1
- {commentail-0.1.0 → commentail-0.2.0}/docs/wiki/Home.md +11 -4
- commentail-0.2.0/docs/wiki/Installation.md +142 -0
- {commentail-0.1.0 → commentail-0.2.0}/docs/wiki/Moderation.md +5 -0
- commentail-0.2.0/docs/wiki/Performance.md +137 -0
- commentail-0.2.0/docs/wiki/Recent-comments.md +102 -0
- commentail-0.2.0/docs/wiki/Release-0.1.1.md +53 -0
- commentail-0.2.0/docs/wiki/Release-0.2.0.md +83 -0
- commentail-0.2.0/docs/wiki/Roadmap.md +26 -0
- {commentail-0.1.0 → commentail-0.2.0}/docs/wiki/Support.md +1 -1
- {commentail-0.1.0 → commentail-0.2.0}/docs/wiki/Templates.md +17 -1
- {commentail-0.1.0 → commentail-0.2.0}/docs/wiki/_Sidebar.md +7 -1
- {commentail-0.1.0 → commentail-0.2.0}/example/README.md +4 -2
- {commentail-0.1.0 → commentail-0.2.0}/pyproject.toml +4 -2
- commentail-0.1.0/requirements-test.txt → commentail-0.2.0/requirements-test-common.txt +1 -3
- commentail-0.2.0/requirements-test.txt +4 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/settings.py +2 -1
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_admin_ui.py +27 -1
- commentail-0.2.0/tests/test_capability_access.py +190 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_concurrency.py +42 -2
- commentail-0.2.0/tests/test_email_presentation.py +119 -0
- commentail-0.2.0/tests/test_extension_contracts.py +182 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_lifecycle.py +16 -2
- commentail-0.2.0/tests/test_localization.py +257 -0
- commentail-0.2.0/tests/test_name_limit.js +41 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_outbox.py +79 -2
- commentail-0.2.0/tests/test_performance.py +224 -0
- commentail-0.2.0/tests/test_presentation_contracts.py +304 -0
- commentail-0.2.0/tests/test_recent_comments.py +281 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_smtp_chain.py +32 -8
- commentail-0.2.0/tests/test_transaction_contracts.py +122 -0
- commentail-0.2.0/tests/urls_custom_prefix.py +9 -0
- commentail-0.2.0/tools/benchmark_performance.py +386 -0
- {commentail-0.1.0 → commentail-0.2.0}/tools/check_dist.py +2 -2
- commentail-0.2.0/tools/check_translations.py +92 -0
- commentail-0.1.0/CHANGELOG.md +0 -15
- commentail-0.1.0/commentail/locale/ru/LC_MESSAGES/django.mo +0 -0
- commentail-0.1.0/commentail/templates/commentail/admin/page_panel.html +0 -1
- commentail-0.1.0/commentail/templates/commentail/emails/confirm.txt +0 -7
- commentail-0.1.0/commentail/templates/commentail/emails/edit.txt +0 -5
- commentail-0.1.0/commentail/templates/commentail/emails/published.txt +0 -3
- commentail-0.1.0/commentail/templates/commentail/emails/published_subject.txt +0 -1
- commentail-0.1.0/commentail/templates/commentail/emails/rejected.txt +0 -5
- commentail-0.1.0/commentail/templates/commentail/emails/rejected_subject.txt +0 -1
- commentail-0.1.0/commentail/templates/commentail/emails/reply.txt +0 -6
- commentail-0.1.0/commentail/templates/commentail/form.html +0 -1
- commentail-0.1.0/docs/wiki/Installation.md +0 -87
- {commentail-0.1.0 → commentail-0.2.0}/LICENSE +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/__init__.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/admin_urls.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/admission.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/apps.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/assets.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/checks.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/detection.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/drafts.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/forms.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/group_permissions.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/limits.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/logging.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/management/__init__.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/management/commands/__init__.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/management/commands/process_commentail.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/middleware.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/migrations/0001_initial.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/migrations/0002_sitegrouppermission_hide_sitegrouppermission_view.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/migrations/0003_actiontoken_captchachallenge_guestgrant.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/migrations/0004_submissionrecord.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/migrations/0005_rateevent.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/migrations/0006_alter_comment_guest_name_and_more.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/migrations/0007_actiontoken_nonce_replysubscription_mailjob.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/migrations/0008_mailjob_revision.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/migrations/0009_formticket.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/migrations/0010_captchachallenge_backend_and_more.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/migrations/0011_discussion_content_type_discussion_object_id_and_more.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/migrations/0012_formticket_draft.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/migrations/0013_sitecommentsettings_email_enabled.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/migrations/__init__.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/page_integration.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/permissions.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/rules_csv.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/security.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/signals.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/static/commentail/admin.js +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/static/commentail/commentail.css +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/structured.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/templates/commentail/action.html +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/templates/commentail/admin/detail.html +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/templates/commentail/admin/form.html +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/templates/commentail/admin/group_permission_row.html +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/templates/commentail/admin/group_permissions.html +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/templates/commentail/admin/mail.html +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/templates/commentail/admin/objects.html +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/templates/commentail/admin/rules.html +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/templates/commentail/admin/rules_import.html +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/templates/commentail/base.html +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/templates/commentail/block.html +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/templates/commentail/captcha.html +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/templates/commentail/comment.html +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/templates/commentail/edit-form.html +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/templates/commentail/emails/confirm_subject.txt +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/templates/commentail/emails/edit_subject.txt +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/templates/commentail/emails/reply_subject.txt +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/templates/commentail/replies.html +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/templatetags/__init__.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/text.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/urls.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail/views.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail.egg-info/dependency_links.txt +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/commentail.egg-info/top_level.txt +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/docs/assets/commentail-preview.png +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/docs/assets/support-qr.png +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/docs/releases/0.1.0.md +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/docs/wiki/Callbacks.md +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/docs/wiki/Object-adapters.md +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/docs/wiki/Release-0.1.0.md +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/docs/wiki/Replies-and-editing.md +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/docs/wiki/Rules-and-CSV.md +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/docs/wiki/Security-and-privacy.md +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/docs/wiki/Structured-data.md +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/docs/wiki/Styling.md +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/docs/wiki/Troubleshooting.md +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/docs/wiki/_Footer.md +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/example/demo/__init__.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/example/demo/settings.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/example/demo/urls.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/example/demo_home/__init__.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/example/demo_home/comments.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/example/demo_home/management/__init__.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/example/demo_home/management/commands/__init__.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/example/demo_home/management/commands/bootstrap_demo.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/example/demo_home/migrations/0001_initial.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/example/demo_home/migrations/0002_product.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/example/demo_home/migrations/__init__.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/example/demo_home/models.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/example/demo_home/templates/demo_home/home_page.html +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/example/demo_home/templates/demo_home/product.html +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/example/demo_home/views.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/example/manage.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/setup.cfg +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/__init__.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/targets/__init__.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/targets/apps.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/targets/migrations/0001_initial.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/targets/migrations/__init__.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/targets/models.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/templates/wagtailcore/page.html +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_actions.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_admin.js +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_admission.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_avatars.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_captcha_backend.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_cleanup.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_detection.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_group_panel.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_inline_edit.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_mail_admin.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_notifications.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_object_adapters.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_progressive.js +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_public_ui.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_rate_limits.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_release_gaps.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_reply.js +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_rules_admin.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_rules_csv.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_security.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_structured_data.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/test_submission.py +0 -0
- {commentail-0.1.0 → commentail-0.2.0}/tests/urls.py +0 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
Each release records changes relative to the previous version. Upgrade notes
|
|
4
|
+
describe changes that an existing installation needs to review.
|
|
5
|
+
|
|
6
|
+
## [0.2.0] — 2026-10-19 · Beta
|
|
7
|
+
|
|
8
|
+
Changes from **0.1.1 → 0.2.0**.
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- `commentail_recent` template tag for latest published comments with a limit,
|
|
13
|
+
exact Page filter, optional replies and host-owned markup. Selection enforces
|
|
14
|
+
visitor access, Site isolation and hidden-discussion settings; results contain
|
|
15
|
+
plain presentation fields and comment permalinks without private model data.
|
|
16
|
+
|
|
17
|
+
- Grouped Comments settings in the Wagtail Page editor, with site inheritance
|
|
18
|
+
and existing save/publication behavior preserved.
|
|
19
|
+
- Russian README included in the source distribution.
|
|
20
|
+
|
|
21
|
+
- Minimal HTML emails for all five notification types, with host Site names,
|
|
22
|
+
explanatory copy, labelled action links and equivalent plain text in all six
|
|
23
|
+
supported languages. Revision decisions have distinct subjects and explanations.
|
|
24
|
+
|
|
25
|
+
- German (`de`), French (`fr`), Spanish (`es`) and Brazilian Portuguese (`pt-br`)
|
|
26
|
+
translations for public forms, validation/action messages, moderation/settings,
|
|
27
|
+
delivery screens and all five notification email types, including revision decisions.
|
|
28
|
+
- Source-coverage and compiled-catalog checks for every shipped locale, plus
|
|
29
|
+
regression checks for recipient-language mail delivery and English fallback.
|
|
30
|
+
|
|
31
|
+
### Fixed
|
|
32
|
+
|
|
33
|
+
- Bounded and indexed recent-comment reads, batched Page access checks and reused
|
|
34
|
+
target URLs. Discussion rendering groups reply counts and avoids per-comment
|
|
35
|
+
target/settings/revision queries; moderation totals use a shared aggregate.
|
|
36
|
+
- Whole-word rule matching avoids a rule-by-text-position scan. Cleanup locks
|
|
37
|
+
only expired unconfirmed candidates; worker claims preload authors/revisions.
|
|
38
|
+
- The moderation Page filter uses Wagtail's searchable chooser instead of loading
|
|
39
|
+
every discussion Page into its HTML. Added reproducible synthetic load checks.
|
|
40
|
+
|
|
41
|
+
- Email copy distinguishes revision approval from public visibility, explains
|
|
42
|
+
editing cutoff for replies awaiting moderation, and uses contextual action
|
|
43
|
+
labels without promising new replies in read-only discussions.
|
|
44
|
+
|
|
45
|
+
- Generated author labels in reply emails use the recipient's saved language,
|
|
46
|
+
including the generic account name, instead of the mail worker's language.
|
|
47
|
+
|
|
48
|
+
### Upgrade notes
|
|
49
|
+
|
|
50
|
+
- Host email overrides keep precedence; review
|
|
51
|
+
both MIME alternatives and any custom subject/body wording when upgrading.
|
|
52
|
+
- Enable the desired language through the host site's Django language settings;
|
|
53
|
+
use `pt-br` for Brazilian Portuguese. Commentail's gettext directory is `pt_BR`.
|
|
54
|
+
- Documentation remains in English and Russian.
|
|
55
|
+
- Run migration `0014_reading_indexes` for publication/thread, active CAPTCHA and
|
|
56
|
+
rate-cleanup indexes, then recollect static files. Index builds may block writes
|
|
57
|
+
on large tables; SQLite also rebuilds the rate-event table. See
|
|
58
|
+
[performance and migration guidance](docs/wiki/Performance.md).
|
|
59
|
+
|
|
60
|
+
## [0.1.1] — 2026-10-19 · Beta
|
|
61
|
+
|
|
62
|
+
Changes from **0.1.0 → 0.1.1**.
|
|
63
|
+
|
|
64
|
+
### Added
|
|
65
|
+
|
|
66
|
+
- Wagtail 8.0 support with Django 5.2, 6.0 or 6.1, and Django 6.0 support on
|
|
67
|
+
Wagtail 7.4.3+. The five framework pairs cover Python 3.12–3.14 with file
|
|
68
|
+
SQLite and PostgreSQL 16 (30 combinations).
|
|
69
|
+
- Regression coverage for capability access, extension/presentation contracts,
|
|
70
|
+
lifecycle transactions, concurrency and mail-worker recovery.
|
|
71
|
+
- A public roadmap, including expansion of supported UI and email languages/locales.
|
|
72
|
+
|
|
73
|
+
### Changed
|
|
74
|
+
|
|
75
|
+
- New guest names allow **40 Unicode graphemes**, down from 80, after trimming.
|
|
76
|
+
Server validation and browser guidance reject overlong input without truncation.
|
|
77
|
+
Existing stored names and registered-account names are preserved.
|
|
78
|
+
- PostgreSQL installation guidance explicitly includes `django.contrib.postgres`
|
|
79
|
+
for Django 6.x checks.
|
|
80
|
+
|
|
81
|
+
### Fixed
|
|
82
|
+
|
|
83
|
+
- Email action and status links now follow the configured Commentail URL prefix,
|
|
84
|
+
including nested paths, instead of assuming `/commentail/`.
|
|
85
|
+
- The guest-name label uses its own translation context, preventing collisions
|
|
86
|
+
with host-site translations for other uses of "Name".
|
|
87
|
+
|
|
88
|
+
### Upgrade notes
|
|
89
|
+
|
|
90
|
+
- No new Commentail database migrations; framework upgrades may have their own.
|
|
91
|
+
- Review overridden guest forms for the 40-grapheme limit and recollect static files.
|
|
92
|
+
- Previously delivered emails are not rewritten. Pending mail uses the installed
|
|
93
|
+
version's URL generation; existing SMTP retry/duplicate-delivery limits remain.
|
|
94
|
+
- UI and email languages remain English and Russian. Additional locales are planned.
|
|
95
|
+
|
|
96
|
+
See [0.1.1 release notes](docs/releases/0.1.1.md) and
|
|
97
|
+
[installation/restoration](docs/wiki/Installation.md).
|
|
98
|
+
|
|
99
|
+
## [0.1.0] — 2026-10-17 · Beta
|
|
100
|
+
|
|
101
|
+
Initial release for Wagtail 7.4.3+ within 7.4, Django 5.2 and Python 3.12–3.14.
|
|
102
|
+
|
|
103
|
+
- Template-based Page integration and adapters for ordinary Django models.
|
|
104
|
+
- Site/Page configuration, moderation queue, group permissions and CSV rules.
|
|
105
|
+
- Verified guests, replaceable CAPTCHA and Site-scoped rate limits.
|
|
106
|
+
- Threaded replies, inline author revisions and protected guest actions.
|
|
107
|
+
- Database email outbox, direct-reply notifications and unsubscribe.
|
|
108
|
+
- Schema.org Comment microdata and JSON-LD, with per-site output selection.
|
|
109
|
+
- Theme inheritance, template overrides, Python hooks and English/Russian UI.
|
|
110
|
+
|
|
111
|
+
See [0.1.0 release notes](docs/releases/0.1.0.md).
|
|
112
|
+
|
|
113
|
+
[0.1.1]: https://github.com/hardcodd/Commentail/compare/v0.1.0...v0.1.1
|
|
114
|
+
[0.1.0]: https://github.com/hardcodd/Commentail/releases/tag/v0.1.0
|
|
115
|
+
|
|
116
|
+
[0.2.0]: https://github.com/hardcodd/Commentail/compare/v0.1.1...v0.2.0
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
recursive-include tests *.py *.html *.js
|
|
2
2
|
recursive-include example *.py *.html *.md
|
|
3
|
-
include requirements-test.txt
|
|
3
|
+
include requirements-test.txt requirements-test-common.txt
|
|
4
4
|
recursive-include tools *.py
|
|
5
|
-
include CHANGELOG.md
|
|
5
|
+
include CHANGELOG.md README.ru.md
|
|
6
6
|
recursive-include docs/wiki *.md
|
|
7
7
|
recursive-include docs/releases *.md
|
|
8
8
|
include docs/assets/commentail-preview.png
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: commentail
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: Self-hosted Wagtail comments with moderation, verified guests and threaded replies
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
Project-URL: Source, https://github.com/hardcodd/Commentail
|
|
@@ -10,6 +10,8 @@ Project-URL: Changelog, https://github.com/hardcodd/Commentail/blob/main/CHANGEL
|
|
|
10
10
|
Project-URL: Funding, https://pay.cloudtips.ru/p/f92ee349
|
|
11
11
|
Classifier: Development Status :: 4 - Beta
|
|
12
12
|
Classifier: Framework :: Django :: 5.2
|
|
13
|
+
Classifier: Framework :: Django :: 6.0
|
|
14
|
+
Classifier: Framework :: Django :: 6.1
|
|
13
15
|
Classifier: Framework :: Wagtail
|
|
14
16
|
Classifier: Programming Language :: Python :: 3.12
|
|
15
17
|
Classifier: Programming Language :: Python :: 3.13
|
|
@@ -17,8 +19,8 @@ Classifier: Programming Language :: Python :: 3.14
|
|
|
17
19
|
Requires-Python: >=3.12
|
|
18
20
|
Description-Content-Type: text/markdown
|
|
19
21
|
License-File: LICENSE
|
|
20
|
-
Requires-Dist: Django<
|
|
21
|
-
Requires-Dist: Wagtail<
|
|
22
|
+
Requires-Dist: Django<6.2,>=5.2
|
|
23
|
+
Requires-Dist: Wagtail<8.1,>=7.4.3
|
|
22
24
|
Requires-Dist: regex>=2026.9.29
|
|
23
25
|
Provides-Extra: postgres
|
|
24
26
|
Requires-Dist: psycopg[binary]>=3.3.6; extra == "postgres"
|
|
@@ -33,6 +35,9 @@ Dynamic: license-file
|
|
|
33
35
|
Moderated discussions, verified guests and inline replies — styled by your site.
|
|
34
36
|
|
|
35
37
|
[](https://github.com/hardcodd/Commentail/actions/workflows/tests.yml)
|
|
38
|
+
[](https://djangopackages.org/packages/p/commentail/)
|
|
39
|
+
|
|
40
|
+
English · [Русский](README.ru.md)
|
|
36
41
|
|
|
37
42
|
[Get started](#quick-start) · [Documentation](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Home.md) · [Wiki](https://github.com/hardcodd/Commentail/wiki) · [Support](#support-commentail)
|
|
38
43
|
|
|
@@ -40,7 +45,7 @@ Moderated discussions, verified guests and inline replies — styled by your sit
|
|
|
40
45
|
|
|
41
46
|
</div>
|
|
42
47
|
|
|
43
|
-
Commentail is a Django comments library
|
|
48
|
+
Commentail is a Django comments library for **Wagtail 7.4 LTS and 8.0**. Add a
|
|
44
49
|
Django template tag to an article, moderate discussions inside Wagtail, and keep
|
|
45
50
|
content, accounts and email delivery in your own application.
|
|
46
51
|
|
|
@@ -48,7 +53,10 @@ The widget inherits your site's typography and colors. CSS custom properties,
|
|
|
48
53
|
replaceable templates and Python callbacks let you adapt it without a frontend
|
|
49
54
|
framework or an external comments platform.
|
|
50
55
|
|
|
51
|
-
>
|
|
56
|
+
> **0.2.0 Beta** adds recent comments, six languages,
|
|
57
|
+
> HTML emails and indexed database reads.
|
|
58
|
+
> [Version-to-version changelog](https://github.com/hardcodd/Commentail/blob/main/CHANGELOG.md) · [Roadmap](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Roadmap.md).
|
|
59
|
+
> [Changes and upgrade notes](https://github.com/hardcodd/Commentail/blob/main/docs/releases/0.2.0.md).
|
|
52
60
|
|
|
53
61
|
## Why Commentail?
|
|
54
62
|
|
|
@@ -73,17 +81,32 @@ the visible text and author name. Choose either format or disable output in Pyth
|
|
|
73
81
|
| Component | Version / requirement |
|
|
74
82
|
| --- | --- |
|
|
75
83
|
| Python | 3.12–3.14 |
|
|
76
|
-
| Wagtail |
|
|
77
|
-
|
|
|
78
|
-
|
|
|
79
|
-
| UI languages | English and Russian |
|
|
84
|
+
| Wagtail / Django | 7.4.3+ in 7.4 / Django 5.2 or 6.0; 8.0.x / Django 5.2, 6.0 or 6.1 |
|
|
85
|
+
| Database | File SQLite or PostgreSQL 16 |
|
|
86
|
+
| UI and email languages | English, Russian, German, French, Spanish and Brazilian Portuguese |
|
|
80
87
|
| Frontend | Django templates, optional progressive JavaScript |
|
|
81
88
|
| License | [MIT](https://github.com/hardcodd/Commentail/blob/main/LICENSE) |
|
|
82
89
|
|
|
90
|
+
This table describes the 0.2.0 Beta release. CI defines all five framework
|
|
91
|
+
pairs on Python 3.12, 3.13 and 3.14 with both databases (30 combinations).
|
|
92
|
+
Package bounds are `Wagtail>=7.4.3,<8.1` and `Django>=5.2,<6.2`; only the pairs
|
|
93
|
+
listed above are supported. Wagtail 7.4 with Django 6.1 is outside this matrix.
|
|
94
|
+
Wagtail 8.1 and later require separate verification before support is declared.
|
|
95
|
+
|
|
83
96
|
Guest comments require configured SMTP and the scheduled worker. Registered
|
|
84
97
|
users can comment without an email address, but receive no mail. Your site
|
|
85
98
|
provides login and registration. No required external CDN or CAPTCHA service.
|
|
86
99
|
|
|
100
|
+
### Languages
|
|
101
|
+
|
|
102
|
+
Alongside English and Russian, 0.2.0 includes German (`de`), French (`fr`),
|
|
103
|
+
Spanish (`es`) and Brazilian Portuguese (`pt-br`) for the public UI,
|
|
104
|
+
moderation/settings and all notification emails.
|
|
105
|
+
The host site selects the active Django language; queued emails retain the
|
|
106
|
+
recipient's saved language. User comments and rejection reasons are not translated.
|
|
107
|
+
Documentation remains in English and Russian.
|
|
108
|
+
[Language configuration →](docs/wiki/Configuration.md#languages)
|
|
109
|
+
|
|
87
110
|
## Quick start
|
|
88
111
|
|
|
89
112
|
### 1. Install
|
|
@@ -91,16 +114,22 @@ provides login and registration. No required external CDN or CAPTCHA service.
|
|
|
91
114
|
In your site's virtual environment, install the release:
|
|
92
115
|
|
|
93
116
|
```sh
|
|
94
|
-
python -m pip install commentail==0.
|
|
117
|
+
python -m pip install commentail==0.2.0
|
|
95
118
|
```
|
|
96
119
|
|
|
97
|
-
For the optional PostgreSQL driver, use
|
|
98
|
-
|
|
99
|
-
and run `python -m pip install .` in its root.
|
|
120
|
+
For the optional PostgreSQL driver, use
|
|
121
|
+
`python -m pip install 'commentail[postgres]==0.2.0'`.
|
|
122
|
+
You can also extract the source distribution and run `python -m pip install .` in its root.
|
|
123
|
+
When upgrading from 0.1.1, review the
|
|
124
|
+
[upgrade notes](https://github.com/hardcodd/Commentail/blob/main/docs/releases/0.2.0.md),
|
|
125
|
+
including migration `0014_reading_indexes` and email overrides. For older
|
|
126
|
+
installations, also review the [0.1.1 notes](docs/releases/0.1.1.md). The 0.1.0 package retains
|
|
127
|
+
its original Wagtail 7.4 and Django 5.2 limits.
|
|
100
128
|
|
|
101
129
|
### 2. Connect Django and Wagtail
|
|
102
130
|
|
|
103
131
|
- Add `commentail` and `wagtail.contrib.settings` to your existing `INSTALLED_APPS`.
|
|
132
|
+
- With PostgreSQL, also include `django.contrib.postgres` (required by Django 6.x checks).
|
|
104
133
|
- Insert `commentail.middleware.CapabilityHeadersMiddleware` before CSRF middleware.
|
|
105
134
|
- Retain the host session/authentication/messages middleware and template request context processor.
|
|
106
135
|
- Include Commentail URLs **before** Wagtail's catch-all:
|
|
@@ -127,8 +156,28 @@ The template controls where Page comments are available; the corresponding Page
|
|
|
127
156
|
editor receives a Comments tab. Configure site defaults, then inherit or override
|
|
128
157
|
on individual Pages. **Review all** is the initial moderation policy.
|
|
129
158
|
|
|
159
|
+
### Recent comments elsewhere
|
|
160
|
+
|
|
161
|
+
Use the recent-comments tag on a home page, sidebar or another template:
|
|
162
|
+
|
|
163
|
+
```django
|
|
164
|
+
{% load commentail_tags %}
|
|
165
|
+
{% commentail_recent limit=5 as recent_comments %}
|
|
166
|
+
{% for comment in recent_comments %}
|
|
167
|
+
<a href="{{ comment.url }}">{{ comment.author_name }}: {{ comment.text|truncatechars:120 }}</a>
|
|
168
|
+
{% endfor %}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
Use `page=page` for one Page and `include_replies=False` for roots only. The list
|
|
172
|
+
respects the current visitor's access and Site, requires a request context and
|
|
173
|
+
must not be shared-cached. It needs no widget CSS or JavaScript.
|
|
174
|
+
[Fields, filters and caching →](docs/wiki/Recent-comments.md)
|
|
175
|
+
|
|
130
176
|
### 4. Enable email and cleanup
|
|
131
177
|
|
|
178
|
+
Version 0.2.0 includes minimal HTML emails with the site name, clear action
|
|
179
|
+
links and equivalent plain text. Existing host email overrides take precedence.
|
|
180
|
+
|
|
132
181
|
Configure Django's SMTP settings and schedule this once per minute:
|
|
133
182
|
|
|
134
183
|
```sh
|
|
@@ -169,22 +218,23 @@ cover the same topics. Start with the task you need:
|
|
|
169
218
|
| Reader behavior | [Guests](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Guest-comments.md) · [Replies and editing](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Replies-and-editing.md) |
|
|
170
219
|
| Customize | [CSS and themes](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Styling.md) · [Templates and email](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Templates.md) · [Python callbacks](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Callbacks.md) · [Django model adapters](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Object-adapters.md) |
|
|
171
220
|
| Operate | [SMTP and worker](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Email-and-worker.md) · [Deployment](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Deployment.md) · [Security and privacy](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Security-and-privacy.md) |
|
|
172
|
-
| Diagnose | [Troubleshooting / FAQ](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Troubleshooting.md) · [Example and testing](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Example-and-testing.md) |
|
|
221
|
+
| Diagnose | [Troubleshooting / FAQ](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Troubleshooting.md) · [Example and testing](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Example-and-testing.md) · [Performance and load checks](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Performance.md) |
|
|
173
222
|
|
|
174
223
|
## Release scope and verification
|
|
175
224
|
|
|
176
|
-
[0.
|
|
177
|
-
|
|
225
|
+
[0.2.0 Beta release notes](https://github.com/hardcodd/Commentail/blob/main/docs/releases/0.2.0.md) describe the changes and upgrade steps;
|
|
226
|
+
[0.1.0 release notes](https://github.com/hardcodd/Commentail/blob/main/docs/releases/0.1.0.md) preserve the initial release contract.
|
|
227
|
+
The source distribution includes the runnable Wagtail example, tests and
|
|
178
228
|
guides; the wheel includes the runtime, translations, templates and static assets.
|
|
179
229
|
|
|
180
|
-
CI
|
|
230
|
+
The CI workflow defines 30 framework/Python/database combinations, JavaScript, lint, migration drift,
|
|
181
231
|
translations and source/wheel installation. Browser checks covered installed Safari,
|
|
182
232
|
Chrome, Yandex Browser and Firefox with and without JS, plus selected VoiceOver
|
|
183
233
|
scenarios and a phone. Previous major browser versions remain unverified; this is
|
|
184
234
|
not an exhaustive accessibility or device certification.
|
|
185
235
|
|
|
186
236
|
There is no separate REST API, rich-text editor, uploads, likes, reports or live
|
|
187
|
-
updates in 0.
|
|
237
|
+
updates in 0.2.0. SMTP retries can duplicate mail after an uncertain delivery result.
|
|
188
238
|
Host-specific themes, access rules and email delivery need their own acceptance checks.
|
|
189
239
|
|
|
190
240
|
## Support Commentail
|
|
@@ -7,6 +7,9 @@
|
|
|
7
7
|
Moderated discussions, verified guests and inline replies — styled by your site.
|
|
8
8
|
|
|
9
9
|
[](https://github.com/hardcodd/Commentail/actions/workflows/tests.yml)
|
|
10
|
+
[](https://djangopackages.org/packages/p/commentail/)
|
|
11
|
+
|
|
12
|
+
English · [Русский](README.ru.md)
|
|
10
13
|
|
|
11
14
|
[Get started](#quick-start) · [Documentation](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Home.md) · [Wiki](https://github.com/hardcodd/Commentail/wiki) · [Support](#support-commentail)
|
|
12
15
|
|
|
@@ -14,7 +17,7 @@ Moderated discussions, verified guests and inline replies — styled by your sit
|
|
|
14
17
|
|
|
15
18
|
</div>
|
|
16
19
|
|
|
17
|
-
Commentail is a Django comments library
|
|
20
|
+
Commentail is a Django comments library for **Wagtail 7.4 LTS and 8.0**. Add a
|
|
18
21
|
Django template tag to an article, moderate discussions inside Wagtail, and keep
|
|
19
22
|
content, accounts and email delivery in your own application.
|
|
20
23
|
|
|
@@ -22,7 +25,10 @@ The widget inherits your site's typography and colors. CSS custom properties,
|
|
|
22
25
|
replaceable templates and Python callbacks let you adapt it without a frontend
|
|
23
26
|
framework or an external comments platform.
|
|
24
27
|
|
|
25
|
-
>
|
|
28
|
+
> **0.2.0 Beta** adds recent comments, six languages,
|
|
29
|
+
> HTML emails and indexed database reads.
|
|
30
|
+
> [Version-to-version changelog](https://github.com/hardcodd/Commentail/blob/main/CHANGELOG.md) · [Roadmap](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Roadmap.md).
|
|
31
|
+
> [Changes and upgrade notes](https://github.com/hardcodd/Commentail/blob/main/docs/releases/0.2.0.md).
|
|
26
32
|
|
|
27
33
|
## Why Commentail?
|
|
28
34
|
|
|
@@ -47,17 +53,32 @@ the visible text and author name. Choose either format or disable output in Pyth
|
|
|
47
53
|
| Component | Version / requirement |
|
|
48
54
|
| --- | --- |
|
|
49
55
|
| Python | 3.12–3.14 |
|
|
50
|
-
| Wagtail |
|
|
51
|
-
|
|
|
52
|
-
|
|
|
53
|
-
| UI languages | English and Russian |
|
|
56
|
+
| Wagtail / Django | 7.4.3+ in 7.4 / Django 5.2 or 6.0; 8.0.x / Django 5.2, 6.0 or 6.1 |
|
|
57
|
+
| Database | File SQLite or PostgreSQL 16 |
|
|
58
|
+
| UI and email languages | English, Russian, German, French, Spanish and Brazilian Portuguese |
|
|
54
59
|
| Frontend | Django templates, optional progressive JavaScript |
|
|
55
60
|
| License | [MIT](https://github.com/hardcodd/Commentail/blob/main/LICENSE) |
|
|
56
61
|
|
|
62
|
+
This table describes the 0.2.0 Beta release. CI defines all five framework
|
|
63
|
+
pairs on Python 3.12, 3.13 and 3.14 with both databases (30 combinations).
|
|
64
|
+
Package bounds are `Wagtail>=7.4.3,<8.1` and `Django>=5.2,<6.2`; only the pairs
|
|
65
|
+
listed above are supported. Wagtail 7.4 with Django 6.1 is outside this matrix.
|
|
66
|
+
Wagtail 8.1 and later require separate verification before support is declared.
|
|
67
|
+
|
|
57
68
|
Guest comments require configured SMTP and the scheduled worker. Registered
|
|
58
69
|
users can comment without an email address, but receive no mail. Your site
|
|
59
70
|
provides login and registration. No required external CDN or CAPTCHA service.
|
|
60
71
|
|
|
72
|
+
### Languages
|
|
73
|
+
|
|
74
|
+
Alongside English and Russian, 0.2.0 includes German (`de`), French (`fr`),
|
|
75
|
+
Spanish (`es`) and Brazilian Portuguese (`pt-br`) for the public UI,
|
|
76
|
+
moderation/settings and all notification emails.
|
|
77
|
+
The host site selects the active Django language; queued emails retain the
|
|
78
|
+
recipient's saved language. User comments and rejection reasons are not translated.
|
|
79
|
+
Documentation remains in English and Russian.
|
|
80
|
+
[Language configuration →](docs/wiki/Configuration.md#languages)
|
|
81
|
+
|
|
61
82
|
## Quick start
|
|
62
83
|
|
|
63
84
|
### 1. Install
|
|
@@ -65,16 +86,22 @@ provides login and registration. No required external CDN or CAPTCHA service.
|
|
|
65
86
|
In your site's virtual environment, install the release:
|
|
66
87
|
|
|
67
88
|
```sh
|
|
68
|
-
python -m pip install commentail==0.
|
|
89
|
+
python -m pip install commentail==0.2.0
|
|
69
90
|
```
|
|
70
91
|
|
|
71
|
-
For the optional PostgreSQL driver, use
|
|
72
|
-
|
|
73
|
-
and run `python -m pip install .` in its root.
|
|
92
|
+
For the optional PostgreSQL driver, use
|
|
93
|
+
`python -m pip install 'commentail[postgres]==0.2.0'`.
|
|
94
|
+
You can also extract the source distribution and run `python -m pip install .` in its root.
|
|
95
|
+
When upgrading from 0.1.1, review the
|
|
96
|
+
[upgrade notes](https://github.com/hardcodd/Commentail/blob/main/docs/releases/0.2.0.md),
|
|
97
|
+
including migration `0014_reading_indexes` and email overrides. For older
|
|
98
|
+
installations, also review the [0.1.1 notes](docs/releases/0.1.1.md). The 0.1.0 package retains
|
|
99
|
+
its original Wagtail 7.4 and Django 5.2 limits.
|
|
74
100
|
|
|
75
101
|
### 2. Connect Django and Wagtail
|
|
76
102
|
|
|
77
103
|
- Add `commentail` and `wagtail.contrib.settings` to your existing `INSTALLED_APPS`.
|
|
104
|
+
- With PostgreSQL, also include `django.contrib.postgres` (required by Django 6.x checks).
|
|
78
105
|
- Insert `commentail.middleware.CapabilityHeadersMiddleware` before CSRF middleware.
|
|
79
106
|
- Retain the host session/authentication/messages middleware and template request context processor.
|
|
80
107
|
- Include Commentail URLs **before** Wagtail's catch-all:
|
|
@@ -101,8 +128,28 @@ The template controls where Page comments are available; the corresponding Page
|
|
|
101
128
|
editor receives a Comments tab. Configure site defaults, then inherit or override
|
|
102
129
|
on individual Pages. **Review all** is the initial moderation policy.
|
|
103
130
|
|
|
131
|
+
### Recent comments elsewhere
|
|
132
|
+
|
|
133
|
+
Use the recent-comments tag on a home page, sidebar or another template:
|
|
134
|
+
|
|
135
|
+
```django
|
|
136
|
+
{% load commentail_tags %}
|
|
137
|
+
{% commentail_recent limit=5 as recent_comments %}
|
|
138
|
+
{% for comment in recent_comments %}
|
|
139
|
+
<a href="{{ comment.url }}">{{ comment.author_name }}: {{ comment.text|truncatechars:120 }}</a>
|
|
140
|
+
{% endfor %}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Use `page=page` for one Page and `include_replies=False` for roots only. The list
|
|
144
|
+
respects the current visitor's access and Site, requires a request context and
|
|
145
|
+
must not be shared-cached. It needs no widget CSS or JavaScript.
|
|
146
|
+
[Fields, filters and caching →](docs/wiki/Recent-comments.md)
|
|
147
|
+
|
|
104
148
|
### 4. Enable email and cleanup
|
|
105
149
|
|
|
150
|
+
Version 0.2.0 includes minimal HTML emails with the site name, clear action
|
|
151
|
+
links and equivalent plain text. Existing host email overrides take precedence.
|
|
152
|
+
|
|
106
153
|
Configure Django's SMTP settings and schedule this once per minute:
|
|
107
154
|
|
|
108
155
|
```sh
|
|
@@ -143,22 +190,23 @@ cover the same topics. Start with the task you need:
|
|
|
143
190
|
| Reader behavior | [Guests](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Guest-comments.md) · [Replies and editing](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Replies-and-editing.md) |
|
|
144
191
|
| Customize | [CSS and themes](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Styling.md) · [Templates and email](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Templates.md) · [Python callbacks](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Callbacks.md) · [Django model adapters](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Object-adapters.md) |
|
|
145
192
|
| Operate | [SMTP and worker](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Email-and-worker.md) · [Deployment](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Deployment.md) · [Security and privacy](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Security-and-privacy.md) |
|
|
146
|
-
| Diagnose | [Troubleshooting / FAQ](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Troubleshooting.md) · [Example and testing](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Example-and-testing.md) |
|
|
193
|
+
| Diagnose | [Troubleshooting / FAQ](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Troubleshooting.md) · [Example and testing](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Example-and-testing.md) · [Performance and load checks](https://github.com/hardcodd/Commentail/blob/main/docs/wiki/Performance.md) |
|
|
147
194
|
|
|
148
195
|
## Release scope and verification
|
|
149
196
|
|
|
150
|
-
[0.
|
|
151
|
-
|
|
197
|
+
[0.2.0 Beta release notes](https://github.com/hardcodd/Commentail/blob/main/docs/releases/0.2.0.md) describe the changes and upgrade steps;
|
|
198
|
+
[0.1.0 release notes](https://github.com/hardcodd/Commentail/blob/main/docs/releases/0.1.0.md) preserve the initial release contract.
|
|
199
|
+
The source distribution includes the runnable Wagtail example, tests and
|
|
152
200
|
guides; the wheel includes the runtime, translations, templates and static assets.
|
|
153
201
|
|
|
154
|
-
CI
|
|
202
|
+
The CI workflow defines 30 framework/Python/database combinations, JavaScript, lint, migration drift,
|
|
155
203
|
translations and source/wheel installation. Browser checks covered installed Safari,
|
|
156
204
|
Chrome, Yandex Browser and Firefox with and without JS, plus selected VoiceOver
|
|
157
205
|
scenarios and a phone. Previous major browser versions remain unverified; this is
|
|
158
206
|
not an exhaustive accessibility or device certification.
|
|
159
207
|
|
|
160
208
|
There is no separate REST API, rich-text editor, uploads, likes, reports or live
|
|
161
|
-
updates in 0.
|
|
209
|
+
updates in 0.2.0. SMTP retries can duplicate mail after an uncertain delivery result.
|
|
162
210
|
Host-specific themes, access rules and email delivery need their own acceptance checks.
|
|
163
211
|
|
|
164
212
|
## Support Commentail
|