My projects

Complete technical settings reference

Every Commentail 1.3.2 technical option, its default and the rules for overrides and zero values.

Lesson 22 / 22 · Commentail 1.3.2

This is the complete technical reference for 1.3.2, not a dictionary to paste in full. Keep library defaults unless a particular requirement calls for an override.

Read the table

Durations are integer seconds. None is Python's value, not the string "None". Callbacks use full import-path strings. Normal limits are positive; zero is supported only for explicitly documented disable switches. Run python manage.py check; commentail.E001 means configuration must be corrected before use.

Resolution is library default → default section → exact Site hostname. Merge tutorial examples into one COMMENTAIL dictionary. Multiple assignments do not merge; the last replaces earlier values.

Output format and object registration

Setting Default Purpose
STRUCTURED_DATA "both" Schema.org output: both, json_ld, microdata or off; per-host overrides supported. See Structured data.
OBJECT_ADAPTERS {} Model label → adapter class import path (project-wide).

CSV rule imports

Setting Default Purpose
RULES_CSV_MAX_BYTES 5242880 Maximum CSV upload bytes (project-wide).
RULES_CSV_MAX_ROWS 20000 Maximum imported rule rows (project-wide).

Forms, editing and email confirmation

Setting Default Purpose
FORM_TICKET_SECONDS 3600 Private form/recovery ticket lifetime; also the local binding lifetime for bundled Google/Yandex widgets.
FORM_IP_LIMIT_PER_MINUTE 120 New form/recovery tickets per IP/Site/minute, including registered users and navigation.
FORM_IP_LIMIT_PER_HOUR 1200 New form/recovery tickets per IP/Site/hour. Existing valid forms remain usable.
EDIT_WINDOW_SECONDS 900 Edit window from publication; accepted replies lock earlier.
EMAIL_CONFIRM_SECONDS 86400 Confirmation deadline from initial acceptance.
GUEST_GRANT_SECONDS 2592000 Browser proof lifetime from confirmation; never sliding.

CAPTCHA and its limits

Setting Default Purpose
CAPTCHA_SECONDS 300 Arithmetic/custom CAPTCHA expiry. Bundled Google/Yandex bindings use FORM_TICKET_SECONDS; provider token expiry remains enforced remotely.
CAPTCHA_ATTEMPTS 5 Attempts per challenge.
CAPTCHA_IP_LIMIT_PER_MINUTE 10 Challenge creations per IP/Site/minute.
CAPTCHA_IP_LIMIT_PER_HOUR 100 Challenge creations per IP/Site/hour.
CAPTCHA_BACKEND None Backend class import path; None selects arithmetic.
CAPTCHA_OPTIONS {} External adapter site_key, secret_key and optional timeout (1–10 seconds, default 3). Replaced as a whole per Site.
GUEST_CAPTCHA_MODE 'adaptive' Remembered guests skip CAPTCHA unless enabled header signals apply; 'always' checks every guest.

Comment submissions and confirmation resends

Setting Default Purpose
AUTHOR_MIN_INTERVAL 30 Minimum seconds between author submissions.
AUTHOR_LIMIT_PER_HOUR 20 Accepted submissions per account/email per Site/hour.
IP_LIMIT_PER_HOUR 100 Accepted submissions per IP per Site/hour.
RESEND_MIN_INTERVAL 60 Minimum seconds between confirmation resends.
RESEND_LIMIT_PER_HOUR 5 Resends per author/Site/hour.
RESEND_IP_LIMIT_PER_HOUR 20 Resends per IP/Site/hour.

Proxies and additional spam signals

Setting Default Purpose
TRUSTED_PROXIES [] Trusted proxy networks; [] uses the direct peer and ignores forwarded IPs. Configure explicitly behind nginx; see the example and trust boundaries.
GUEST_REQUEST_CHECKS ['missing_user_agent', 'cross_site'] Supplemental guest header signals; [] disables these signals only.
GUEST_FORM_MIN_SECONDS 2 Fast-form review threshold, not a submission delay; 0 disables timing.
GUEST_ATTEMPTS_PER_MINUTE 10 Guest attempts per session/Site, including failed proofs.
GUEST_IP_ATTEMPTS_PER_MINUTE 30 Guest attempts per IP/Site/minute.
GUEST_IP_ATTEMPTS_PER_HOUR 300 Guest attempts per IP/Site/hour.
GUEST_DUPLICATE_WINDOW_SECONDS 3600 Review repeated guest text within this Site/window; 0 disables comparison and new fingerprint storage.
GUEST_DUPLICATE_MIN_LENGTH 80 Minimum normalized text length for duplicate checks.
GUEST_LINK_REVIEW_THRESHOLD 3 Review guest text with at least this many explicit HTTP(S)/www link occurrences; 0 disables.

Mail queue and action links

Setting Default Purpose
MAIL_RETENTION_SECONDS 604800 Queued notification lifetime.
MAIL_LEASE_SECONDS 300 Outbox worker claim lease.
MAIL_RETRY_SECONDS [60, 300, 900] Automatic retry delay sequence in seconds.
ACTION_LINK_SECONDS 2592000 General action-link lifetime, not an extension of edit eligibility.

Project callbacks

Setting Default Purpose
CAN_SEND_GUEST_EMAIL None Offline guest recipient access-check callback import path.
GET_COMMENT_TEMPLATES None Dynamic Page template dependency callback import path.
GET_AVATAR None Avatar callback import path.
GET_AUTHOR_NAME None Current account name callback import path.

Settings outside this dictionary

Open/Read only/Hidden, moderation, access, text length, clickable links and decision notices belong in Wagtail. Send emails and Highlight staff are Site-only; the other listed editorial fields support Page/object overrides. Mail transport uses EMAIL_BACKEND and Django/provider settings rather than COMMENTAIL keys.

Existing tokens retain their issued deadlines after a duration change. Raising quotas should not substitute for correcting proxy configuration. Hostname CAPTCHA_OPTIONS replaces the whole dictionary. OBJECT_ADAPTERS and RULES_CSV_* belong only in default.

After a change run check, restart affected processes and repeat the relevant reader flow. For delivery, verify both website and worker environments.

Related lessons

Related documentation

Was this article useful?

Comments 0

Name: up to 40 characters.

After submitting, we will email you a link to confirm your email address.

Maximum 5000 characters.

No published comments yet.