gold eggs backend
Some checks failed
Build and Push to Docker Hub / build-test-push (push) Failing after 1m55s

This commit is contained in:
2026-04-15 08:59:36 +02:00
commit ab73d05ecc
359 changed files with 14415 additions and 0 deletions

View File

@@ -0,0 +1,85 @@
"""
Party model
"""
from django.db import models
from django.db.models import Sum
from core.http.models import base
from core.http.models.user import User
class Party(base.AbstractBaseModel):
user_id = models.ForeignKey(
to=User, on_delete=models.CASCADE, related_name="parties"
)
# umumiy soni
count = models.IntegerField(default=0, null=True, blank=True)
# sotilgan soni
sold_count = models.IntegerField(default=0, null=True, blank=True)
# qolgan soni
remaining_count = models.IntegerField(default=0, null=True, blank=True)
# tushum
benefit = models.DecimalField(
max_digits=30, decimal_places=2, default=0, null=True, blank=True
)
# foyda
profit = models.DecimalField(
max_digits=30, decimal_places=2, default=0, null=True, blank=True
)
# partiya narxi
cost = models.DecimalField(
max_digits=30, decimal_places=2, default=0, null=True, blank=True
)
# umumiy narxi
total_cost = models.DecimalField(
max_digits=30, decimal_places=2, default=0, null=True, blank=True
)
broken_eggs = models.IntegerField(default=0, null=True, blank=True)
courier_eggs = models.IntegerField(default=0, null=True, blank=True)
@staticmethod
def get_total_benefit():
return Party.objects.aggregate(
total_count=Sum("count"), # umumiy mahsulot soni
total_sold_count=Sum(
"sold_count"
), # umumiy sotilgan mahsulot soni
total_remaining_count=Sum(
"remaining_count"
), # umumiy qolgan mahsulot soni
total_broken_eggs=Sum("broken_eggs"), # umumiy singan soni
total_courier_eggs=Sum(
"courier_eggs"
), # umumiy kuryerlar tomonidan olingan soni
)
def clean(self):
if self.count < 0:
raise ValueError("Count can't be negative")
if self.sold_count < 0:
raise ValueError("Sold count can't be negative")
if self.remaining_count < 0:
raise ValueError("Remaining count can't be negative")
if self.benefit < 0:
raise ValueError("Benefit can't be negative")
if self.cost < 0:
raise ValueError("Cost can't be negative")
if self.total_cost < 0:
raise ValueError("Total cost can't be negative")
def update_total_cost(self):
total_invoice_price = (
self.invoices.aggregate(Sum("price"))["price__sum"] or 0
)
self.total_cost = self.cost + total_invoice_price
self.profit -= total_invoice_price
self.save()
def __str__(self):
return f"User - {self.user_id}, price - {self.benefit}"
class Meta:
verbose_name = "Party"
verbose_name_plural = "Parties"
db_table = "party"