Skip to content

atomsis/weather_o_complex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 

Repository files navigation

Данный проект реализует простой "прогнозёр" погоды

Используемые технологии:

  • Python 3.8
  • Django 4.2.14-
  • django-autocomplete-light 3.11.0
  • pytest 8.2.2
  • pytest-django 4.8.0
  • requests 2.32.3
  • black 24.4.2
  • Sqlite

Используемые внешние ресурсы, из которых берутся данные:

  • Openstreetmap - нужен для конвергатиции lat и lon в город
  • Openapi - условно бесплатный api погоды, из которого можно брать самые разнообразные данные, но я использовал простой минимум

Реальзованный функционал/пожелания компании :

  • Форма указания ввода города
  • статистика погоды по указанному городу
  • Кеширование запроса
  • Указание последнего просмотренного прогноза погоды(есть не доработка по кодировка)
  • Покрытие тестами на Pytest
  • Docker и Docker compose файлы
  • Список запрошенных пользователем прогнозов погоды/городов

Нереализованный функционал:

  • Автодополнение(начал реализацию через пакет auto-complete но не было возможности доделать - выдовал какие-то странные ошибки)

Структура проекта:

  • weather - основа проекта:
    • urls - основные маршруты(3
    • tests - папка с тестами функциональности(знаю - да сделал не "круто" смешал юнит и интеграционные в один файл)
  • weather_o_complex - ядро проекта:настройки, главная точка входа и подобная настройка приложения, работает синхронно, с "домашней" БД Sqlite

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

  • Без докера:
    •   git clone https://github.com/atomsis/weather_o_complex
      
    •   pip install -r requirements.txt
      
P.s если вы будете делать на базе windows систем то установка зависимостей через pip install даст ошибку(так как он не сможет установить зависимость ubuntu wheels на windows - решение либо установить вручную все пакеты либо убрать пакет из зависимостей, если делаете НЕ через компоуз на виндоус(через компоуз всё ок).
  • С docker:
    • Запустить/скачать и запустить приложение docker
    • Ввести в интерпретаторе:
      • docker compose up --build

Как проверять функционал:

  • Перейдите по ссылке http://localhost:8000/
  • Введите город(можно по русски а можно и по английски)(главное существующий - можно конечно и нет-тогда увидите обработанную ошибку) - и увидете прогноз погоды по этому городу на сегодня.
Примечание: не знаю как так работает в openstreetmap - но если введёт условное "123" - то он найдёт такое место -так что это не мой косяк- официльный сайт считает что такое место есть и даст вам даже координаты)
  • Запросы кешируются в куках с именем "last_city" на срок = 30 * 24 * 60 * 60(месяц)
  • Вернитесь назад к полю ввода городов = у вас появился последний "искаемый" город
  • Перейдите по ссылке http://localhost:8000/city_statistics/ - это api, который показывет "искаемые"(xex) пользователем города(существующие) и количество "раз" поиска этого города. Это JSON данные.(надеюсь я правильно понял задачу - и имелось ввиду такой возврат данных)

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

  • Установить pytest если ещё этого не сделали:
    • pip intall pytest

Введите в коносоли интерпретатора команду:

pytest

About

Special for o-complex

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published