Files
ibapp-backend/core/apps/projects/models/project.py
2025-08-05 10:34:29 +05:00

71 lines
2.3 KiB
Python

from django.db import models
from django.utils.translation import gettext_lazy as _
from core.apps.shared.models import BaseModel
from core.apps.projects.models.builder import Builder
from core.apps.accounts.models.user import User
from core.apps.wherehouse.models.wherehouse import WhereHouse
from core.apps.finance.models import CashTransaction
class ProjectFolder(BaseModel):
COLORS = (
('ORANGE', 'orange'),
('GREEN', 'green'),
('BLUE', 'blue'),
('PURPLE', 'purple'),
('RED', 'red')
)
name = models.CharField(max_length=200)
color = models.CharField(max_length=10, choices=COLORS, default='ORANGE')
def __str__(self):
return self.name
class Meta:
verbose_name = _('Loyiha papkasi')
verbose_name_plural = _('Loyiha papkalari')
class Project(BaseModel):
STATUS = (
('PLANNED', 'planned'),
('IN_PROGRESS', 'in progress'),
('FINISHED', 'finished'),
('SUSPENDED', 'suspended'),
)
name = models.CharField(max_length=200)
location = models.CharField(max_length=200)
start_date = models.DateField()
end_date = models.DateField()
folder = models.ForeignKey(
ProjectFolder, on_delete=models.SET_NULL, null=True, blank=True, related_name='projects'
)
builder = models.ForeignKey(
Builder, on_delete=models.CASCADE, related_name='projects', null=True
)
area = models.PositiveBigIntegerField(null=True)
# project workers
boss = models.ManyToManyField(User, related_name='project_bosses')
foreman = models.ManyToManyField(User, related_name='project_foremans')
other_members = models.ManyToManyField(User, related_name='project_members')
# project settings
wherehouse = models.ManyToManyField(
WhereHouse, related_name='projects'
)
cash_transaction = models.ManyToManyField(
CashTransaction, related_name='projects'
)
currency = models.CharField(choices=[('usd', 'usd'),('uzs','uzs')], max_length=3, default='uzs')
benifit_plan = models.PositiveBigIntegerField(null=True)
status = models.CharField(max_length=20, choices=STATUS, default='PLANNED')
def __str__(self):
return self.name
class Meta:
verbose_name = _('Loyiha')
verbose_name_plural = _('Loyihalar')