2026-01-09 05:47:36 +09:00
2026-01-09 05:47:36 +09:00
2026-01-09 05:47:35 +09:00
2026-01-09 05:47:36 +09:00
2026-01-09 05:47:36 +09:00
2025-03-19 17:50:48 +01:00
2026-01-09 05:47:36 +09:00
2025-12-08 18:25:59 +09:00
2026-01-09 05:47:35 +09:00
2025-03-29 22:48:30 +01:00
2026-01-09 05:47:36 +09:00
2026-01-09 05:47:36 +09:00

Coverage Test report

Dibbler

EDB-system for PVVVV

Hva er dette?

Dibbler er et system laget av PVVere for PVVere for å byttelåne både matvarer og godis. Det er designet for en gammeldags VT terminal, og er laget for å være enkelt både å bruke og å hacke på.

Programmet er skrevet i Python, og bruker en sql database for å lagre data.

Samlespleiseboden er satt opp slik at folk kjøper inn varer, og får dibblerkreditt, og så kan man bruke denne kreditten til å kjøpe ut andre varer. Det er ikke noen form for authentisering, så hele systemet er basert på tillit. Det er anbefalt å koble en barkodeleser til systemet for å gjøre det enklere å både legge til og kjøpe varer.

Kom i gang

Installer python, og lag og aktiver et venv. Installer så avhengighetene med pip install.

Deretter kan du kjøre programmet med

python -m dibbler -c example-config.ini create-db
python -m dibbler -c example-config.ini seed-data
python -m dibbler -c example-config.ini loop

Prosjektstruktur

Her er en oversikt over prosjektstrukturen og hva de forskjellige mappene og filene gjør.

dibbler/models

I denne mappen ligger databasemodellene. Med få unntak så er hver fil i denne mappen en modell.

Vi bruker for tiden moderne deklarativ SQLAlchemy syntaks for å definere modellene (see SQLAlchemy - Declarative Mapping Styles).

Pass på å ikke putte for mye logikk i modellene, de skal helst bare definere dataene. Konstruktører, hjelpefunksjoner og statisk validering er anbefalt, men unngå dynamisk validering mot databasen - det hører hjemme i dibbler/queries.

dibbler/queries

I denne mappen ligger databasespørringer. Disse databasespørringene har etter hvert blitt ganske komplekse da vi ikke lagrer tilstand, men heller deriverer den ut ifra en gående logg av transaksjoner. Her gjøres det også en del validering, både statisk validering av argumenter, men også dynamisk validering mot databasen.

dibbler/menus

Her ligger menydefinisjonene for terminalgrensesnittet. Menyene håndterer brukerinteraksjon og navigasjon.

dibbler/lib

Her finner du hjelpefunksjoner og verktøy som brukes på tvers av prosjektet. Ting som ikke passet inn andre steder.

dibbler/subcommands

Her ligger inngangspunktet for kommandolinjegrensesnittet. Dette er ikke noe vanlige brukere vanligvis vil se da vi har låst dibbler-terminalen til å kjøre terminalgrensesnittet i en evig loop. Det er nyttig for å legge ved ekstra konfigurasjon eller å legge ved vedlikeholdsoppgaver og testverktøy.

tests

Her ligger enhetstester for prosjektet. Testene bruker pytest som testløper. Vi tester i all hovedsak databasespørringer og modelllogikk her, da "korrekthet" av terminalgrensesnittet er vanskelig å definere og teste automatisk.

Nix

Du kan enklest komme i gang med nix-utvikling ved å kjøre VM-en:

nix run .#vm

# Eller hvis du trenger tilgang til terminalen i VM-en også:
nix run .#vm-non-kiosk

Du kan også bygge pakken manuelt, eller kjøre den direkte:

nix build .#dibbler

nix run .# -- --config example-config.ini create-db
nix run .# -- --config example-config.ini seed-data
nix run .# -- --config example-config.ini loop
Languages
Python 91.6%
Nix 8.4%