This commit is contained in:
behruz-dev
2025-09-04 17:50:07 +05:00
parent ed5e71db25
commit a56a62acfa
9 changed files with 74 additions and 5 deletions

View File

@@ -11,4 +11,5 @@ POSTGRES_PORT=5432
COMMAND=sh ./resources/scripts/entrypoint-server.sh
PORT=8080
CACHEOPS_ENABLED=True
CACHEOPS_ENABLED=True
BOT_TOKEN=8147952177:AAEsR2ejafoKVb_OFcm6rEJAzUt_BKiOr5A

10
config/celery.py Normal file
View File

@@ -0,0 +1,10 @@
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.base')
app = Celery('config', broker="redis://redis:6379", backend="redis://redis:6379")
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

View File

@@ -3,4 +3,5 @@ from .cors import *
from .jwt import *
from .logs import *
from .swagger import *
from .redis import *
from .redis import *
from .celery import *

8
config/conf/celery.py Normal file
View File

@@ -0,0 +1,8 @@
from django.conf import settings
CELERY_BROKER_URL = 'redis://redis:6379'
CELERY_RESULT_BACKEND = "redis://redis:6379"
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_TIMEZONE = settings.TIME_ZONE
CELERY_ENABLED = True

View File

@@ -5,6 +5,7 @@ from rest_framework import serializers
from core.apps.orders.models import Order, OrderItem
from core.apps.products.models import Product
from core.apps.products.serializers.product import ProductListSerializer
from core.apps.orders.tasks.order_item import send_orders_to_tg_bot
class OrderItemCreateSerializer(serializers.Serializer):
@@ -54,6 +55,13 @@ class OrderCreateSerializer(serializers.Serializer):
order=order,
))
total_price += item.get('price')
send_orders_to_tg_bot.delay(
chat_id=item.get('product').tg_id,
product_name=item.get('product').name,
quantity=item.get('quantity'),
price=item.get('price')
)
OrderItem.objects.bulk_create(items)
order.total_price = total_price
order.save()

View File

@@ -1,7 +1,7 @@
from django.db.models.signals import post_save
from django.dispatch import receiver
from core.apps.orders.models import Order
from core.apps.orders.models import Order, OrderItem
@receiver(post_save, sender=Order)

View File

@@ -0,0 +1,23 @@
import requests
from celery import shared_task
from core.apps.orders.models import OrderItem
from config.env import env
token = env.str("BOT_TOKEN")
@shared_task
def send_orders_to_tg_bot(chat_id, product_name, quantity, price):
url = f"https://api.telegram.org/bot{token}/sendMessage"
message = (
f"Mahsulot nomi: {product_name}\n"
f"Mahsulot soni: {quantity}\n"
f"Summa: {price}"
)
payload = {
"chat_id": chat_id,
"text": message
}
response = requests.post(url, data=payload)
return response.json()

View File

@@ -49,4 +49,20 @@ services:
redis:
networks:
- horeca
image: redis
image: redis
celery:
build:
context: .
dockerfile: ./docker/Dockerfile.web
command: celery -A config worker --loglevel=info
volumes:
- "./:/code"
depends_on:
- redis
- web
networks:
- horeca
environment:
- CELERY_BROKER_URL=redis://redis:6379
- CELERY_RESULT_BACKEND=redis://redis:6379

View File

@@ -10,4 +10,6 @@ redis
django-redis
psycopg2-binary
pillow
django-modeltranslation
django-modeltranslation
celery
requests