clean up and Update README.md and todo.md

This commit is contained in:
Matthias Lotz 2025-06-19 12:50:28 +02:00
parent 4f7c1d4288
commit 943d2cfe43
5 changed files with 4 additions and 266 deletions

8
.env
View File

@ -1,8 +0,0 @@
ODOO_VERSION=17.0
CONTAINER_NAME_EXTENSION=17_dev
ODOO_PORT=9013
DB_HOST=hobbyhimmel_odoo_17_dev_db
DB_PORT=5432
DB_USER=odoo
DB_PASSWORD=odoo
DB_NAME=hobbyhimmel

View File

@ -1,69 +0,0 @@
name: POS Test Feedback
about: Rückmeldung zu einem Test des POS-Systems geben
title: "[Feedback] "
labels: [feedback, test]
assignees: []
body:
- type: markdown
attributes:
value: |
## 🧪 POS-Test: Feedbackformular
Bitte gib uns Rückmeldung zu den einzelnen Funktionen. Beschreibe ggf. Probleme oder Auffälligkeiten.
- type: textarea
id: sonstiges
attributes:
label: Sonstiges Feedback oder Fehler
description: Alles andere, was dir beim Test aufgefallen ist (z.B. Layout, Ladezeiten, Fehlermeldungen).
- type: textarea
id: nutzerauswahl
attributes:
label: Nutzer auswählen
description: Funktioniert die Auswahl des Nutzers im POS wie erwartet?
placeholder: z.B. Nutzer nicht auffindbar, Anzeige langsam etc.
- type: textarea
id: haftung
attributes:
label: Haftungsausschluss prüfen
description: Wird der Haftungsausschluss korrekt angezeigt bzw. berücksichtigt?
- type: textarea
id: maschinenfreigabe
attributes:
label: Maschinenfreigabe prüfen
description: Wird korrekt angezeigt, ob der Nutzer eine Einweisung für eine Maschine hat?
- type: textarea
id: abrechnung
attributes:
label: Abrechnung (Bargeld / SumUp)
description: Funktioniert die Abrechnung für den Nutzer?
- type: textarea
id: coupon
attributes:
label: Coupons (erstellen / einlösen)
description: Funktionieren Erstellen und Einlösen von Coupons korrekt?
- type: textarea
id: nutzerdaten
attributes:
label: Nutzerdaten aktualisieren / Haftungsausschluss abwählen
description: Lassen sich Nutzerdaten wie RFID oder der Haftungsausschluss korrekt ändern?
- type: textarea
id: einweisung
attributes:
label: Einweisung verkaufen / prüfen
description: Lässt sich eine Einweisung verkaufen und wird sie korrekt zugewiesen?
- type: textarea
id: backend
attributes:
label: Backend-Funktionen
description: Können Maschinen und Einweisungen im Backend wie erwartet verwaltet werden?

View File

@ -1,154 +0,0 @@
name: odoo-restore-open_workshop-install
on:
schedule:
- cron: "43 5 * * *" # Dieser Job wird täglich um 05:43 Uhr UTC ausgeführt.
push:
branches:
- 13.0_dev
env:
URL_RESTORE: http://hobbybackend2.fritz.box:9013
jobs:
run-odoo-backup-in-docker:
runs-on: ["hobbybackend2", "ubuntu-latest"] # Gibt an, dass der Job entweder auf 'hobbybackend2' und 'ubuntu-latest' läuft.
steps:
- name: Checkout the repository
# Dieser Schritt holt den Code des Repositories in die Action-Umgebung.
# Dies ist notwendig, um auf Dateien im Repository wie Skripte oder Konfigurationen zugreifen zu können.
uses: actions/checkout@v3
- name: Load environment variables from .env
run: |
set -a
source .env
set +a
# Schreibe die Variablen in $GITHUB_ENV für die Verwendung in der YAML
while IFS= read -r line; do
if [[ ! -z "$line" && "$line" != \#* ]]; then
echo "$line" >> $GITHUB_ENV
fi
done < .env
- name: Set up Docker container
# Dieser Schritt startet einen Docker-Container basierend auf dem "ubuntu:latest" Image.
# Er läuft im Hintergrund (`-d`), und wir verwenden `tail -f /dev/null`, um den Container laufend zu halten.
# Danach werden benötigte Pakete wie `gnupg`, `openssh-client`, `curl` und `sshpass` installiert.
run: |
docker run -d --name ${{ github.workflow }} ubuntu:latest tail -f /dev/null
docker exec ${{ github.workflow }} apt-get update
docker exec ${{ github.workflow }} apt-get install -y gnupg2 openssh-client curl sshpass nano
- name: Copy SSH keys to the container
# In diesem Schritt werden SSH-Schlüssel aus den GitHub Secrets in temporäre Dateien geschrieben.
# Diese Dateien werden dann in den Docker-Container kopiert, um SSH-Zugriff innerhalb des Containers zu ermöglichen.
# Schließlich werden die Berechtigungen des privaten Schlüssels (id_rsa) auf 600 gesetzt.
run: |
docker exec ${{ github.workflow }} mkdir -p /root/.ssh
echo "${{ secrets.OPENSSH_PRIVATE_KEY }}" > ssh_private_key
echo "${{ secrets.OPENSSH_PUBLIC_KEY }}" > ssh_public_key
docker cp ssh_private_key ${{ github.workflow }}:/root/.ssh/id_rsa
docker cp ssh_public_key ${{ github.workflow }}:/root/.ssh/id_rsa.pub
docker exec ${{ github.workflow }} chmod 600 /root/.ssh/id_rsa
- name: Copy PGP keys to the container
# Hier werden die GPG-Schlüssel (PGP-Schlüssel) in den Container kopiert, um Backups verschlüsseln zu können.
# Die GPG-Schlüssel werden ebenfalls aus den GitHub Secrets entnommen und temporär in Dateien gespeichert,
# die anschließend importiert werden.
run: |
echo "${{ secrets.PGP_PRIVATE_KEY }}" > pgp_private_key.asc
echo "${{ secrets.PGP_PUBLIC_KEY }}" > pgp_public_key.asc
docker cp pgp_private_key.asc ${{ github.workflow }}:/root/pgp_private_key.asc
docker cp pgp_public_key.asc ${{ github.workflow }}:/root/pgp_public_key.asc
docker exec ${{ github.workflow }} gpg --batch --import /root/pgp_private_key.asc
docker exec ${{ github.workflow }} gpg --import /root/pgp_public_key.asc
rm pgp_private_key.asc pgp_public_key.asc
- name: Add Host to Known Hosts
# In diesem Schritt wird der SSH-Host-Schlüssel des Remote-Servers (ALL_INKL_HOST) zum "known_hosts"-File
# des Containers hinzugefügt, um SSH-Verbindungen zum Remote-Server zu ermöglichen, ohne dass Warnungen angezeigt werden.
# Der Host-Schlüssel wird mit `ssh-keyscan` gesammelt und in `known_hosts` eingetragen.
run: |
echo "This is the host: ${{ secrets.ALL_INKL_HOST }}"
docker exec ${{ github.workflow }} bash -c "mkdir -p /root/.ssh && touch /root/.ssh/known_hosts && chmod 600 /root/.ssh/known_hosts"
docker exec ${{ github.workflow }} bash -c "ssh-keyscan -H '${{ secrets.ALL_INKL_HOST }}' >> /root/.ssh/known_hosts"
docker exec ${{ github.workflow }} bash -c "cat /root/.ssh/known_hosts"
- name: Run the restore script in Docker container
# In diesem Schritt wird das Skript `odoo-restore.sh` in den Container kopiert und dort ausgeführt.
# Die für das Skript notwendigen Umgebungsvariablen werden mitgegeben.
# Das Skript entpackt das Backup-Archiv.
# Das Skript löscht die bisherige Datenbank und fügt die neue Datenbank wieder ein.
# Anschließend wird das Odoo filestore wiederhergestellt.
run: |
docker cp ./scripts/odoo-restore.sh ${{ github.workflow }}:/root/odoo-restore.sh
docker exec ${{ github.workflow }} chmod +x /root/odoo-restore.sh
docker exec -e ADMIN_PASSWORD=${{ secrets.ODOO_ADMIN_PASSWORD }} \
-e sftp_host=${{ secrets.SFTP_HOST }} \
-e sftp_user=${{ secrets.SFTP_USER }} \
-e sftp_password=${{ secrets.SFTP_PASSWD }} \
-e gpg_password=${{ secrets.GPG_PASSPHRASE }} \
${{ github.workflow }} /bin/bash -c "bash /root/odoo-restore.sh '${{ env.URL_RESTORE }}'"
- name: Stop and remove Docker container
# Nachdem das Restore abgeschlossen ist, wird der Docker-Container gestoppt und entfernt,
# um keine Ressourcen auf dem Host unnötig zu verbrauchen.
run: |
docker stop ${{ github.workflow }}
docker rm ${{ github.workflow }}
- name: Clone or update custom_addons open_workshop repository
run: |
echo "Container Name Extension: ${{ env.CONTAINER_NAME_EXTENSION }}"
docker exec hobbyhimmel_odoo_${{ env.CONTAINER_NAME_EXTENSION }} /bin/bash -c "
git config --global pull.ff only && \
if [ ! -d /home/odoo/custom_addons/open_workshop ]; then
git clone https://gitea:${{ secrets.BUILD_ACTION }}@gitea.lan.hobbyhimmel.de/hobbyhimmel/open_workshop.git /home/odoo/custom_addons/open_workshop;
else
cd /home/odoo/custom_addons/open_workshop && \
git remote set-url origin https://gitea:${{ secrets.BUILD_ACTION }}@gitea.lan.hobbyhimmel.de/hobbyhimmel/open_workshop.git && \
git fetch && git checkout ${{ env.ODOO_VERSION }}_dev && git pull;
fi"
- name: Uninstall vvow_pos
run: |
docker exec -e ODOO_URL=${{ env.URL_RESTORE }} \
-e ODOO_DB=${{ env.DB_NAME }} \
-e ODOO_USERNAME=${{ secrets.ODOO_HOBBYHIMMEL_ADMIN }} \
-e ODOO_PASSWORD=${{ secrets.ODOO_HOBBYHIMMEL_ADMIN_PASSWORD }} \
hobbyhimmel_odoo_${{ env.CONTAINER_NAME_EXTENSION }} \
/bin/bash -c "
cd /home/odoo/custom_addons/open_workshop/scripts && \
python3 uninstall_rpc.py vvow_pos"
- name: Fix Database hobbyhimmel with fix_missing_pos_partner.py
# In diesem Schritt wird das Skript `fix_missing_pos_partner.py` ausgeführt, um sicherzustellen, dass alle Partner in der Datenbank korrekt sind.
run: |
docker exec hobbyhimmel_odoo_${{ env.CONTAINER_NAME_EXTENSION }} /bin/bash -c "
cd /home/odoo/custom_addons/open_workshop/scripts && \
/opt/odoo/odoo/odoo-bin shell -d ${{ env.DB_NAME }} < fix_missing_pos_partner.py"
- name: Install open_workshop
# Install open_workshop and run necessary migrations
run: |
docker exec hobbyhimmel_odoo_${{ env.CONTAINER_NAME_EXTENSION }} /bin/bash -c "
/opt/odoo/odoo/odoo-bin -d ${{ env.DB_NAME }} -i open_workshop --stop-after-init"
docker restart hobbyhimmel_odoo_${{ env.CONTAINER_NAME_EXTENSION }}
- name: Import Machine to Product and Training relation
run: |
docker exec hobbyhimmel_odoo_${{ env.CONTAINER_NAME_EXTENSION }} /bin/bash -c "
cd /home/odoo/custom_addons/open_workshop/scripts && \
/opt/odoo/odoo/odoo-bin shell -d ${{ env.DB_NAME }} < import_machine_products.py"
- name: Uninstall vvow_einweisungen
run: |
docker exec -e ODOO_URL=${{ env.URL_RESTORE }} \
-e ODOO_DB=${{ env.DB_NAME }} \
-e ODOO_USERNAME=${{ secrets.ODOO_HOBBYHIMMEL_ADMIN }} \
-e ODOO_PASSWORD=${{ secrets.ODOO_HOBBYHIMMEL_ADMIN_PASSWORD }} \
hobbyhimmel_odoo_${{ env.CONTAINER_NAME_EXTENSION }} \
/bin/bash -c "
cd /home/odoo/custom_addons/open_workshop/scripts && \
python3 uninstall_rpc.py vvow_einweisungen"

View File

@ -1,6 +1,6 @@
# Open Workshop (open_workshop ows) # Open Workshop (open_workshop ows)
Dieses Odoo v13.0 Modul erweitert das POS- und Kontakt-Modul um Funktionen für offene Werkstätten (FabLabs, Makerspaces etc.) und dient der Verwaltung von Maschinen, Naschinen Einweisungen Produkten, Maschinen Nutzungsprodukten und Zugangsberechtigungen zu den Maschinen. Dieses Odoo v17.0 Modul erweitert das POS- und Kontakt-Modul um Funktionen für offene Werkstätten (FabLabs, Makerspaces etc.) und dient der Verwaltung von Maschinen, Naschinen Einweisungen Produkten, Maschinen Nutzungsprodukten und Zugangsberechtigungen zu den Maschinen.
## Funktionen ## Funktionen
@ -28,40 +28,10 @@ Dieses Odoo v13.0 Modul erweitert das POS- und Kontakt-Modul um Funktionen für
## Installation ## Installation
1. Dieses Modul in den Custom-Addons-Ordner kopieren 1. Dieses Modul in den Custom-Addons-Ordner kopieren
2. Vor der Installation von open_worshop muss vvow_pos deinstalliert werden. Die Funktionalität von vvow_pos wird durch open_workshop ersetzt und erweitert. 2. Im Odoo Backend unter Apps installieren
3. ggf. muss die alte Datenbank manuell migiriert werden, es gibt ca 9 gelöscht res.partner auf die Verweise aus POS bestehen. Diese res.parnter müssen wieder hergestellt werden. Dazu gibt es ein Skript unter
```folder
scripts/fix_missing_pos_partner.py
```
```bash
opt/odoo/odoo/odoo-bin shell -d hobbyhimmel < scrpts/fix_missing_pos_partner.py
```
4. Odoo starten mit:
```bash
odoo-bin -d deine_datenbank -u open_workshop
```
5. Alternativ im Backend unter Apps installieren
## Automatische Migrationen
Beim ersten Laden des Moduls werden folgende Migrationen durchgeführt:
- Bestehende `res.partner` erhalten automatisch `ows.user`-Eintrag (inkl. Übernahme alter Felder wie vvow_birthday, vvow_security, vvow_security_id, vvow_rfid.
- Alte Felder mit Maschinenfreigaben (`vvow_holz_*`, `vvow_metall_*`, `vvow_fablab_*`) werden in `ows.machine.access` übertragen
- inkl. Übernahme des Änderungsdatum aus `mail.message` wann der Nutzer die Einweisung erhalten hat (ist noch fehlerhaft)
## Entwicklerhinweise ## Entwicklerhinweise
### post_init_hook
Die Datei `post_init_hook.py` ruft automatisch nach der Installation folgende Methoden auf:
```python
res.partner.migrate_existing_partners()
res.partner.migrate_machine_access_from_old_fields()
```
### Datenimport
- Maschinenbereiche, Maschinen werden über `.xml`-Dateien in `data/` geladen
- Die Zuordnung von Maschine zu Einweisungsprodukten und Nutzungsprodukten muss derzeit noch manuell erstellt werden. Ein skript dafür folgt.
## ToDos ## ToDos
- Bearbeitung der Maschinenfreigaben im Backend - Bearbeitung der Maschinenfreigaben im Backend
- Automatische Erstellung von `mail.message` bei manueller Freigabe - Automatische Erstellung von `mail.message` bei manueller Freigabe

View File

@ -1,4 +1,3 @@
[ ] Help System [ ] Help System
[ ] Möglichkeit, Einweisungen manuell zu setzen? [x] Möglichkeit, Einweisungen manuell zu setzen?
[ ] Möglichkeit, Einweisungen von Personen im Backend zurückzusetzen (geht im Moment nur über die Datenbank direkt) [x] Möglichkeit, Einweisungen von Personen im Backend zurückzusetzen -> Über Kontak -> bearbeiten -> Tab Offene Werkstatt, In der Liste der Einweisungen die Einweisung über das Mülleimer Symbol den Eintrag löschen
[ ]