This Django-Project is part of a process to establish the OKR Framework in the organizational structure of the WDR. After identifying the correct KPI for each product, this library collects and processes the corresponding data to visualize the data in form of a dashboard.
This project requires Python > 3.8, pipenv, and a Redis server installed and working on your system.
To run the Django framework for this project, you need to set the following environment variables:
# Django DEBUG=True SECRET_KEY= LOG_SQL= # Quintly QUINTLY_CLIENT_ID= QUINTLY_CLIENT_SECRET= # MySQL Podstat/Spotify MYSQL_PODCAST_HOST= MYSQL_PODCAST_USER= MYSQL_PODCAST_PASSWORD= MYSQL_PODCAST_DATABASE_PODSTAT= # Spotify SPOTIPY_CLIENT_ID= SPOTIPY_CLIENT_SECRET= SPOTIFY_LICENSOR_ID= # Webtrekk/Mapp WEBTREKK_LOGIN= WEBTREKK_PASSWORD= WEBTREKK_ACCOUNT_LIVE_ID= # Sophora API SOPHORA_API_BASE= # SEO bot TEAMS_WEBHOOK_SEO_BOT= SEO_BOT_TODO_MORE_URL= SEO_BOT_TOP_ARTICLES_THRESHOLD=The SECRET_KEY is only required if you have set DEBUG=False.
To run the project locally, store these variables in an .env file in the root folder.
Install requirements:
$ pipenv sync Migrate the database:
$ pipenv run manage migrate Create initial admin user:
$ pipenv run manage createsuperuser This project consists of two processes that communicate through Redis Queue (RQ).
The worker process runs the various scrapers while the web process runs the Django server and backend.
First, start the worker process:
$ pipenv run worker Then, start the web process:
$ pipenv run manage runserver Scrapers are located in okr/scrapers/ with one module for each product type.
The __init__.py of each scraper module contains the functions to fill the database. If cleaning or restructuring is required, it is done here. There are other submodules for collecting the raw data, one for each source.
We use RQ (Redis Queue) and APScheduler for queuing and scheduling. okr/scrapers/scheduler.py contains the setup and cron-based rules to run scrapers periodically at specified times.
Some data that can't be scraped automatically (yet) is manually entered or uploaded as files in the Django admin backend. The relevant files for this are located in okr/admin.
The data warehouse component is managed via the Django ORM. Models are defined in okr/models/ with generally self-contained submodules for each product type.
Install the black code formatter:
$ pipenv run pip install black Set up git pre-commit hook:
$ cp git-hooks/pre-commit .git/hooks This project is licensed under the MIT License.
Unsere Inhalte, unser Wissen und unsere Entwicklungen gehören allen. WDR Geschäftsbericht 2016, S.23