Карта ДТП
Проект "Карта ДТП" (https://dtp-stat.ru)
Обсуждение проекта - https://t.me/crash_map
Developer Environment (local)
Installation
Requirements
- Python >=3.6
- Postgresql >=10.6
- Nodejs (npm)
Install dependencies
- Install node packages
$ npm install -g npx
$ npm install
- Install python dependencies
pip install -r requirements.txt
Prepare and Configure Project
- Start postgresql server.
- Create appropriate database and role:
$ psql -c "CREATE DATABASE django;" -U postgres
$ psql -c "CREATE ROLE django WITH LOGIN PASSWORD 'django';" -U postgres
$ psql -c "ALTER ROLE django CREATEDB;" -U postgres
$ psql -c "GRANT ALL PRIVILEGES ON DATABASE django TO django;" -U postgres
- Export
DATABASE_URL
(used by app for database connection) andDEBUG
environment variable with database info according to previous steps:
$ export DATABASE_URL="postgres://django:django@localhost:5432/django"
$ export DEBUG=true
- Perform migrations:
$ ./manage.py makemigrations --noinput
$ ./manage.py migrate --noinput
- Create
default_cache
cache table:
$ ./manage.py createcachetable
- It`s time to start app:
$ ./manage.py runserver localhost:8000
Authorize on http://127.0.0.1:8000/admin1.
- You need to run
npm start
together with app to generate JavaScript-code:
npm start
Developer Environment (docker)
Installation
Requirements
- docker
- docker-compose
- docker-machine (for win & mac)
Prepare and Configure Project
Project configured by .dockerenv
file in docker folder.
Rename docker/.dockerenv.example
to docker/.dockerenv
and set variables:
SECRET_KEY
, - secret key, you can generate it with:- Secret key generator (recomended length: 50 symbols)
- oneliner:
python3 -c "import random, string; print('SECRET_KEY=\"%s\"'%''.join([random.SystemRandom().choice(\"{}{}{}\".format(string.ascii_letters, string.digits, string.punctuation)) for i in range(63)]))"
DEBUG
, - set it totrue
Start project
- Build and up containers:
docker-compose up -d --build
- First time need create superuser
Run this and follow instructions:
$ docker-compose exec app ./manage.py createsuperuser --email admin@localhost --username admin
- Authorize on http://127.0.0.1:8000/admin1.
Запуск парсера данных со stat.gibdd.ru
Загрузить в базу техническую информацию (названия разделов)
$ ./parser.py tech_data
Загрузить в базу регионы и районы
$ ./parser.py get_regions
Загрузить в базу все ДТП. Для этого нужно предварительно скачать дамп всех ДТП и положить в папку data - https://drive.google.com/file/d/1aUTPLqUX5xZhmtcFODyVb7GpBj3_SHui/view?usp=sharing
$ ./parser.py get_dtp
Чтобы включить отображение региона нужно в базе данных поставить ему status = True.
Развертывание
Запустите эту команду перед развертыванием для генерации JavaScript кода:
$ npm run build-production
Старт без Docker и изменения переменных окружения
Если не хочется выкачивать все данные - вот бекап базы https://drive.google.com/open?id=1SPHyY-802U-USRQh3j4JfzhIO86eAaUp ###Backend:
- Скопировать
dtpmap/.env.tmpl -> dtpmap/.env
- Отредактировать
dtpmap/.env
Frontend:
(самый простой способ)
- Ставите Node.js https://nodejs.org/en/
- Ставите yarn https://yarnpkg.com/en/docs/install
- В корне проекта выполняете
yarn
и затемyarn start
Выполнить manage.py runserver 8000