94 lines
3.1 KiB
Python
94 lines
3.1 KiB
Python
from django.db import models
|
||
|
||
class IssueCategory(models.Model):
|
||
"""Категории проблем"""
|
||
name = models.CharField(max_length=255, unique=True)
|
||
|
||
def __str__(self):
|
||
return self.name
|
||
|
||
class Zone(models.Model):
|
||
"""Зоны, где возникают проблемы"""
|
||
name = models.CharField(max_length=255, unique=True)
|
||
|
||
def __str__(self):
|
||
return self.name
|
||
|
||
class Issue(models.Model):
|
||
"""Конкретные проблемы"""
|
||
category = models.ForeignKey(IssueCategory, on_delete=models.CASCADE, related_name="issues")
|
||
zone = models.ForeignKey(Zone, on_delete=models.CASCADE, related_name="issues")
|
||
description = models.TextField()
|
||
created_at = models.DateTimeField(auto_now_add=True)
|
||
updated_at = models.DateTimeField(auto_now=True)
|
||
|
||
def __str__(self):
|
||
return f"{self.category.name} - {self.zone.name}: {self.description[:50]}"
|
||
|
||
|
||
"""GET /api/categories/ – список категорий
|
||
POST /api/categories/ – создать категорию
|
||
GET /api/zones/ – список зон
|
||
POST /api/zones/ – создать зону
|
||
GET /api/issues/ – список проблем
|
||
POST /api/issues/ – добавить проблему
|
||
DELETE /api/issues/<id>/ – удалить проблему"""
|
||
|
||
|
||
|
||
"""Модели справочника номенклатура и сообщения"""
|
||
class Nomenclature(models.Model):
|
||
name = models.CharField(max_length=255)
|
||
short_name = models.CharField(max_length=100)
|
||
gtin = models.CharField(max_length=14, unique=True)
|
||
groupe_water = models.CharField(max_length=255)
|
||
groupe_names = models.CharField(max_length=255)
|
||
|
||
def __str__(self):
|
||
return self.name
|
||
|
||
|
||
class Message(models.Model):
|
||
identifier = models.CharField(max_length=100, unique=True)
|
||
text = models.TextField()
|
||
|
||
def __str__(self):
|
||
return f"{self.identifier}: {self.text[:30]}"
|
||
|
||
class Plant(models.Model):
|
||
"""Справочник заводов"""
|
||
name = models.CharField(max_length=255, unique=True)
|
||
|
||
def __str__(self):
|
||
return self.name
|
||
|
||
|
||
class ProductionLine(models.Model):
|
||
"""Справочник производственных линий"""
|
||
name = models.CharField(max_length=255, unique=True)
|
||
plant = models.ForeignKey(Plant, on_delete=models.CASCADE, related_name="lines")
|
||
|
||
def __str__(self):
|
||
return f"{self.plant.name} - {self.name}"
|
||
|
||
|
||
class ProductionZone(models.Model):
|
||
"""Справочник производственных зон"""
|
||
name = models.CharField(max_length=255)
|
||
line = models.ForeignKey(ProductionLine, on_delete=models.CASCADE, related_name="zones")
|
||
|
||
class Meta:
|
||
unique_together = ('name', 'line') # Зона уникальна в пределах линии
|
||
|
||
def __str__(self):
|
||
return f"{self.line.name} - {self.name}"
|
||
|
||
|
||
class DowntimeReason(models.Model):
|
||
"""Справочник причин простоев"""
|
||
name = models.CharField(max_length=255, unique=True)
|
||
description = models.TextField(blank=True)
|
||
|
||
def __str__(self):
|
||
return self.name
|