Поменял модели операций с JSON на полиморфные

This commit is contained in:
2026-02-14 18:13:51 +03:00
parent 01d560cfb4
commit e77237ca5e
5 changed files with 3681 additions and 116 deletions

View File

@@ -0,0 +1,115 @@
# Generated by Django 6.0.2 on 2026-02-14 10:18
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('bom_manager', '0005_workcenter_routingstep'),
('contenttypes', '0002_remove_content_type_name'),
]
operations = [
migrations.CreateModel(
name='BaseOperation',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('order', models.PositiveIntegerField(default=10, help_text='Например: 10, 20, 30...', verbose_name='Номер операции')),
('item', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='operations', to='bom_manager.item', verbose_name='Компонент')),
('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_%(app_label)s.%(class)s_set+', to='contenttypes.contenttype')),
('work_center', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='operations', to='bom_manager.workcenter', verbose_name='Станок/Участок')),
],
options={
'verbose_name': 'Операция',
'verbose_name_plural': 'Операции',
'ordering': ['order'],
},
),
migrations.CreateModel(
name='Coating',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100, verbose_name='Название покрытия')),
('consumption', models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='Расход покрытия, м2/л')),
],
options={
'verbose_name': 'Покрытие',
'verbose_name_plural': 'Покрытия',
},
),
migrations.CreateModel(
name='LaserCutSheet',
fields=[
('baseoperation_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='bom_manager.baseoperation')),
('thickness', models.IntegerField(default=3, verbose_name='Толщина листа, мм')),
('cut_length', models.IntegerField(default=0, verbose_name='Длина реза, мм')),
('pierces', models.IntegerField(default=1, verbose_name='Количество проколов')),
('dxf_file', models.FileField(blank=True, null=True, upload_to='dxf_files/%Y/%m', verbose_name='DXF файл')),
],
options={
'verbose_name': 'Лазерная резка листа',
'verbose_name_plural': 'ЛРЛ',
},
bases=('bom_manager.baseoperation',),
),
migrations.CreateModel(
name='LaserCutTube',
fields=[
('baseoperation_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='bom_manager.baseoperation')),
('thinckness', models.IntegerField(default=3, verbose_name='Толщина трубы, мм')),
('cut_length', models.IntegerField(default=0, verbose_name='Длина реза, мм')),
('pierces', models.IntegerField(default=1, verbose_name='Количество проколов')),
('iges_file', models.FileField(blank=True, null=True, upload_to='iges_files/%Y/%m', verbose_name='IGES файл')),
],
options={
'verbose_name': 'Лазерная резка трубы',
'verbose_name_plural': 'ЛРТ',
},
bases=('bom_manager.baseoperation',),
),
migrations.CreateModel(
name='Paint',
fields=[
('baseoperation_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='bom_manager.baseoperation')),
('area', models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='Площадь покраски, м2')),
('color', models.CharField(blank=True, max_length=100, null=True, verbose_name='Код RAL')),
('number_of_layers', models.IntegerField(default=1, verbose_name='Число слоев')),
('coating', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='paints', to='bom_manager.coating', verbose_name='Покрытие')),
],
options={
'verbose_name': 'Покраска',
'verbose_name_plural': 'Покраски',
},
bases=('bom_manager.baseoperation',),
),
migrations.CreateModel(
name='Turning',
fields=[
('baseoperation_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='bom_manager.baseoperation')),
('work_time', models.IntegerField(default=0, verbose_name='Время работы, мин')),
],
options={
'verbose_name': 'Токарная обработка',
'verbose_name_plural': 'ТО',
},
bases=('bom_manager.baseoperation',),
),
migrations.CreateModel(
name='Weld',
fields=[
('baseoperation_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='bom_manager.baseoperation')),
('total_weld_length', models.IntegerField(default=0, verbose_name='Общая длина сварки, мм')),
('avg_leg', models.IntegerField(default=0, verbose_name='Средний катет, мм')),
],
options={
'verbose_name': 'Сварка',
'verbose_name_plural': 'Сварки',
},
bases=('bom_manager.baseoperation',),
),
migrations.DeleteModel(
name='RoutingStep',
),
]