Metadata-Version: 2.4
Name: ocyan.plugin.seo
Version: 0.2.1
Summary: SEO-friendly media storage settings for MandelBlogStack Django sites
Home-page: https://git.mandelblog.com/mandel-plugins/ocyan.plugin.seo
Author: Mandel
Author-email: info@mandelblog.com
License: LicenseRef-Proprietary
Classifier: Framework :: Ocyan
Classifier: Environment :: Plugins
Requires-Python: >=3.10
Description-Content-Type: text/x-rst
License-File: COPYRIGHT
Requires-Dist: Django<6,>=5
Requires-Dist: ocyan.core
Requires-Dist: seo-ville-slugger
Provides-Extra: test
Requires-Dist: configtype; extra == "test"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license
Dynamic: license-file
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

Ocyan plugin seo
================

About
-----
``ocyan.plugin.seo`` is a small MandelBlogStack settings plugin.

It does **not** provide page-level SEO metadata, structured data, or Wagtail editor
fields. Its responsibility is narrower:

* enable ``seo-ville-slugger`` as the default Django file storage backend
* configure the SEO-friendly sorl-thumbnail backend and storage classes
* preserve a deterministic settings contract that other Mandel plugins can rely on

Runtime contract
----------------
When loaded through Ocyan's plugin system, the plugin contributes:

* ``STORAGES["default"]["BACKEND"] = "seo.ville.slugger.SEOStorage"``
* ``THUMBNAIL_BACKEND = "seo.ville.sorl.SEOThumbnailBackend"``
* ``THUMBNAIL_STORAGE = "seo.ville.sorl.SEOThumbnailStorage"``
* ``SEO_VILLE_SLUGGER_ALLOW_COPIES = True``

The plugin has no models, migrations, templates, static assets, signals, or Wagtail
hooks.

Compatibility
-------------
Supported release validation targets:

* Python 3.12
* Django 5.x

This package constrains Django to ``>=5,<6`` so clean installs stay on the supported
MandelBlogStack line even though ``seo-ville-slugger`` itself is broader.

Installation
------------
Add ``ocyan.plugin.seo`` to your project dependencies and Ocyan plugin list.

Validation
----------
Repository-owned validation covers:

* clean package import
* Ocyan plugin entrypoint import
* deterministic settings contribution
* Django system checks in an isolated repository settings module
