mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Added help text for model fields
This commit is contained in:
parent
a7794394a3
commit
e9c904076f
30
InvenTree/build/migrations/0012_auto_20190508_2332.py
Normal file
30
InvenTree/build/migrations/0012_auto_20190508_2332.py
Normal file
@ -0,0 +1,30 @@
|
||||
# Generated by Django 2.2 on 2019-05-08 13:32
|
||||
|
||||
import django.core.validators
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('build', '0011_auto_20190508_0748'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='build',
|
||||
name='notes',
|
||||
field=models.TextField(blank=True, help_text='Extra build notes'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='build',
|
||||
name='part',
|
||||
field=models.ForeignKey(help_text='Select part to build', limit_choices_to={'active': True, 'buildable': True}, on_delete=django.db.models.deletion.CASCADE, related_name='builds', to='part.Part'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='build',
|
||||
name='status',
|
||||
field=models.PositiveIntegerField(choices=[(10, 'Pending'), (20, 'Allocated'), (30, 'Cancelled'), (40, 'Complete')], default=10, help_text='Build status', validators=[django.core.validators.MinValueValidator(0)]),
|
||||
),
|
||||
]
|
@ -47,6 +47,7 @@ class Build(models.Model):
|
||||
'buildable': True,
|
||||
'active': True
|
||||
},
|
||||
help_text='Select part to build',
|
||||
)
|
||||
|
||||
title = models.CharField(
|
||||
@ -75,7 +76,8 @@ class Build(models.Model):
|
||||
|
||||
status = models.PositiveIntegerField(default=PENDING,
|
||||
choices=BUILD_STATUS_CODES.items(),
|
||||
validators=[MinValueValidator(0)])
|
||||
validators=[MinValueValidator(0)],
|
||||
help_text='Build status')
|
||||
|
||||
batch = models.CharField(max_length=100, blank=True, null=True,
|
||||
help_text='Batch code for this build output')
|
||||
@ -92,7 +94,7 @@ class Build(models.Model):
|
||||
|
||||
URL = models.URLField(blank=True, help_text='Link to external URL')
|
||||
|
||||
notes = models.TextField(blank=True)
|
||||
notes = models.TextField(blank=True, help_text='Extra build notes')
|
||||
""" Notes attached to each build output """
|
||||
|
||||
@transaction.atomic
|
||||
|
43
InvenTree/company/migrations/0006_auto_20190508_2332.py
Normal file
43
InvenTree/company/migrations/0006_auto_20190508_2332.py
Normal file
@ -0,0 +1,43 @@
|
||||
# Generated by Django 2.2 on 2019-05-08 13:32
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('company', '0005_contact'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='company',
|
||||
name='contact',
|
||||
field=models.CharField(blank=True, help_text='Point of contact', max_length=100),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='company',
|
||||
name='description',
|
||||
field=models.CharField(help_text='Description of the company', max_length=500),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='company',
|
||||
name='email',
|
||||
field=models.EmailField(blank=True, help_text='Contact email address', max_length=254),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='company',
|
||||
name='is_customer',
|
||||
field=models.BooleanField(default=False, help_text='Do you sell items to this company?'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='company',
|
||||
name='is_supplier',
|
||||
field=models.BooleanField(default=True, help_text='Do you purchase items from this company?'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='company',
|
||||
name='phone',
|
||||
field=models.CharField(blank=True, help_text='Contact phone number', max_length=50),
|
||||
),
|
||||
]
|
@ -46,7 +46,7 @@ class Company(models.Model):
|
||||
name = models.CharField(max_length=100, blank=False, unique=True,
|
||||
help_text='Company name')
|
||||
|
||||
description = models.CharField(max_length=500)
|
||||
description = models.CharField(max_length=500, help_text='Description of the company')
|
||||
|
||||
website = models.URLField(blank=True, help_text='Company website URL')
|
||||
|
||||
@ -54,12 +54,12 @@ class Company(models.Model):
|
||||
blank=True, help_text='Company address')
|
||||
|
||||
phone = models.CharField(max_length=50,
|
||||
blank=True)
|
||||
blank=True, help_text='Contact phone number')
|
||||
|
||||
email = models.EmailField(blank=True)
|
||||
email = models.EmailField(blank=True, help_text='Contact email address')
|
||||
|
||||
contact = models.CharField(max_length=100,
|
||||
blank=True)
|
||||
blank=True, help_text='Point of contact')
|
||||
|
||||
URL = models.URLField(blank=True, help_text='Link to external company information')
|
||||
|
||||
@ -67,9 +67,9 @@ class Company(models.Model):
|
||||
|
||||
notes = models.TextField(blank=True)
|
||||
|
||||
is_customer = models.BooleanField(default=False)
|
||||
is_customer = models.BooleanField(default=False, help_text='Do you sell items to this company?')
|
||||
|
||||
is_supplier = models.BooleanField(default=True)
|
||||
is_supplier = models.BooleanField(default=True, help_text='Do you purchase items from this company?')
|
||||
|
||||
def __str__(self):
|
||||
""" Get string representation of a Company """
|
||||
|
35
InvenTree/part/migrations/0019_auto_20190508_2332.py
Normal file
35
InvenTree/part/migrations/0019_auto_20190508_2332.py
Normal file
@ -0,0 +1,35 @@
|
||||
# Generated by Django 2.2 on 2019-05-08 13:32
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import part.models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('part', '0018_auto_20190505_2231'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='part',
|
||||
name='units',
|
||||
field=models.CharField(blank=True, default='pcs', help_text='Stock keeping units for this part', max_length=20),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='partattachment',
|
||||
name='attachment',
|
||||
field=models.FileField(blank=True, help_text='Select file to attach', null=True, upload_to=part.models.attach_file),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='supplierpart',
|
||||
name='part',
|
||||
field=models.ForeignKey(help_text='Select part', limit_choices_to={'purchaseable': True}, on_delete=django.db.models.deletion.CASCADE, related_name='supplier_parts', to='part.Part'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='supplierpart',
|
||||
name='supplier',
|
||||
field=models.ForeignKey(help_text='Select supplier', limit_choices_to={'is_supplier': True}, on_delete=django.db.models.deletion.CASCADE, related_name='parts', to='company.Company'),
|
||||
),
|
||||
]
|
@ -193,7 +193,7 @@ class Part(models.Model):
|
||||
minimum_stock = models.PositiveIntegerField(default=0, validators=[MinValueValidator(0)], help_text='Minimum allowed stock level')
|
||||
|
||||
# Units of quantity for this part. Default is "pcs"
|
||||
units = models.CharField(max_length=20, default="pcs", blank=True)
|
||||
units = models.CharField(max_length=20, default="pcs", blank=True, help_text='Stock keeping units for this part')
|
||||
|
||||
# Can this part be built from other parts?
|
||||
buildable = models.BooleanField(default=False, help_text='Can this part be built from other parts?')
|
||||
@ -438,7 +438,8 @@ class PartAttachment(models.Model):
|
||||
part = models.ForeignKey(Part, on_delete=models.CASCADE,
|
||||
related_name='attachments')
|
||||
|
||||
attachment = models.FileField(upload_to=attach_file, null=True, blank=True)
|
||||
attachment = models.FileField(upload_to=attach_file, null=True, blank=True,
|
||||
help_text='Select file to attach')
|
||||
|
||||
comment = models.CharField(max_length=100, blank=True, help_text='File comment')
|
||||
|
||||
@ -543,11 +544,13 @@ class SupplierPart(models.Model):
|
||||
part = models.ForeignKey(Part, on_delete=models.CASCADE,
|
||||
related_name='supplier_parts',
|
||||
limit_choices_to={'purchaseable': True},
|
||||
help_text='Select part',
|
||||
)
|
||||
|
||||
supplier = models.ForeignKey(Company, on_delete=models.CASCADE,
|
||||
related_name='parts',
|
||||
limit_choices_to={'is_supplier': True}
|
||||
limit_choices_to={'is_supplier': True},
|
||||
help_text='Select supplier',
|
||||
)
|
||||
|
||||
SKU = models.CharField(max_length=100, help_text='Supplier stock keeping unit')
|
||||
@ -639,10 +642,15 @@ class SupplierPart(models.Model):
|
||||
return cost + self.base_cost
|
||||
|
||||
def __str__(self):
|
||||
return "{supplier} ({sku})".format(
|
||||
s = "{supplier} ({sku})".format(
|
||||
sku=self.SKU,
|
||||
supplier=self.supplier.name)
|
||||
|
||||
if self.manufacturer_string:
|
||||
s = s + ' - ' + self.manufacturer_string
|
||||
|
||||
return s
|
||||
|
||||
|
||||
class SupplierPriceBreak(models.Model):
|
||||
""" Represents a quantity price break for a SupplierPart
|
||||
|
19
InvenTree/stock/migrations/0014_auto_20190508_2332.py
Normal file
19
InvenTree/stock/migrations/0014_auto_20190508_2332.py
Normal file
@ -0,0 +1,19 @@
|
||||
# Generated by Django 2.2 on 2019-05-08 13:32
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('stock', '0013_remove_stockitem_uuid'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='stockitem',
|
||||
name='supplier_part',
|
||||
field=models.ForeignKey(blank=True, help_text='Select a matching supplier part for this stock item', null=True, on_delete=django.db.models.deletion.SET_NULL, to='part.SupplierPart'),
|
||||
),
|
||||
]
|
@ -163,7 +163,8 @@ class StockItem(models.Model):
|
||||
part = models.ForeignKey('part.Part', on_delete=models.CASCADE, related_name='locations', help_text='Base part')
|
||||
|
||||
# The 'supplier part' used in this instance. May be null if no supplier parts are defined the master part
|
||||
supplier_part = models.ForeignKey('part.SupplierPart', blank=True, null=True, on_delete=models.SET_NULL)
|
||||
supplier_part = models.ForeignKey('part.SupplierPart', blank=True, null=True, on_delete=models.SET_NULL,
|
||||
help_text='Select a matching supplier part for this stock item')
|
||||
|
||||
# Where the part is stored. If the part has been used to build another stock item, the location may not make sense
|
||||
location = models.ForeignKey(StockLocation, on_delete=models.DO_NOTHING,
|
||||
|
@ -207,6 +207,14 @@ class StockItemCreate(AjaxCreateView):
|
||||
parts = form.fields['supplier_part'].queryset
|
||||
parts = parts.filter(part=part.id)
|
||||
form.fields['supplier_part'].queryset = parts
|
||||
|
||||
# If there is one (and only one) supplier part available, pre-select it
|
||||
all_parts = parts.all()
|
||||
if len(all_parts) == 1:
|
||||
|
||||
# TODO - This does NOT work for some reason? Ref build.views.BuildItemCreate
|
||||
form.fields['supplier_part'].initial = all_parts[0].id
|
||||
|
||||
except Part.DoesNotExist:
|
||||
pass
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user