https://github.com/wolflu05/inventree-report-lsp-plugin
A report editor plugin that is powered by django-template-lsp.
https://github.com/wolflu05/inventree-report-lsp-plugin
inventree inventreeplugins
Last synced: 5 months ago
JSON representation
A report editor plugin that is powered by django-template-lsp.
- Host: GitHub
- URL: https://github.com/wolflu05/inventree-report-lsp-plugin
- Owner: wolflu05
- License: gpl-3.0
- Created: 2025-03-24T13:48:03.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2026-01-15T10:51:17.000Z (5 months ago)
- Last Synced: 2026-01-15T15:51:49.321Z (5 months ago)
- Topics: inventree, inventreeplugins
- Language: TypeScript
- Homepage:
- Size: 358 KB
- Stars: 4
- Watchers: 2
- Forks: 1
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# inventree-report-lsp-plugin
[](https://opensource.org/license/gpl-3-0)

A report editor plugin that is powered by [django-template-lsp](https://github.com/fourdigits/django-template-lsp).

## ⚙️ Installation
1. Install the `inventree-report-lsp-plugin` from the Admin Center > Plugins > Install plugin. (Make sure the user interface plugin integration is enabled.)
2. Now the LSP server needs to be started separately via the `inventree-report-lsp` cmd and the requests to `/plugins/report-lsp/ws` need to be proxied to it. If you're using the official docker stack, follow the guide below:
> [!IMPORTANT]
> At least InvenTree v0.18.0 is required to use this plugin.
### 🐳 Docker
Add this extra container to the `docker-compose.yml` file:
```yml
inventree-report-lsp:
image: inventree/inventree:${INVENTREE_TAG:-stable}
container_name: inventree-report-lsp
command: /bin/bash -c "invoke plugins && inventree-report-lsp"
env_file:
- .env
volumes:
- ${INVENTREE_EXT_VOLUME}:/home/inventree/data:z
restart: unless-stopped
```
Add this `proxy_route` to the `Caddyfile`:
```diff
forward_auth {$INVENTREE_SERVER:"http://inventree-server:8000"} {
uri /auth/
}
}
+ reverse_proxy /plugin/report-lsp/ws "http://inventree-report-lsp:8765"
# All other requests are proxied to the InvenTree server
reverse_proxy {$INVENTREE_SERVER:"http://inventree-server:8000"} {
```
## 🏃 Usage
Goto the Admin Center > Label Templates or Report Templates. Click on any in the table and select the "Report Editor". For the first load, this can take some time (up to ~30s) until the data is collected. The status bar at the bottom should show `LSP Running (Connected)` when its ready.
## 🧑💻 Development
For this plugin to work in development, the inventree source has to be patched temporary:
1. Add this to the InvenTree `vite.config.ts`:
```diff
proxy: {
'/media': {
target: 'http://localhost:8000',
changeOrigin: true,
secure: true
},
+ '/static/plugins/report-lsp/dist/': {
+ target: 'http://localhost:5212',
+ changeOrigin: true,
+ secure: true,
+ ws: true
+ },
+ "/plugin/report-lsp/ws": {
+ target: "http://localhost:8765",
+ changeOrigin: true,
+ secure: true,
+ ws: true,
+ }
},
```
2. Remove Strict Mode temporary from `src/frontend/src/main.tsx`:
```diff
ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
-
-
);
```
3. Set the `INVENTREE_REPORT_LSP_DEV` to `True` before starting the dev server
4. Install this package as editable pip package into your venv via
```bash
pip install -e path/to/the/inventree-report-lsp-plugin
```
5. Install frontend dependencies via `cd frontend && npm ci`
6. Run the LSP in the background by invoking the `inventree-report-lsp` command in a terminal where the venv is activated. (If you want to use a custom djlsp instance because you want to do changes there, you need to specify the `INVENTREE_DJANGO_LSP_SERVER_CMD` env variable. E.g. `/path/to/django-template-lsp/env/bin/djlsp`)
7. Run the Frontend dev server via `cd frontend && npm run dev`