/Software-Engineering-2021

Peter the Great St. Petersburg Polytechnic University: Software Engineering course 2021

Primary LanguagePythonMIT LicenseMIT

Weather Statistics

Описание

Небольшое веб-приложение основанное на фреймворке Django, которое возвращает статистку по погоде за определенный период . Проект не рассказывает текущую погоду (хотя текущая погода используется для рассчета одного из пунктов статситики).

Проект фигурирует Записями, поля записей содержат такие поля:

  • Город
  • Дата
  • Температура
  • Направление ветра
  • Скорость ветра
  • Погодный статус
  • Кол-во выпавших осадков

Списки Городов и Записей в дальнейшем могут быть расширены администраторами.

Возможности проекта:

  • Расчет статистики - основная возможность проекта, осуществляется прямо на главной странице.
  • Администрирование — Редактирование записей в админке (/admin/), массовая загрузка данных (кнопка появляется в навигации сайта при залогиненном админе).

Как запустить проект:

Клонировать репозиторий и перейти в него в командной строке:

git clone https://github.com/KazuruK/Software-Engineering-2021.git
cd Software-Engineering-2021/weather/

Обычный запуск

Cоздать и активировать виртуальное окружение:

python3 -m venv env
source env/bin/activate

Установить зависимости из файла requirements.txt:

python3 -m pip install --upgrade pip
pip install -r requirements.txt

Выполнить миграции:

python3 manage.py migrate

Запустить проект:

python3 manage.py runserver

Запуск Docker-контейнера

Также вы можете использовать образ с DockerHub - https://hub.docker.com/repository/docker/kazuru/weather-statistics

Запуск процесса сборки:

docker build -t kazuru/weather_statistics:v1 .

Создание и запуск контейнера:

docker-compose build
docker-compose up -d

Проблемы загрузки статических файлов

В данный репозиторий не загружены необходимые для корректного отображения статические файлы. Для решения данной проблемы рекомендую загрузить bootstrap в директорию ./static/, либо использовать Docker образ из репозитория выше.

Алгоритм загрузки данных:

  1. Данные о погоде были взяты с сайта https://rp5.ru/ в .csv с кодировкой utf-8, данные в течении работы изменяются, поэтому rp5.ru не несет никакой ответственности за их правдивость.
  2. Данные были отчищены от лишней информацией с помощью: удаления ненужных столбцов, изменения разделительных знаков, вычленения необходимой информации из строк. Данные действия производились через самостоятельно написанные python-скрипты.
  3. Далее очищенные .csv файлы помещаются в проект в директорию ./data_to_load/.
  4. Пользователь с правами администрирования переходит по адресу /load_data/ (или использует кнопку загрузить данные), после чего запускается процесс записи данных в базу данных. Будьте аккуратны с ошибками во время выполнения загрузки: попытка загрузить уже имеющиеся данные завершит процесс загрузки с ошибкой (может быть исправлено в дальнейшем).

Так как процесс загрузки данных в бд занимает достаточно много времени, в целях тестирования в данный репозиторий также была загружена уже заполненная база данных. Для тестирования возможностей был создан тестовый superuser аккаунт (admin:admin)

Технические требования

Все необходимые пакеты перечислены в requirements.txt

Над проектом работал:

Тестирование:

Main branch - test

Develop branch - test