Flask + Vue rewrite of the classic-ASP shopdb, built as a plugin framework so sister GE Aerospace sites can adopt it. Product version 0.7.0-pre-0.8.0, plugin contract 0.11.0, 966 backend tests. Key entry points: - docs/INSTALL-WINDOWS-IIS.md - tested Windows + IIS install runbook (own-site and subpath deployment methods) - docs/PILOT-DEPLOY.md - production pilot: stand up + import + verify - docs/IMPORT-API.md - schema-agnostic legacy data import contract - scripts/site_imports/wjf/ - West Jefferson reference import loader - docs/adr/ - twelve accepted architecture decision records
44 lines
1.9 KiB
Cheetah
44 lines
1.9 KiB
Cheetah
# $Name plugin
|
|
|
|
$description
|
|
|
|
This plugin was generated by `flask plugin new $name`. It satisfies the framework contract out of the box. Replace the example model and routes with your domain.
|
|
|
|
## What's here
|
|
|
|
- `plugin.py` - the `${Name}Plugin` class extending `BasePlugin`. Edit `init_app` for custom setup, `on_install` to seed reference data.
|
|
- `models/$name.py` - example Asset extension table. Replace `examplefield` with your domain fields.
|
|
- `api/routes.py` - example list and detail endpoints. Add CRUD as needed.
|
|
- `schemas/__init__.py` - marshmallow schema stub for request/response validation.
|
|
- `tests/test_plugin.py` - smoke tests asserting contract compliance.
|
|
- `manifest.json` - plugin metadata. Bump `version` on changes; keep `core_version` range broad.
|
|
|
|
## Common edits
|
|
|
|
| You want to... | Do this |
|
|
|---|---|
|
|
| Add a hook (search, navigation, dashboard widget) | Override the method in `${Name}Plugin`. See the PLUGIN-HOOKS wiki page. |
|
|
| Accept external collector data | Override `get_collector_schema()` to return a JSON Schema. See ADR-006. |
|
|
| Add another model | Create `models/<other>.py`, export it in `models/__init__.py`, return it in `get_models()`. |
|
|
| Add a CLI command | Override `get_cli_commands()` returning a list of Click commands. |
|
|
|
|
## Frontend
|
|
|
|
Vue components for this plugin live under `frontend/src/views/$name/` (per project convention). Backend scaffolding does not generate frontend yet; copy from an existing plugin's view files (e.g., `frontend/src/views/network/`) as a starting point.
|
|
|
|
## Install and run
|
|
|
|
```bash
|
|
flask plugin install $name
|
|
flask db migrate -m "Add $name plugin tables"
|
|
flask db upgrade
|
|
pytest plugins/$name/tests/
|
|
```
|
|
|
|
## References
|
|
|
|
- the PLUGIN-HOOKS wiki page - canonical hook reference
|
|
- the PLUGIN-QUICKSTART wiki page - 30-minute walkthrough
|
|
- `migrations/adr/ADR-001-asset-as-platform-contract.md` - the platform contract
|
|
- `migrations/adr/ADR-002-plugin-versioning.md` - versioning rules
|