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

Added upload file step

This commit is contained in:
eeintech
2021-05-04 12:20:57 -04:00
parent 373898d43e
commit 7cdf0af04a
6 changed files with 241 additions and 11 deletions

View File

@ -14,6 +14,8 @@ from InvenTree.forms import HelperForm
from InvenTree.fields import RoundingDecimalFormField
from InvenTree.fields import DatePickerFormField
from common.files import FileManager
import part.models
from stock.models import StockLocation
@ -287,15 +289,29 @@ class EditSalesOrderAllocationForm(HelperForm):
class UploadFile(forms.Form):
''' Step 1 '''
first_name = forms.CharField(max_length=100)
""" Step 1 """
file = forms.FileField(
label=_('Order File'),
help_text=_('Select order file to upload'),
)
file_manager = None
def clean_file(self):
file = self.cleaned_data['file']
# Create a FileManager object - will perform initial data validation
# (and raise a ValidationError if there is something wrong with the file)
self.file_manager = FileManager(file=file, name='order')
return file
class MatchField(forms.Form):
''' Step 2 '''
""" Step 2 """
last_name = forms.CharField(max_length=100)
class MatchPart(forms.Form):
''' Step 3 '''
age = forms.IntegerField()
""" Step 3 """
age = forms.IntegerField()

View File

@ -17,7 +17,7 @@
<p>{% trans "Step" %} {{ wizard.steps.step1 }} {% trans "of" %} {{ wizard.steps.count }}
{% if description %}- {{ description }}{% endif %}</p>
<form action="" method="post">{% csrf_token %}
<form action="" method="post" enctype="multipart/form-data">{% csrf_token %}
<table>
{% load crispy_forms_tags %}
{{ wizard.management_form }}

View File

@ -580,7 +580,7 @@ class PurchaseOrderUpload(MultiStepFormView):
_("Select Parts"),
]
template_name = "order/po_upload.html"
# file_storage = FileSystemStorage(location=os.path.join(settings.MEDIA_ROOT, 'file_uploads'))
media_folder = 'order_uploads/'
def get_context_data(self, form, **kwargs):
context = super().get_context_data(form=form, **kwargs)
@ -591,6 +591,24 @@ class PurchaseOrderUpload(MultiStepFormView):
return context
def get_form_step_data(self, form):
# print(f'{self.steps.current=}\n{form.data=}')
return form.data
def get_form_step_files(self, form):
# Check if user completed file upload
if self.steps.current == '0':
# Extract columns and rows from FileManager
self.extractDataFromFile(form.file_manager)
return form.files
def extractDataFromFile(self, file_manager):
""" Read data from the file """
self.columns = file_manager.columns()
self.rows = file_manager.rows()
def done(self, form_list, **kwargs):
return HttpResponseRedirect(reverse('po-detail', kwargs={'pk': self.kwargs['pk']}))