{"id":43238767,"url":"https://github.com/libris/bibstat","last_synced_at":"2026-02-01T11:14:30.450Z","repository":{"id":16777496,"uuid":"19535715","full_name":"libris/bibstat","owner":"libris","description":"Biblioteksstatistiken","archived":false,"fork":false,"pushed_at":"2025-12-18T09:02:05.000Z","size":7212,"stargazers_count":1,"open_issues_count":2,"forks_count":1,"subscribers_count":21,"default_branch":"develop","last_synced_at":"2025-12-21T16:18:45.220Z","etag":null,"topics":["code4lib"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/libris.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2014-05-07T13:35:52.000Z","updated_at":"2025-12-18T09:02:02.000Z","dependencies_parsed_at":"2023-10-03T13:34:46.119Z","dependency_job_id":"e5eff6e2-7df7-4141-9d2e-4aebec5dc07c","html_url":"https://github.com/libris/bibstat","commit_stats":null,"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"purl":"pkg:github/libris/bibstat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libris%2Fbibstat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libris%2Fbibstat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libris%2Fbibstat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libris%2Fbibstat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/libris","download_url":"https://codeload.github.com/libris/bibstat/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libris%2Fbibstat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28977317,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T09:57:52.632Z","status":"ssl_error","status_checked_at":"2026-02-01T09:57:49.143Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["code4lib"],"created_at":"2026-02-01T11:14:29.806Z","updated_at":"2026-02-01T11:14:30.442Z","avatar_url":"https://github.com/libris.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Biblioteksstatistiken\n\n## Beroenden\n\n* Python 3.9.x (Django)\n* MongoDB 5.0.x\n\n## Installation\n\nNedan är ett exempel på en minimal installation i Linux.  \n\n\t# Installera MongoDB 5.0.x:\n    # https://www.mongodb.com/docs/v5.0/installation/\n    # Installera MongoDB Database Tools:\n    # https://www.mongodb.com/try/download/database-tools\n    # (inkluderar mongorestore \u0026 co, som ej längre är del av MongoDB-disten sen 4.4)\n\n\t# Klona projektet\n\tgit clone git@github.com:libris/bibstat\n\tcd bibstat\n\n\t# Starta MongoDB\n\t$ mkdir mongodb\n\t$ mongod --dbpath $(pwd)/mongodb\n\n\t# Skapa en användare för databasen\n\tmongo\n\t\u003e use bibstat\n\t\u003e db.createUser({user:\"bibstat\", pwd:\"bibstat\", roles:[\"readWrite\"]})\n\t\u003e exit\n\n    # Installera uv:\n    # https://github.com/astral-sh/uv\n\n\t# Konfigurera\n\tcp bibstat/settings_local.py.example bibstat/settings_local.py\n    vi bibstat/settings_local.py # eller nano, eller...\n    # Skapa admin-användare\n\tpython manage.py createmongodbsuperuser --username=super --email=a@b.com\n\n\t# Starta servern\n\tuv run python manage.py runserver\n    # Alternativt (obs, gunicorn kommer inte serva statiska filer):\n    uv run gunicorn bibstat.wsgi\n\n### Importera produktionsdata till lokal utvecklingsmiljö\n\n    # Gör en dump av produktionsdatabasen\n    ssh \u003cuser\u003e@bibstat.kb.se\n    mongodump -d bibstat -u \u003cusername\u003e -p \u003cpassword\u003e\n    exit\n    \n    # där \u003cuser\u003e är din AD-användare och\n    # \u003cusername\u003e och \u003cpassword\u003e finns i Team Gul Vault\n\n    # Hämta hem dumpen med sftp eller scp, t.ex:\n    sftp  \u003cuser\u003e@bibstat.kb.se\n    get -r dump\n    exit\n\n    # Läs in datadumpen\n    mongorestore dump\n\nDu kan alternativt ange att bara importera en `collection`, exempelvis enbart termerna med hjälp av\n`mongorestore dump/bibstat/libstat_variables.bson`. Användarnamn och lösenord för produktionsdatabasen\nfinns i `/data/appl/config/bibstat_local.py`.\n\n## Utveckling\n\nSidans alla resurser (.js- och .css-filer) minifieras med hjälp av requirejs och requirejs.\n(Detta kräver Node.js https://nodejs.org/ installerat på datorn. Förslagsvis Node.js 16 LTS.)\n\nInstallera requirejs genom:\n\n    npm install -g requirejs\n\nI 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.\n\nFör att köra jobbet:\n\n    ./build.sh\n\nNu är alla filer minifierade och redo för produktion!\n\nI base-filerna i /bibstat/libstat/templates/base/ (admin.html resp. admin-survey.html) kan du välja att använda de\nminifierade filerna eller original-filerna. \nDetta gör du genom att ta bort eller lägga till \".min\" efter både css-filen och javascript-filen\n(t.ex.: i produktion används `/static/css/bundle.min.css` och under utveckling kan `/static/css/bundle.css` användas\nför att slippa bygga om mellan uppdateringar).\n\n\n## Testning\n\nTesterna kan köras genom att använda följande kommando.\nBåde enhetstesterna och integrationstesterna kommer köras.\n\n\tuv run python manage.py test\n\n## Deploy\n\nSe https://github.com/libris/devops (skyddat repo).\n\n**Sökvägar**  \nKonfiguration för Django: `/data/appl/config/bibstat_local.py`.  \nKonfiguration för Apache: `/etc/httpd/conf.d/bibstat.conf`.  \nFelmeddelanden loggas till: `/var/log/httpd/bibstat-error_log`.  \nInkommande requests loggas till: `/var/log/httpd/bibstat-access_log`.\n\nVarje deploy får en egen tids- och datumstämplad mapp i `/data/appl/`.  \nDen senaste versionen som används länkas in till `/data/appl/bibstat`.  \nTidigare versioner tas inte bort automatiskt, utan måste tas bort manuellt.\n\n**Backup**\nEn separat backup av databasen görs varje dag klockan 18.00 med Cron.  \nDessa sparas på en nätverksvolym, som har monterats under `/backup`.  \nAnvänd `crontab -l` för att visa det cron-jobb som används för detta.\n\n**Setup**  \nDet finns en [sammanfattning](docs/servers.md) av hur miljöerna sattes upp.\n\n## Import\n\n**Termer**  \nTidigare års statistiktermer kan importeras på följande sett.  \nFilerna finns att hitta i projektkatalogen [`data/variables`](data/variables).\n\n\tuv run python manage.py import_variables --file=data/variables/folk_termer.xlsx --target_group=folkbib\t\n\tuv run python manage.py import_variables --file=data/variables/forsk_termer.xlsx --target_group=specbib\n\tuv run python manage.py import_variables --file=data/variables/skol_termer.xlsx --target_group=skolbib\n\tuv run python manage.py import_variables --file=data/variables/sjukhus_termer.xlsx --target_group=sjukbib\n\n**Enkäter**  \nTidigare års enkäter med de inlämnade värdena kan importeras på följande sett.  \nEn exekvering av ett kommando importerar ett års värden för en viss bibliotekstyp.  \nFilerna finns på både stage- och produktionsmiljön i `/data/appl/old_bibstat_data`.\n\n\tuv run python manage.py import_survey_responses --file=/data/appl/old_bibstat_data/Folkbibliotek.xlsx --target_group=folkbib --year=2013\n\tuv run python manage.py import_survey_responses --file=/data/appl/old_bibstat_data/Folkbibliotek.xlsx --target_group=folkbib --year=2012\n\tuv run python manage.py import_survey_responses --file=/data/appl/old_bibstat_data/Folkbibliotek.xlsx --target_group=folkbib --year=2011\n\tuv run python manage.py import_survey_responses --file=/data/appl/old_bibstat_data/Folkbibliotek.xlsx --target_group=folkbib --year=2010\n\n### Export\nExport 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.\n\nScript för export finns även under [libstat/management/commands]([libstat/management/commands).\n\nFör att ta ut enkäter:\n\n\tuv run python manage.py export_surveys_to_excel --year=2014\n\nFö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):\n\n\tuv run python manage.py export_libraries_to_excel --year=2012 --all=n\n    \nFör att köra script som bakgrundsprocess:\n    \n    nohup uv run python manage.py export_surveys_to_excel --year=2014 \u0026\n\t\nFilerna hamnar under [data/excel_exports] (data/excel_exports) (under /data/appl/excel_exports på servrarna)\n\n### Uppdatera sigel\n\nOm ett bibliotek bytt sigel kan kommandot `update_sigel` köras för att ändra i Bibstat:\n\n    uv run python manage.py update_sigel --from=\"GAMMALT_SIGEL\" --to=\"NYTT_SIGEL\"\n\n## Analytics\n\nTjänsten genererar data till Matomo på [http://analytics.kb.se](http://analytics.kb.se).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibris%2Fbibstat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flibris%2Fbibstat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibris%2Fbibstat/lists"}