change serializer fields
This commit is contained in:
@@ -1,2 +1,3 @@
|
||||
from .project import *
|
||||
from .builder import *
|
||||
from .project_estimate import *
|
||||
18
core/apps/projects/admin/project_estimate.py
Normal file
18
core/apps/projects/admin/project_estimate.py
Normal file
@@ -0,0 +1,18 @@
|
||||
from django.contrib import admin
|
||||
|
||||
from core.apps.projects.models.project_estimate import ProjectEstimate, EstimateWork, EstimateProduct
|
||||
|
||||
|
||||
@admin.register(ProjectEstimate)
|
||||
class ProjectEstimateAdmin(admin.ModelAdmin):
|
||||
list_display = ['id', 'number', 'name']
|
||||
|
||||
|
||||
@admin.register(EstimateWork)
|
||||
class EstimateWorkAdmin(admin.ModelAdmin):
|
||||
list_display = ['id', 'number', 'name', 'price', 'quantity']
|
||||
|
||||
|
||||
@admin.register(EstimateProduct)
|
||||
class EstimateProductAdmin(admin.ModelAdmin):
|
||||
list_display = ['id', 'product', 'price', 'quantity']
|
||||
@@ -0,0 +1,65 @@
|
||||
# Generated by Django 5.2.4 on 2025-08-07 16:01
|
||||
|
||||
import django.db.models.deletion
|
||||
import uuid
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('products', '0004_product_type'),
|
||||
('projects', '0012_project_is_archive'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='ProjectEstimate',
|
||||
fields=[
|
||||
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True)),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('number', models.PositiveIntegerField(default=1)),
|
||||
('name', models.CharField(max_length=200)),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Loyiha smetasi',
|
||||
'verbose_name_plural': 'Loyiha smetalari',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='EstimateProduct',
|
||||
fields=[
|
||||
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True)),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('quantity', models.PositiveIntegerField(default=1)),
|
||||
('price', models.PositiveBigIntegerField(blank=True, null=True)),
|
||||
('date', models.DateField(blank=True, null=True)),
|
||||
('product', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='estimate_products', to='products.product')),
|
||||
('unity', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='estimate_products', to='products.unity')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Smeta mahsuloti',
|
||||
'verbose_name_plural': 'Smeta mahsulotlari',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='EstimateWork',
|
||||
fields=[
|
||||
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True)),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('number', models.PositiveIntegerField(default=1)),
|
||||
('name', models.CharField(max_length=200)),
|
||||
('quantity', models.PositiveIntegerField(default=1)),
|
||||
('price', models.PositiveBigIntegerField(blank=True, null=True)),
|
||||
('date', models.DateField(blank=True, null=True)),
|
||||
('unity', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='estimate_works', to='products.unity')),
|
||||
('estimate', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='estimate_works', to='projects.projectestimate')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Smeta ishlar',
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -1,2 +1,3 @@
|
||||
from .project import *
|
||||
from .builder import *
|
||||
from .project_estimate import *
|
||||
@@ -79,7 +79,7 @@ class Project(BaseModel):
|
||||
CashTransaction, related_name='projects'
|
||||
)
|
||||
currency = models.CharField(choices=[('usd', 'usd'),('uzs','uzs')], max_length=3, default='uzs')
|
||||
benifit_plan = models.PositiveBigIntegerField(null=True)
|
||||
benifit_plan = models.PositiveBigIntegerField(null=True, blank=True)
|
||||
status = models.CharField(max_length=20, choices=STATUS, default='PLANNED')
|
||||
is_archive = models.BooleanField(default=False)
|
||||
|
||||
|
||||
@@ -3,7 +3,55 @@ from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from core.apps.shared.models import BaseModel
|
||||
from core.apps.projects.models import Project
|
||||
from core.apps.products.models import Unity, Product
|
||||
|
||||
|
||||
class ProjectEstimate(BaseModel):
|
||||
...
|
||||
number = models.PositiveIntegerField(default=1)
|
||||
name = models.CharField(max_length=200)
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.number}.{self.name}'
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('Loyiha smetasi')
|
||||
verbose_name_plural = _('Loyiha smetalari')
|
||||
|
||||
|
||||
class EstimateWork(BaseModel):
|
||||
number = models.PositiveIntegerField(default=1)
|
||||
name = models.CharField(max_length=200)
|
||||
quantity = models.PositiveIntegerField(default=1)
|
||||
unity = models.ForeignKey(
|
||||
Unity, on_delete=models.SET_NULL, null=True, related_name='estimate_works'
|
||||
)
|
||||
price = models.PositiveBigIntegerField(null=True, blank=True)
|
||||
estimate = models.ForeignKey(
|
||||
ProjectEstimate, on_delete=models.CASCADE, related_name='estimate_works'
|
||||
)
|
||||
date = models.DateField(null=True, blank=True)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.number}.{self.name}"
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("Smeta ish")
|
||||
verbose_name = _("Smeta ishlar")
|
||||
|
||||
|
||||
class EstimateProduct(BaseModel):
|
||||
product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='estimate_products')
|
||||
quantity = models.PositiveIntegerField(default=1)
|
||||
price = models.PositiveBigIntegerField()
|
||||
unity = models.ForeignKey(
|
||||
Unity, on_delete=models.SET_NULL, null=True, related_name='estimate_products'
|
||||
)
|
||||
price = models.PositiveBigIntegerField(null=True, blank=True)
|
||||
date = models.DateField(null=True, blank=True)
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.product} - {self.price}'
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('Smeta mahsuloti')
|
||||
verbose_name_plural = _('Smeta mahsulotlari')
|
||||
@@ -89,8 +89,8 @@ class ProjectCreateSerializer(serializers.Serializer):
|
||||
|
||||
wherehouse = serializers.ListSerializer(child=serializers.UUIDField())
|
||||
cash_transaction = serializers.ListSerializer(child=serializers.UUIDField())
|
||||
currency = serializers.ChoiceField(choices=[('uzs', 'uzs'), ('usd', 'usd')])
|
||||
benifit_plan = serializers.IntegerField()
|
||||
currency = serializers.ChoiceField(choices=[('uzs', 'uzs'), ('usd', 'usd')], required=False)
|
||||
benifit_plan = serializers.IntegerField(required=False)
|
||||
|
||||
def create(self, validated_data):
|
||||
boss_ids = validated_data.pop('boss')
|
||||
@@ -165,8 +165,8 @@ class ProjectFolderProjectCreateSerializer(serializers.Serializer):
|
||||
|
||||
wherehouse = serializers.ListSerializer(child=serializers.UUIDField())
|
||||
cash_transaction = serializers.ListSerializer(child=serializers.UUIDField())
|
||||
currency = serializers.ChoiceField(choices=[('uzs', 'uzs'), ('usd', 'usd')])
|
||||
benifit_plan = serializers.IntegerField()
|
||||
currency = serializers.ChoiceField(choices=[('uzs', 'uzs'), ('usd', 'usd')], required=False)
|
||||
benifit_plan = serializers.IntegerField(required=False)
|
||||
|
||||
def validate(self, data):
|
||||
folder = ProjectFolder.objects.filter(id=data['folder_id']).first()
|
||||
|
||||
11
core/apps/projects/serializers/project_estimate.py
Normal file
11
core/apps/projects/serializers/project_estimate.py
Normal file
@@ -0,0 +1,11 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from core.apps.projects.models.project_estimate import EstimateProduct, EstimateWork, ProjectEstimate
|
||||
|
||||
|
||||
class ProjectEstimateListSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = ProjectEstimate
|
||||
fields = [
|
||||
'id', 'number', 'name'
|
||||
]
|
||||
5
core/apps/projects/views/project_estimate.py
Normal file
5
core/apps/projects/views/project_estimate.py
Normal file
@@ -0,0 +1,5 @@
|
||||
from rest_framework import generics, views
|
||||
from rest_framework.response import Response
|
||||
|
||||
from core.apps.accounts.permissions.permissions import HasRolePermission
|
||||
from core.apps.projects.models.project_estimate import ProjectEstimate, EstimateProduct, EstimateWork
|
||||
Reference in New Issue
Block a user