Metadata-Version: 2.4
Name: crx_hslayers
Version: 6.5.0
Summary: HSLayers-NG integrated into Wagtail CMS with Codered
Author-email: Plan4All <h4e@lesprojekt.cz>
Project-URL: Homepage, https://github.com/hslayers/crx-hslayers
Project-URL: Bug Tracker, https://github.com/hslayers/crx-hslayers/issues
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Framework :: Wagtail :: 5
Classifier: Framework :: Wagtail :: 6
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: json5
Requires-Dist: coderedcms<6.0,>=3.0
Requires-Dist: pynpm>=0.1.2
Requires-Dist: wagtail<7.0,>=5.0
Requires-Dist: wagtail_crx_block_frontend_assets
Provides-Extra: test
Requires-Dist: pytest>=7.4; extra == "test"
Requires-Dist: pytest-django>=4.8; extra == "test"
Requires-Dist: tox>=4; extra == "test"

# HSLayers-NG map widget for Wagtail CodeRed CMS

Note: Has npm dependency on [HSLayers-NG](https://www.npmjs.com/package/hslayers-ng-app) that gets automatically installed into static files. `python manage.py collectstatic` must be executed for the module to correctly locate the HSLayers bundles.

## Compatibility

This package supports the following versions (aligned with [CodeRed CMS compatibility matrix](https://docs.coderedcorp.com/wagtail-crx/releases/index.html)):

| CodeRed CMS | Wagtail | Python    | Status |
|-------------|---------|-----------|--------|
| 5.0         | 6.3-6.4 | 3.9-3.13  | ✅ Supported |
| 4.1         | 6.3     | 3.9-3.13  | ✅ Supported |
| 4.0         | 6.0-6.2 | 3.8-3.12  | ✅ Supported |
| 3.0         | 5.2 LTS | 3.8-3.12  | ✅ Supported |

**Minimum Requirements:**
- **CodeRed CMS**: 3.0+
- **Wagtail**: 5.0+
- **Python**: 3.8+

**Note:** Wagtail 4.x and earlier are not supported due to template tag API differences (`classname` parameter requirement).

## Instalation

1. Install this package from PyPi using folowing command:

    ```
    $ pip install crx-hslayers wagtail-crx-block-frontend-assets
    ```

2. Add 'hslayers' and 'wagtail_crx_block_frontend_assets' to the INSTALLED_APPS list in the settings/base.py

    ```python
    INSTALLED_APPS = [
        # This project
        'website',

        # CodeRed CMS
        'coderedcms',
        'bootstrap4',
        ...
        'wagtail_crx_block_frontend_assets',
        'crx_hslayers'
    ]
    ```

3. Add MapBlock to your model, for example:
    ```python
    from wagtail.fields import StreamField
    from coderedcms.models import CoderedWebPage
    from crx_hslayers.blocks import MapBlock


    class WebPage(CoderedWebPage):  
        
        ...

        body = StreamField(
            block_types=[
                ("map_block", MapBlock())
            ],
            null=True,
            blank=True,
            use_json_field=True,
        )

        ...

    ```

4. Define place in your templates where you want your MapBlock assets to be rendered like this:
    ```django
    {% extends "coderedcms/pages/base.html" %}

    {% block custom_assets %}
    {{ block.super }}
    {% include "wagtail_crx_block_frontend_assets/includes/block_assets.html" with required_file_extension=".css" %}
    {% endblock custom_assets %}

    {% block custom_scripts %}
    {{ block.super }}
    {% include "wagtail_crx_block_frontend_assets/includes/block_assets.html" with required_file_extension=".js" %}
    {% endblock custom_scripts %}
    ```

5. Create new migration with changes made to your model
    ```
    python manage.py makemigrations
    ```

6. Now apply your new migration.
    ```
    python manage.py migrate
    ```

7. Install HSLayers app package from npm
    ```
    cd {YOUR PYTHON VENV PATH}/lib/python3.12/site-packages/crx_hslayers/static/ 
    npm install
    ```

8. Collect static files from crx-hslayers to your Wagtail site

    ```
    $ python manage.py collectstatic
    ```

## Development

Update semantic version of the package

Run test update without commiting

```
$ bumpver update --patch(--minor|--major) --dry
```

Run update and commit the changes to the repo

```
$ bumpver update --patch(--minor|--major)
```

## Manual package publishing

Delete all previous builds in the dist/\* directory.

Linux:

```
python3 -m build
python3 -m pip install --upgrade twine
python3 -m twine upload dist/*
```

Windows:

```
py -m build
py -m pip install --upgrade twine
py -m twine upload dist/*
```

Use `__token__` for the username and API token acquired at pypi.org for password.

Upload to Test PyPi:

```
python3 -m twine upload --repository testpypi dist/*
```
