Coder Social home page Coder Social logo

dtpstat / dtp-stat-archive Goto Github PK

View Code? Open in Web Editor NEW
141.0 10.0 25.0 604 KB

Карта ДТП v1.0. 👉 База знаний о проекте: https://github.com/dtpstat/dtp-project/wiki

License: GNU General Public License v2.0

Python 39.40% JavaScript 38.68% CSS 4.66% HTML 16.49% Makefile 0.15% Dockerfile 0.32% Shell 0.25% TSQL 0.05%
opendata geocoding parser javascript reactjs leaflet python python-3 vision-zero django

dtp-stat-archive's Introduction

Build Status

Карта ДТП

Проект "Карта ДТП" (https://dtp-stat.ru)

Обсуждение проекта - https://t.me/crash_map


Developer Environment (local)

Installation

Requirements

  • Python >=3.6
  • Postgresql >=10.6
  • Nodejs (npm)

Install dependencies

  1. Install node packages
$ npm install -g npx
$ npm install
  1. Install python dependencies
pip install -r requirements.txt

Prepare and Configure Project

  1. Start postgresql server.
  2. 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
  1. Export DATABASE_URL (used by app for database connection) and DEBUG environment variable with database info according to previous steps:
$ export DATABASE_URL="postgres://django:django@localhost:5432/django"
$ export DEBUG=true
  1. Perform migrations:
$ ./manage.py makemigrations --noinput
$ ./manage.py migrate --noinput
  1. Create default_cache cache table:
$ ./manage.py createcachetable
  1. It`s time to start app:
$ ./manage.py runserver localhost:8000

Authorize on http://127.0.0.1:8000/admin1.

  1. 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:
    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 to true

Start project

  1. Build and up containers: docker-compose up -d --build
  2. First time need create superuser

Run this and follow instructions:

$ docker-compose exec app ./manage.py createsuperuser --email admin@localhost --username admin
  1. 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:

(самый простой способ)

Выполнить manage.py runserver 8000

dtp-stat-archive's People

Contributors

approximatenumber avatar az09 avatar c13 avatar dependabot[bot] avatar eugenesamoilov avatar ivlevdenis avatar kazhuravlev avatar lobanovds avatar sobolevn avatar ustnv avatar vovapi avatar xeningem avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dtp-stat-archive's Issues

Parser refactoring

Карта зависает при скроллинге с тепловым слоем

При активном скроллинге по карте, отдалении и приближении в какой-то момент начинает зависать карта и появляются ошибки Uncaught DOMException: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The image argument is a canvas element with a width or height of 0..

Нет тестов

У нас вообще нет тестов. Давайте их сделаем.

Dockerfile

For deployment in simple (single instance) mode project may have a Dockerfile or another tool.

I think, that Docker is good choice, because Docker is very popular and give a lowers entry threshold.

г. Сочи - неверная геопозиция многих ДТП (в море, за границей)

Для г. Сочи многие ДТП неверно отображаются в Черном море или за границей РФ
https://dtp-stat.ru/krasnodarskii-krai_sochi/

image

image

Можно попробовать рассмотреть эту проблему системно и в рамках проверки качества данных автоматически находить ДТП за границами выбранной области (города, в данном случае) и ДТП которые отображаются "на воде"

Use full features of drf

Add endpoints for:

  • MVC
  • Car
  • MVCParticipantType
  • MVCType
  • Nearby
  • Offence
  • Participant
  • Region
  • Street
  • UpdateLog

Возможность задавать адрес хоста с БД в settings.py

Речь про dtpmap/settings.py

with open('dtpmap/etc/database.txt') as f:
    database_name, database_user, database_password = f.read().strip().split(" ")

Предлагаю добавить database_host, database_port для гибкости. И вообще база должна быть на другом хосте, необязательно физическом, конечно.
Тогда мы сможем проще решить автосборки проекта и разворачивания тестовой среду для разработчиков (я про контейнеризацию #16 ).

Locale problem in GNU/Linux

OS: GNU/Linux Debian 9
Python: 3.6
Django: 2.1.5

Error:

Traceback (most recent call last):
  File "./parser.py", line 15, in <module>
    locale.setlocale(locale.LC_TIME, "ru_RU")
  File "/usr/local/lib/python3.6/locale.py", line 598, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting

Закрепить версии пакетов в requirements.txt

Общепринятой практикой считается не вносить пакеты в requirements.txt вручную, а использовать для этого команду pip freeze > requirements.txt . Но в любом случае очень желательно помимо названий пакетов указывать также и используемые версии. Например, django какой версии у вас на сервере? По коду видно что начинали с django 1.11, а сейчас похоже уже 2.1 .

get_dtp not working

./parser.py get_dtp

(env) root@dtp-stat:~/dtp-stat# cp ../dtp.json data/
(env) root@dtp-stat:~/dtp-stat# ./parser.py get_dtp
0it [00:00, ?it/s]
Traceback (most recent call last):
  File "/root/dtp-stat/env/lib/python3.6/site-packages/django/db/backends/utils.py", line 85, in _execute
    return self.cursor.execute(sql, params)
psycopg2.DataError: unsupported Unicode escape sequence
LINE 1: ...333, "conditions" = '["\u0414\u043e\u0436\u0434\u044c", "\u0...
                                                             ^
DETAIL:  Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8.
CONTEXT:  JSON data, line 1: [...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.