Coder Social home page Coder Social logo

mailing_service's Introduction

Mail Sending


Запуск Jango проекта через Run - "название проекта" или командой python manage.py runserver

Остановить сервер - CTRL+C


Технологии:

  • Python
  • Bootstrap
  • Django
  • PostgreSQL
  • Redis
  • apscheduler

Описание:

Чтобы удержать текущих клиентов, часто используют вспомогательные, или «прогревающие», рассылки для информирования и привлечения клиентов. Разработайте сервис управления рассылками, администрирования и получения статистики.


Реализация:

Описание задач

  1. Реализуйте интерфейс заполнения рассылок, то есть CRUD-механизм для управления рассылками.
  2. Реализуйте скрипт рассылки, который работает как из командой строки, так и по расписанию.
  3. Добавьте настройки конфигурации для периодического запуска задачи.

Сущности системы

Клиент сервиса:

  • контактный email,
  • ФИО,
  • комментарий.

Рассылка (настройки):

  • время рассылки;
  • периодичность: раз в день, раз в неделю, раз в месяц;
  • статус рассылки: завершена, создана, запущена.

Сообщение для рассылки:

  • тема письма,
  • тело письма.

Логи рассылки:

  • дата и время последней попытки;
  • статус попытки;
  • ответ почтового сервера, если он был.

Не забудьте про связи между сущностями. Вы можете расширять модели для сущностей в произвольном количестве полей либо добавлять вспомогательные модели.

Логика работы системы

  • После создания новой рассылки, если текущее время больше времени начала и меньше времени окончания, то должны быть выбраны из справочника все клиенты, которые указаны в настройках рассылки, и запущена отправка для всех этих клиентов.
  • Если создается рассылка со временем старта в будущем, то отправка должна стартовать автоматически по наступлению этого времени без дополнительных действий со стороны пользователя системы.
  • По ходу отправки сообщений должна собираться статистика (см. описание сущности «сообщение» и «логи» выше) по каждому сообщению для последующего формирования отчетов.
  • Внешний сервис, который принимает отправляемые сообщения, может долго обрабатывать запрос, отвечать некорректными данными, на какое-то время вообще не принимать запросы. Нужна корректная обработка подобных ошибок. Проблемы с внешним сервисом не должны влиять на стабильность работы разрабатываемого сервиса рассылок.
‍Рекомендации

Реализовать интерфейс можно с помощью UI kit Bootstrap.
Для работы с периодическими задачами можно использовать 
либо crontab-задачи в чистом виде, 
либо изучить дополнительно библиотеку: 
https://pypi.org/project/django-crontab/
‍Периодические задачи — задачи, которые повторяются 
с определенной частотой, которая задается расписанием.

crontab — классический демон, 
который используется для периодического выполнения заданий 
в определенное время. 
Регулярные действия описываются инструкциями, 
помещенными в файлы crontab и в специальные каталоги.

Служба crontab не поддерживается в Windows, 
но может быть запущена через WSL. 
Поэтому если вы работаете на этой ОС, 
то решите задачу запуска периодических задач 
с помощью библиотеки apscheduler: 
https://pypi.org/project/django-apscheduler/.

Подробную информацию, что такое crontab-задачи, 
найдите самостоятельно.

Доработка сервиса

Контекст

Сервис по управлению рассылками пользуется популярностью, однако запущенный MVP уже не удовлетворяет потребностям бизнеса.

Доработайте ваше веб-приложение. А именно: разделите права доступа для различных пользователей и добавьте раздел блога для развития популярности сервиса в интернете.

Описание задач

  1. Расширьте модель пользователя для регистрации по почте, а также верификации.
  2. Добавьте интерфейс для входа, регистрации и подтверждения почтового ящика.
  3. Реализуйте ограничение доступа к рассылкам для разных пользователей.
  4. Реализуйте интерфейс менеджера.
  5. Создайте блог для продвижения сервиса.

Используйте для наследования модель AbstractUser

Функционал менеджера

  • Может просматривать любые рассылки.
  • Может просматривать список пользователей сервиса.
  • Может блокировать пользователей сервиса.
  • Может отключать рассылки.
  • Не может редактировать рассылки.
  • Не может управлять списком рассылок.
  • Не может изменять рассылки и сообщения.

Функционал пользователя

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

Продвижение

Блог

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

В сущность блога добавьте следующие поля:

  • заголовок,
  • содержимое статьи,
  • изображение,
  • количество просмотров,
  • дата публикации.

Главная страница

Реализуйте главную страницу в произвольном формате, но обязательно отобразите следующую информацию:

  • количество рассылок всего,
  • количество активных рассылок,
  • количество уникальных клиентов для рассылок,
  • 3 случайные статьи из блога.

mailing_service's People

Contributors

alerono02 avatar

Watchers

 avatar

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.