Нам необходимо разработать интернет-ресурс для фанатского сервера одной известной MMORPG — что-то вроде доски объявлений. Пользователи нашего ресурса должны иметь возможность зарегистрироваться в нём по e-mail, получив письмо с кодом подтверждения регистрации. После регистрации им становится доступно создание и редактирование объявлений. Объявления состоят из заголовка и текста, внутри которого могут быть картинки, встроенные видео и другой контент. Пользователи могут отправлять отклики на объявления других пользователей, состоящие из простого текста. При отправке отклика пользователь должен получить e-mail с оповещением о нём. Также пользователю должна быть доступна приватная страница с откликами на его объявления, внутри которой он может фильтровать отклики по объявлениям, удалять их и принимать (при принятии отклика пользователю, оставившему отклик, также должно прийти уведомление). Кроме того, пользователь обязательно должен определить объявление в одну из следующих категорий: Танки, Хилы, ДД, Торговцы, Гилдмастеры, Квестгиверы, Кузнецы, Кожевники, Зельевары, Мастера заклинаний. Также мы бы хотели иметь возможность отправлять пользователям новостные рассылки.
- Установленные в системе или запущенные в контейнере Redis-сервер и Postgres.
-
создать и активировать виртуальное окружение в отдельной папке (она будет корневой).
-
в папку c окружением скачать все файлы проекта.
-
установить зависимости из
requirements.txtв окружение. -
создать файл
.envв корневой папке со следующим набором переменных:DJANGO_SK- секретный ключ Django.TZ- часовой пояс.EMAIL- Google-аккаунт, с которого будут рассылаться письма.EMAIL_PASSWORD- пароль приложения к аккаунту выше (обычный пароль от почты не подойдет).POSTGRES_USER- Юзер для доступа к БД.POSTGRES_PASSWORD- пароль юзера БД.POSTGRES_DB- имя БД.POSTGRES_HOST- хост БД (если БД установлена локально, то можно использовать localhost)POSTGRES_POST- порт БД.REDIS_HOST- хост для Redis-сервера.REDIS_PORT- порт Redis-сервера.REDIS_DB- БД Redis-сервера.
python manage.py runserver - запуск Django-сервера.
python manage.py migrate - применение миграций.
python manage.py createsuperuser - создание учетной записи админа.
Linux:
celery -A PeaceCraftFun worker -l info -B - запуск Celery-воркера с Beat
Windows:
celery -A PeaceCraftFun worker -l info - запуск Celery-воркера.
celery -A PeaceCraftFun beat -l info - запуск Celery Beat.
-
Регистрация реализована через django-allauth с доп. чекбоксом о подписке на новостную рассылку, подтверждение - кастомное, через отправку по сигналу о регистрации нового пользователя письма на почту, указанную при регистрации, с шестизначным числовым кодом. Если пользователь не завершил регистрацию вводом кода на соответствующей странице, то сайт ему будет недоступен (только страница подтверждения регистрации, за это отвечает отдельный middleware). Если в течение 24 часов после регистрации пользователь не подтвердил регистрацию - его аккаунт удаляется.
-
Реализованы стандартными средствами Django: CreateView и UpdateView.
-
Реализованы моделью Comment с fk на модель Post (объявление), письмо с уведомлением - через сигнал о создании объекта Comment.
-
ListView со списком откликов, оставленных под объявлениями пользователя. Можно выбирать - отображать все отклики или отклики под каким-то конкретным объявлением, так же можно удалять и принимать (при принятии отклика его шапка становится зеленой, а пользователь, оставивший его, получает письмо об этом, по сигналу об изменении объекта Comment).
-
Двух видов:
- автоматическая, о добавленных за неделю объявлениях со ссылками на них.
- рассылка новостей от комманды сайта, для этого у админов (user.is_staff) есть отдельная страница с с соотвествующей формой.
Чтобы получать новостную рассылку пользователь должен быть на нее подписан!