README.md

Python Django SQLite Redis

Описание Функционала

  1. Функционал CRUD операций Новостей.
    Данные для новостей:
    -Заголовок новости
    -Главное изображение
    -Превью-изображение (автоматически генерируется из главного изображения путём уменьшения до 200px по наименьшей стороне)
    -Текст новости
    -Дата публикации
    -Автор новости

  2. Возможность просмотра и редактирования Новостей с помощью rich-текста (используя summernote) в админке.
    Для обеспечения возможности просмотра и редактирования текста новости с использованием rich-текста, в админ-панели была зарегестрированна административная модель Новости. Эта модель позволяет просматривать и редактировать текст новости с помощью модуля Summernote.

Поле для редактирования текста новости доступно в админ-панели при редактировании объектов модели Новость.

  1. Выполнение периодической задачи с помощью celery, на отправку email о Новостях, опубликованных сегодня, с настройками которые регулируются с помощью модуля constance.
    данные для constance:
    Список адресатов
    Тема сообщения
    Текст сообщения
    Время отправки

Создана задача send_daily_email() для отправки Новостей в определённое время, заданное параметрами EMAIL_SEND_TIME (редактируются в админ-панели в разделе настроек Constance).

После изменения настроек отправки email необходимо перезагрузить планировщик Celery, чтобы изменения в расписании задач вступили в силу.

Получатели, тема и текст письма определяются настройками Constance и также редактируются в админ-панели. Структура письма определяется шаблоном daily_news_email.html.

  1. Реализация возможности Импорта Примечательных мест из xlsx-файла с данными:
    Название места
    Гео-координаты места (точка)
    Рейтинг (от 0 до 25)

Импорт Примечательных мест из xlsx-файла реализован в виде кнопки “Импорт” на странице change_list объектов модели Примечательного места в админ-панели.

При нажатии на кнопку и выборе xlsx-файла вызывается функция import_sights(), которая использует библиотеку openpyxl для разбора файла и создания объектов Sight.

Формат файла должен содержать 4 столбца (Название места, широта, долгота, рейтинг). Пример такого файла можно найти в examples.xlsx.

Будут загружены только строки, которые соответствуют форматам данных и валидационным ограничениям модели Примечательного места, остальные строки будут проигнорированы.

  1. Реализована возможность просмотра и редактирования Примечательных мест в админке, для получения координат используется виджет карты.

Редактирование примечательных мест в админ-панели реализовано с помощью виджета Яндекс-карт.

Для использования Яндекс-карт необходимо добавить и заполнить переменную API_KEY в файле .env.

В админ-панели для модели Примечательных мест был реализован виджет MapWidget, который отображает исходное местоположение, основываясь на прочитанных из файла координатах. При перемещении указателя на карте, координаты будут обновляться.

Для взаимодействия между полями координат и картой, используется JavaScript скрипт (static\app\scripts\map.js). Этот скрипт отвечает за подключение карты.

  1. Создана периодическая задача на получение Сводки погоды в Примечательном месте.
    Периодичность выполнения задачи редактируется из админки, по умолчанию - раз в час
    Данные Сводки погоды:
    Температура по шкале Цельсия
    Влажность воздуха, в %
    Атмосферное давление, в мм ртутного столба
    Направление ветра
    Скорость ветра, в м/с

Данные Сводки погоды сохраняются без возможности редактирования.

Реализована задача периодического получения Сводок погоды через обращение к API Яндекс Погоды.

Периодичность настраивается в админ-панели в разделе настроек Constance.

После изменения периодичности необходимо перезагрузить планировщик Celery, чтобы изменения вступили в силу.

Для работы этой задачи необходимо поместить токен API Яндекс Погоды (тариф Тестовый) в переменную WEATHER_API_KEY в файле .env.

  1. Сделана возможность просмотра Сводки погоды в админке с фильтром по Примечательному месту и дате снятия показаний.

Фильтр по дате снятия показаний реализован с помощью функционала date_hierarchy в административной модели Сводки погоды.

Для фильтра по примечательному месту реализован класс фильтра SightFilter с запросом по id конкретного места, а также определён шаблон этого фильтра для отображения опций в виде выпадающего списка вместо перечисления.

  1. Реализована возможность Экспорта Сводки погоды в xlsx-файл с фильтром по Примечательному месту и дате снятия показаний.

Экспорт Сводок погоды реализован как действие над выбранными элементами на странице change_list объектов модели Сводки погоды в админ-панели.

После фильтрации объектов по дате снятия показаний и Примечательному месту можно выделить нужные объекты и выбрать из выпадающего списка действие “Экспортировать сводки погоды”.

Инструкции по запуску

Перед запуском приложения необходимо заполнить файл с переменными окружения .env и поместить его в папку, где находиться файл settings.py и добавить в него параметры:

EMAIL_HOST – SMTP-сервер провайдера почты
EMAIL_PORT – порт почтового сервера
EMAIL_HOST_USER – имя пользователя на почтовом сервере
EMAIL_HOST_PASSWORD – пароль пользователя на почтовом сервере
API_KEY – ключ Yandex Maps API
WEATHER_API_KEY – Ключ Yandex Weather API (Тариф Тестовый)

Для запуска проекта можно использовать скрипт ![Z1 RUN PROJECT.bat]. Он запускает проект, сервер Redis, модуль celery и браузер с открытой страницей проекта(по умолчанию используется Яндекс браузер).

Модуль django-editor-ymaps может быть не совместим с Django >=4.0.0, для совместимости можете использовать утилиту utilites\FileWordReplacer.py, которая делает модуль совместимым с Django версии больше 4.0.0

Если у вас не получается провести миграцию, выполните команды из файла ‘Z migrate.bat’ с правами администратора

Админ-панель приложения будет доступна по адресу http://localhost:8080/admin/

Описание

Веб-приложение на Django для просмотра и изменения Новостей, Погоды и Примечательных мест

Конвейеры
0 успешных
0 с ошибкой