mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Merge remote-tracking branch 'inventree/master'
This commit is contained in:
commit
2be99be4de
@ -4,7 +4,7 @@ Provides information on the current InvenTree version
|
|||||||
|
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
INVENTREE_SW_VERSION = "0.0.5"
|
INVENTREE_SW_VERSION = "0.0.6"
|
||||||
|
|
||||||
|
|
||||||
def inventreeVersion():
|
def inventreeVersion():
|
||||||
@ -15,7 +15,6 @@ def inventreeVersion():
|
|||||||
def inventreeCommitHash():
|
def inventreeCommitHash():
|
||||||
""" Returns the git commit hash for the running codebase """
|
""" Returns the git commit hash for the running codebase """
|
||||||
|
|
||||||
# TODO - This doesn't seem to work when running under gunicorn. Why is this?!
|
|
||||||
commit = str(subprocess.check_output('git rev-parse --short HEAD'.split()), 'utf-8').strip()
|
commit = str(subprocess.check_output('git rev-parse --short HEAD'.split()), 'utf-8').strip()
|
||||||
|
|
||||||
return commit
|
return commit
|
||||||
|
@ -1741,7 +1741,7 @@ class BomItemCreate(AjaxCreateView):
|
|||||||
|
|
||||||
form.fields['part'].widget = HiddenInput()
|
form.fields['part'].widget = HiddenInput()
|
||||||
|
|
||||||
except Part.DoesNotExist:
|
except (ValueError, Part.DoesNotExist):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
return form
|
return form
|
||||||
@ -1775,6 +1775,46 @@ class BomItemEdit(AjaxUpdateView):
|
|||||||
ajax_template_name = 'modal_form.html'
|
ajax_template_name = 'modal_form.html'
|
||||||
ajax_form_title = 'Edit BOM item'
|
ajax_form_title = 'Edit BOM item'
|
||||||
|
|
||||||
|
def get_form(self):
|
||||||
|
""" Override get_form() method to filter part selection options
|
||||||
|
|
||||||
|
- Do not allow part to be added to its own BOM
|
||||||
|
- Remove any part items that are already in the BOM
|
||||||
|
"""
|
||||||
|
|
||||||
|
form = super().get_form()
|
||||||
|
|
||||||
|
part_id = form['part'].value()
|
||||||
|
|
||||||
|
try:
|
||||||
|
part = Part.objects.get(pk=part_id)
|
||||||
|
|
||||||
|
query = form.fields['sub_part'].queryset
|
||||||
|
|
||||||
|
# Reduce the available selection options
|
||||||
|
query = query.exclude(pk=part_id)
|
||||||
|
|
||||||
|
# Eliminate any options that are already in the BOM,
|
||||||
|
# *except* for the item which is already selected
|
||||||
|
try:
|
||||||
|
sub_part_id = int(form['sub_part'].value())
|
||||||
|
except ValueError:
|
||||||
|
sub_part_id = -1
|
||||||
|
|
||||||
|
existing = [item.pk for item in part.required_parts()]
|
||||||
|
|
||||||
|
if sub_part_id in existing:
|
||||||
|
existing.remove(sub_part_id)
|
||||||
|
|
||||||
|
query = query.exclude(id__in=existing)
|
||||||
|
|
||||||
|
form.fields['sub_part'].queryset = query
|
||||||
|
|
||||||
|
except (ValueError, Part.DoesNotExist):
|
||||||
|
pass
|
||||||
|
|
||||||
|
return form
|
||||||
|
|
||||||
|
|
||||||
class BomItemDelete(AjaxDeleteView):
|
class BomItemDelete(AjaxDeleteView):
|
||||||
""" Delete view for removing BomItem """
|
""" Delete view for removing BomItem """
|
||||||
|
@ -70,7 +70,7 @@ Create an initial superuser (administrator) account for the InvenTree instance:
|
|||||||
Run Development Server
|
Run Development Server
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
Run ``python3 InvenTree/manage.py runserver 127.0.0.1:8000`` to launch a development server. This will launch the InvenTree web interface at ``127.0.0.1:8000``. For other options refer to the `django docs <https://docs.djangoproject.com/en/2.2/ref/django-admin/>`_.
|
Run ``cd InvenTree && python3 manage.py runserver 127.0.0.1:8000`` to launch a development server. This will launch the InvenTree web interface at ``127.0.0.1:8000``. For other options refer to the `django docs <https://docs.djangoproject.com/en/2.2/ref/django-admin/>`_.
|
||||||
|
|
||||||
Database Migrations
|
Database Migrations
|
||||||
-------------------
|
-------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user