Тестовое задание Adwile (ТЗ)
Процесс установки может быть абсолютно разный, хоть через Docker контейнеры, хоть вручную, я приведу самый простой пример Develop окружения.
-
Клонировать репозиторий
-
Инициализировать и активировать виртуальное окружение Python (pipenv, poetry, etc.)
python3 -m venv .venv
# Windows
.\.venv\Scripts\activate
# UNIX
source .venv/bin/activate
- Установить зависимости проекта
pip install -r requirements.txt
- Инициализировать БД
python manage.py makemigrations
python manage.py migrate
- (Опционально) Создать аккаунт суперпользователя
python manage.py createsuperuser
- Запустить Development сервер
python manage.py runserver
- Готово, сервер запущен на
http://localhost:8000/
Произведение каких-либо операций при изменении статуса тизера (оплате или отклонении), можно реализовать либо оверрайдом методов модели, либо сигналами, я покажу на сигналах:
from django.db.models.signals import post_save
from teasers.models import Teaser
def status_changed_callback(signal, sender, instance: Teaser, *args, **kwargs):
if instance.status == Teaser.Status.PAID:
print(f"The teaser '{instance}' was paid for")
if instance.status == Teaser.Status.REJECTED:
print(f"The teaser '{instance}' was rejected")
post_save.connect(status_changed_callback, sender=Teaser)