add new features
This commit is contained in:
6
config/conf/celery.py
Normal file
6
config/conf/celery.py
Normal file
@@ -0,0 +1,6 @@
|
||||
from django.conf import settings
|
||||
|
||||
CELERY_BROKER_URL = 'redis://redis:6379/0'
|
||||
CELERY_ACCEPT_CONTENT = ['json']
|
||||
CELERY_TASK_SERIALIZER = 'json'
|
||||
CELERY_TIMEZONE = settings.TIME_ZONE
|
||||
@@ -159,4 +159,5 @@ from config.conf.logs import *
|
||||
from config.conf.cors_headers import *
|
||||
from config.conf.drf_yasg import *
|
||||
from config.conf.jazzmin import *
|
||||
from config.conf.redis import *
|
||||
from config.conf.redis import *
|
||||
from config.conf.celery import *
|
||||
18
core/apps/orders/migrations/0023_alter_party_orders.py
Normal file
18
core/apps/orders/migrations/0023_alter_party_orders.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 5.2.4 on 2025-08-25 10:14
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('orders', '0022_alter_party_number'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='party',
|
||||
name='orders',
|
||||
field=models.ManyToManyField(blank=True, related_name='parties', to='orders.order'),
|
||||
),
|
||||
]
|
||||
@@ -28,7 +28,7 @@ class Party(BaseModel):
|
||||
)
|
||||
|
||||
number = models.PositiveIntegerField(default=0)
|
||||
orders = models.ManyToManyField(Order, related_name='parties', null=True, blank=True)
|
||||
orders = models.ManyToManyField(Order, related_name='parties', blank=True)
|
||||
mediator = models.ForeignKey(User, on_delete=models.CASCADE, related_name='parties')
|
||||
# dates
|
||||
delivery_date = models.DateField()
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
from django.db import transaction
|
||||
|
||||
from rest_framework import serializers
|
||||
|
||||
# orders
|
||||
from core.apps.orders.models import Order
|
||||
from core.apps.orders.tasks.order import create_inventory
|
||||
# products
|
||||
from core.apps.products.models import Product, Unity
|
||||
from core.apps.products.serializers.product import ProductListSerializer
|
||||
@@ -80,6 +81,7 @@ class MultipleOrderCreateSerializer(serializers.Serializer):
|
||||
date=common_date,
|
||||
employee=self.context.get('user'),
|
||||
))
|
||||
create_inventory.delay(resource['wherehouse'],resource['quantity'],resource)
|
||||
|
||||
created_orders = Order.objects.bulk_create(orders)
|
||||
return created_orders
|
||||
|
||||
14
core/apps/orders/tasks/order.py
Normal file
14
core/apps/orders/tasks/order.py
Normal file
@@ -0,0 +1,14 @@
|
||||
from celery import shared_task
|
||||
|
||||
from core.apps.wherehouse.models.inventory import Inventory
|
||||
|
||||
|
||||
@shared_task
|
||||
def create_inventory(wherehouse, quantity, product, unity, price):
|
||||
Inventory.objects.create(
|
||||
wherehouse__id=wherehouse,
|
||||
quantity=quantity,
|
||||
product__id=product,
|
||||
unity__id=unity,
|
||||
price=price
|
||||
)
|
||||
@@ -0,0 +1,25 @@
|
||||
# Generated by Django 5.2.4 on 2025-08-25 10:13
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('products', '0006_alter_product_type'),
|
||||
('wherehouse', '0002_stockmovemend'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='inventory',
|
||||
name='price',
|
||||
field=models.PositiveBigIntegerField(default=0),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='inventory',
|
||||
name='unity',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='inventories', to='products.unity'),
|
||||
),
|
||||
]
|
||||
@@ -1,15 +1,21 @@
|
||||
from django.db import models
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
# shared
|
||||
from core.apps.shared.models import BaseModel
|
||||
# warehouse
|
||||
from core.apps.wherehouse.models.wherehouse import WhereHouse
|
||||
# products
|
||||
from core.apps.products.models.product import Product
|
||||
from core.apps.products.models.unity import Unity
|
||||
|
||||
|
||||
class Inventory(BaseModel):
|
||||
wherehouse = models.ForeignKey(WhereHouse, on_delete=models.CASCADE, related_name='inventories')
|
||||
quantity = models.PositiveIntegerField(default=0)
|
||||
product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='inventories')
|
||||
unity = models.ForeignKey(Unity, on_delete=models.SET_NULL, related_name='inventories', null=True)
|
||||
price = models.PositiveBigIntegerField(default=0)
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.product} in {self.wherehouse}'
|
||||
|
||||
@@ -50,4 +50,18 @@ services:
|
||||
networks:
|
||||
- uyqur
|
||||
image: redis
|
||||
ports:
|
||||
- "6380:6379"
|
||||
|
||||
celery:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ./docker/Dockerfile.web
|
||||
command: celery -A config worker --loglevel=info
|
||||
volumes:
|
||||
- "./:/code"
|
||||
depends_on:
|
||||
- redis
|
||||
- web
|
||||
networks:
|
||||
- uyqur
|
||||
Reference in New Issue
Block a user