worblehat/README.md

120 lines
4.3 KiB
Markdown
Raw Normal View History

2022-08-16 22:13:48 +02:00
# Worblehat
2023-04-01 20:40:41 +02:00
More information on <https://www.pvv.ntnu.no/pvv/Bokhyllen/Worblehat/>
2022-08-16 22:13:48 +02:00
## What?
Worblehat is a simple library management system written specifically for Programvareverkstedet.
## Why?
Programvareverkstedet is a small community with many books and games. A simple web platform is needed to manage the library. We need to know who owns each item, if we can loan it out and where it is.
Programvareverkstedet har en rekke bøker, og en konstant tilstrøm av nye.
Teoretisk sett skal disse ryddes og kategoriseres jevntlig, men da dette ikke gjøres ofte nok kan det være et varig strev å finne ut hvor bøker står til enhver tid.
Styret har derfor tatt initiativ til å opprette et biblioteksystem for å systematisere bøkene.
Prosjektet har fått navn Worblehat etter en bibliotekar i Terry Pratchetts discworld serie.
Worblehatt har vært påbegynnt flere ganger opp gjennom historien uten å komme i noen form for funksjonell tilstand enda.
2022-08-16 22:13:48 +02:00
## How?
The entire application is written in flask.
Flask functions as a web server, and uses an ORM(SQLAlchemy) to store the data in an SQLite database.
The resulting web page is rendered on the server by jinja templates in flask.
# Technical Details
## How to install
* Make a `.env` file with a secret key.
* `$ echo "SECRET_KEY=<secret>" > .env`
* Make a virtualenv
* `$ python3 -m venv venv`
* Activate the virtualenv
* `$ source venv/bin/activate`
* Install the requirements
* `$ pip install -r requirements.txt`
## How to configure
* Make changes in the function "`reset_db()`" in `worblehat/__init__.py` if needed
* run `$ flask --app worblehat --debug resetdb`
## Requirements
### System / Package Manager
* Python >= 3.6
* Pip
### Python packages
2023-04-01 20:40:41 +02:00
* See [requirements.txt](requirements.txt)
## TODO
### Funksjonalitet
* Høy prioritet:
* Bokdatabase med alle PVVs bøker må lages
* Bokdatabasebyggingsverktøy for å bygge bokdatabasen (sjekker online ISBN-database for informasjon om boken)
* Utlånsmuligheter på PVVs lokaler for eksempel gjennom Dibbler sin strekkodescanner
* Lav prioritet:
* Utlånsmuligheter gjennom nettportal på PVVs nettsider
* Søkemuligheter gjennom en nettportal på PVVs nettsider
* Til diskusjon:
* Skal Worblehat kjøre i en annen tty-instans på Dibbler sin Raspberry Pi ELLER skal man skifte mellom Worblehat-mode og Dibbler-mode i samme tty?
### Ellers
2023-04-02 01:16:52 +02:00
- [] Legge til håndtering av flere ISBN-databaser
- [] isbntools ser ut til å finne en del ting som openlibrary ikke finner alene
- [] Legge til batch-prosessering av ISBN-er
- [] For å kunne scanne en hel hylle og så dumpe hele listen av ISBN-er til databasene vi henter fra
- [] Lage en database vi kan lagre _våre_ bøker i
- [] Finne en måte å håndtere kollisjon dersom vi har flere eksemplarer av samme bok
- [] Klistremerke med eksemplar-nummer ved siden av ISBN, kanskje
- [] Se om <https://pypi.org/project/isbntools/> er et nyttig verktøy for arbeidet vårt
- [] Ser nyttig ut
## Tilfeldig
En relativt stor online ISBN-database er lokalisert:
* <https://openlibrary.org//>
* Eksporterer json-objekter med alle mulig slags rare felter
* google books databasen er også mulig å benytte.
* Kanskje ISBNdb.com er mulig å benytte også.
Noen viktige felter til databasen er som følger:
* ISBN (faktisk eller pvv generert)
* Forfatter
* Tittel
* Utgivelsesår
* Antall sider
* Sjanger
* Språk
* Om boken er utlånbar
* Bruker som har lånt boken
* Dato på når boken ble lånt ut
Prosedyre for bokdatabasebygging:
* Systematisk arbeid, hylle for hylle
* Tre bunker: "ikke scannet", "scannet" og "manuell innlegging"
* Scanning sjekker live om info kan hentes fra online database(r)
* Dersom finnes: legg i "scannet", ellers legg i "manuell innlegging"
* Legg inn manuelle bøker
* Sett tilbake i hyllen og fortsett til neste
Ny (alternativ) prosedyre:
1. Ta ut alle bøker fra en hylle
2. Batch-scan isbner; skill så bøker med og uten isbn (scannet- og manuell-bunke)
3. Få isbntools til å hente metadata for listen med isbner; dersom den ikke finner noe, legg boken i manuell-bunken
4. Sett alle scannede bøker tilbake og gå gjennom manuell-bunken
5. Sett alt tilbake og ferdiggjør csv-en eller hva enn for den spesifike hyllen
Programmvare utviklet:
* Enkelt python og JS script for uthenting av data fra database(r) gitt isbn.