2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-04-29 20:16:44 +00:00

Change model - add PartParameterTemplate

This commit is contained in:
Oliver Walters 2019-08-20 13:02:00 +10:00
parent 6393ddad53
commit e6819b5396
4 changed files with 99 additions and 10 deletions

View File

@ -4,7 +4,7 @@ from import_export.admin import ImportExportModelAdmin
from .models import PartCategory, Part from .models import PartCategory, Part
from .models import PartAttachment, PartStar from .models import PartAttachment, PartStar
from .models import BomItem from .models import BomItem
from .models import PartParameter from .models import PartParameterTemplate, PartParameter
class PartAdmin(ImportExportModelAdmin): class PartAdmin(ImportExportModelAdmin):
@ -31,13 +31,12 @@ class BomItemAdmin(ImportExportModelAdmin):
list_display = ('part', 'sub_part', 'quantity') list_display = ('part', 'sub_part', 'quantity')
"""
class ParameterTemplateAdmin(admin.ModelAdmin): class ParameterTemplateAdmin(admin.ModelAdmin):
list_display = ('name', 'units', 'format') list_display = ('name', 'units')
"""
class ParameterAdmin(admin.ModelAdmin): class ParameterAdmin(admin.ModelAdmin):
list_display = ('part', 'name', 'data') list_display = ('part', 'template', 'data')
admin.site.register(Part, PartAdmin) admin.site.register(Part, PartAdmin)
@ -45,4 +44,5 @@ admin.site.register(PartCategory, PartCategoryAdmin)
admin.site.register(PartAttachment, PartAttachmentAdmin) admin.site.register(PartAttachment, PartAttachmentAdmin)
admin.site.register(PartStar, PartStarAdmin) admin.site.register(PartStar, PartStarAdmin)
admin.site.register(BomItem, BomItemAdmin) admin.site.register(BomItem, BomItemAdmin)
admin.site.register(PartParameterTemplate, ParameterTemplateAdmin)
admin.site.register(PartParameter, ParameterAdmin) admin.site.register(PartParameter, ParameterAdmin)

View File

@ -0,0 +1,37 @@
# Generated by Django 2.2.4 on 2019-08-20 02:51
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('part', '0014_partparameter'),
]
operations = [
migrations.CreateModel(
name='PartParameterTemplate',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(help_text='Parameter Name', max_length=100)),
('units', models.CharField(blank=True, help_text='Parameter Units', max_length=25)),
],
),
migrations.RemoveField(
model_name='partparameter',
name='name',
),
migrations.AlterField(
model_name='partparameter',
name='data',
field=models.CharField(help_text='Parameter Value', max_length=500),
),
migrations.AddField(
model_name='partparameter',
name='template',
field=models.ForeignKey(default=1, help_text='Parameter Template', on_delete=django.db.models.deletion.CASCADE, related_name='instances', to='part.PartParameterTemplate'),
preserve_default=False,
),
]

View File

@ -0,0 +1,17 @@
# Generated by Django 2.2.4 on 2019-08-20 02:57
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('part', '0015_auto_20190820_0251'),
]
operations = [
migrations.AlterUniqueTogether(
name='partparameter',
unique_together={('part', 'template')},
),
]

View File

@ -1033,26 +1033,61 @@ class PartStar(models.Model):
unique_together = ['part', 'user'] unique_together = ['part', 'user']
class PartParameter(models.Model): class PartParameterTemplate(models.Model):
""" A PartParameter provides key:value pairs for extra """ A PartParameterTemplate provides a template for key:value pairs for extra
parameters fields/values to be added to a Part. parameters fields/values to be added to a Part.
This allows users to arbitrarily assign data fields to a Part This allows users to arbitrarily assign data fields to a Part
beyond the built-in attributes. beyond the built-in attributes.
Attributes: Attributes:
part: Link to a Part object
name: The name (key) of the Parameter [string] name: The name (key) of the Parameter [string]
units: The units of the Parameter [string]
"""
def __str__(self):
s = str(self.name)
if self.units:
s += " ({units})".format(units=self.units)
return s
name = models.CharField(max_length=100, help_text='Parameter Name')
units = models.CharField(max_length=25, help_text='Parameter Units', blank=True)
class PartParameter(models.Model):
""" A PartParameter is a specific instance of a PartParameterTemplate.
Attributes:
part: Reference to a single Part object
template: Reference to a single PartParameterTemplate object
data: The data (value) of the Parameter [string] data: The data (value) of the Parameter [string]
""" """
def __str__(self):
return "{part} : {param} = {data}{units}".format(
part=str(self.part),
param=str(self.template.name),
data=str(self.data),
units=str(self.template.units)
)
class Meta:
# Prevent multiple instances of a parameter for a single part
unique_together = ('part', 'template')
part = models.ForeignKey(Part, on_delete=models.CASCADE, part = models.ForeignKey(Part, on_delete=models.CASCADE,
related_name='parameters', related_name='parameters',
help_text='Parent Part', help_text='Parent Part',
) )
name = models.CharField(max_length=100, help_text='Parameter Name') template = models.ForeignKey(PartParameterTemplate, on_delete=models.CASCADE,
related_name='instances',
help_text='Parameter Template'
)
data = models.CharField(max_length=100, help_text='Parameter Value') data = models.CharField(max_length=500, help_text='Parameter Value')
class BomItem(models.Model): class BomItem(models.Model):