Generate a list of allowed BOM items and pass to the form template

This commit is contained in:
Oliver Walters 2019-07-07 11:22:01 +10:00
parent 3930651c59
commit bd30ac037b
3 changed files with 24 additions and 0 deletions

View File

@ -678,6 +678,18 @@ class Part(models.Model):
parts.append(bom.sub_part) parts.append(bom.sub_part)
return parts return parts
def get_allowed_bom_items(self):
""" Return a list of parts which can be added to a BOM for this part.
- Exclude parts which are not 'component' parts
- Exclude parts which this part is in the BOM for
"""
parts = Part.objects.filter(component=True)
parts = parts.exclude(id__in=[part.id for part in self.used_in.all()])
return parts
@property @property
def supplier_count(self): def supplier_count(self):
""" Return the number of supplier parts available for this part """ """ Return the number of supplier parts available for this part """

View File

@ -49,6 +49,9 @@
{% if item.column.guess == 'Part' %} {% if item.column.guess == 'Part' %}
<select class='select' id='id_part_{{ row.index }}' name='part_select_{{ row.index }}'> <select class='select' id='id_part_{{ row.index }}' name='part_select_{{ row.index }}'>
<option value=''>---------</option> <option value=''>---------</option>
{% for part in allowed_parts_list %}
<option value='{{ part.id }}'>{{ part.full_name }} - {{ part.description }}</option>
{% endfor %}
</select> </select>
<br> <br>
{{ item.cell }} {{ item.cell }}

View File

@ -654,6 +654,7 @@ class BomUpload(FormView):
bom_columns = [] bom_columns = []
bom_rows = [] bom_rows = []
missing_columns = [] missing_columns = []
allowed_parts = []
def get_success_url(self): def get_success_url(self):
@ -703,9 +704,16 @@ class BomUpload(FormView):
ctx['bom_columns'] = self.bom_columns ctx['bom_columns'] = self.bom_columns
ctx['bom_rows'] = rows ctx['bom_rows'] = rows
ctx['missing_columns'] = self.missing_columns ctx['missing_columns'] = self.missing_columns
ctx['allowed_parts_list'] = self.allowed_parts
return ctx return ctx
def getAllowedParts(self):
""" Return a queryset of parts which are allowed to be added to this BOM.
"""
return self.part.get_allowed_bom_items()
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
""" Perform the initial 'GET' request. """ Perform the initial 'GET' request.
@ -915,6 +923,7 @@ class BomUpload(FormView):
self.request = request self.request = request
self.part = get_object_or_404(Part, pk=self.kwargs['pk']) self.part = get_object_or_404(Part, pk=self.kwargs['pk'])
self.allowed_parts = self.getAllowedParts()
self.form = self.get_form(self.get_form_class()) self.form = self.get_form(self.get_form_class())
# Did the user POST a file named bom_file? # Did the user POST a file named bom_file?