https://github.com/libris/bibstat
Biblioteksstatistiken
https://github.com/libris/bibstat
code4lib
Last synced: 5 months ago
JSON representation
Biblioteksstatistiken
- Host: GitHub
- URL: https://github.com/libris/bibstat
- Owner: libris
- Created: 2014-05-07T13:35:52.000Z (about 12 years ago)
- Default Branch: develop
- Last Pushed: 2025-12-18T09:02:05.000Z (6 months ago)
- Last Synced: 2025-12-21T16:18:45.220Z (6 months ago)
- Topics: code4lib
- Language: JavaScript
- Size: 6.88 MB
- Stars: 1
- Watchers: 21
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Biblioteksstatistiken
## Beroenden
* Python 3.9.x (Django)
* MongoDB 5.0.x
## Installation
Nedan är ett exempel på en minimal installation i Linux.
# Installera MongoDB 5.0.x:
# https://www.mongodb.com/docs/v5.0/installation/
# Installera MongoDB Database Tools:
# https://www.mongodb.com/try/download/database-tools
# (inkluderar mongorestore & co, som ej längre är del av MongoDB-disten sen 4.4)
# Klona projektet
git clone git@github.com:libris/bibstat
cd bibstat
# Starta MongoDB
$ mkdir mongodb
$ mongod --dbpath $(pwd)/mongodb
# Skapa en användare för databasen
mongo
> use bibstat
> db.createUser({user:"bibstat", pwd:"bibstat", roles:["readWrite"]})
> exit
# Installera uv:
# https://github.com/astral-sh/uv
# Konfigurera
cp bibstat/settings_local.py.example bibstat/settings_local.py
vi bibstat/settings_local.py # eller nano, eller...
# Skapa admin-användare
python manage.py createmongodbsuperuser --username=super --email=a@b.com
# Starta servern
uv run python manage.py runserver
# Alternativt (obs, gunicorn kommer inte serva statiska filer):
uv run gunicorn bibstat.wsgi
### Importera produktionsdata till lokal utvecklingsmiljö
# Gör en dump av produktionsdatabasen
ssh @bibstat.kb.se
mongodump -d bibstat -u -p
exit
# där är din AD-användare och
# och finns i Team Gul Vault
# Hämta hem dumpen med sftp eller scp, t.ex:
sftp @bibstat.kb.se
get -r dump
exit
# Läs in datadumpen
mongorestore dump
Du kan alternativt ange att bara importera en `collection`, exempelvis enbart termerna med hjälp av
`mongorestore dump/bibstat/libstat_variables.bson`. Användarnamn och lösenord för produktionsdatabasen
finns i `/data/appl/config/bibstat_local.py`.
## Utveckling
Sidans alla resurser (.js- och .css-filer) minifieras med hjälp av requirejs och requirejs.
(Detta kräver Node.js https://nodejs.org/ installerat på datorn. Förslagsvis Node.js 16 LTS.)
Installera requirejs genom:
npm install -g requirejs
I mappen build finns byggfiler som körs med r.js. När ändringar är gjorda i Javascript och CSS måste dessa köras för att ändringarna ska ha effekt.
För att köra jobbet:
./build.sh
Nu är alla filer minifierade och redo för produktion!
I base-filerna i /bibstat/libstat/templates/base/ (admin.html resp. admin-survey.html) kan du välja att använda de
minifierade filerna eller original-filerna.
Detta gör du genom att ta bort eller lägga till ".min" efter både css-filen och javascript-filen
(t.ex.: i produktion används `/static/css/bundle.min.css` och under utveckling kan `/static/css/bundle.css` användas
för att slippa bygga om mellan uppdateringar).
## Testning
Testerna kan köras genom att använda följande kommando.
Både enhetstesterna och integrationstesterna kommer köras.
uv run python manage.py test
## Deploy
Se https://github.com/libris/devops (skyddat repo).
**Sökvägar**
Konfiguration för Django: `/data/appl/config/bibstat_local.py`.
Konfiguration för Apache: `/etc/httpd/conf.d/bibstat.conf`.
Felmeddelanden loggas till: `/var/log/httpd/bibstat-error_log`.
Inkommande requests loggas till: `/var/log/httpd/bibstat-access_log`.
Varje deploy får en egen tids- och datumstämplad mapp i `/data/appl/`.
Den senaste versionen som används länkas in till `/data/appl/bibstat`.
Tidigare versioner tas inte bort automatiskt, utan måste tas bort manuellt.
**Backup**
En separat backup av databasen görs varje dag klockan 18.00 med Cron.
Dessa sparas på en nätverksvolym, som har monterats under `/backup`.
Använd `crontab -l` för att visa det cron-jobb som används för detta.
**Setup**
Det finns en [sammanfattning](docs/servers.md) av hur miljöerna sattes upp.
## Import
**Termer**
Tidigare års statistiktermer kan importeras på följande sett.
Filerna finns att hitta i projektkatalogen [`data/variables`](data/variables).
uv run python manage.py import_variables --file=data/variables/folk_termer.xlsx --target_group=folkbib
uv run python manage.py import_variables --file=data/variables/forsk_termer.xlsx --target_group=specbib
uv run python manage.py import_variables --file=data/variables/skol_termer.xlsx --target_group=skolbib
uv run python manage.py import_variables --file=data/variables/sjukhus_termer.xlsx --target_group=sjukbib
**Enkäter**
Tidigare års enkäter med de inlämnade värdena kan importeras på följande sett.
En exekvering av ett kommando importerar ett års värden för en viss bibliotekstyp.
Filerna finns på både stage- och produktionsmiljön i `/data/appl/old_bibstat_data`.
uv run python manage.py import_survey_responses --file=/data/appl/old_bibstat_data/Folkbibliotek.xlsx --target_group=folkbib --year=2013
uv run python manage.py import_survey_responses --file=/data/appl/old_bibstat_data/Folkbibliotek.xlsx --target_group=folkbib --year=2012
uv run python manage.py import_survey_responses --file=/data/appl/old_bibstat_data/Folkbibliotek.xlsx --target_group=folkbib --year=2011
uv run python manage.py import_survey_responses --file=/data/appl/old_bibstat_data/Folkbibliotek.xlsx --target_group=folkbib --year=2010
### Export
Export av enkäter till excelfil kan göras via administrationssidan [/surveys](https://bibstat.kb.se/surveys). Det öppna datat kan också exporteras till excelfil under "Öppna data". Då kommer enbart observationer med för variabler som är publika.
Script för export finns även under [libstat/management/commands]([libstat/management/commands).
För att ta ut enkäter:
uv run python manage.py export_surveys_to_excel --year=2014
För att ta ut data om biblioteken (ange all=y för att ta ut alla bibliotek, eller all=n för att endast få med bibliotek som saknar sigel):
uv run python manage.py export_libraries_to_excel --year=2012 --all=n
För att köra script som bakgrundsprocess:
nohup uv run python manage.py export_surveys_to_excel --year=2014 &
Filerna hamnar under [data/excel_exports] (data/excel_exports) (under /data/appl/excel_exports på servrarna)
### Uppdatera sigel
Om ett bibliotek bytt sigel kan kommandot `update_sigel` köras för att ändra i Bibstat:
uv run python manage.py update_sigel --from="GAMMALT_SIGEL" --to="NYTT_SIGEL"
## Analytics
Tjänsten genererar data till Matomo på [http://analytics.kb.se](http://analytics.kb.se).