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:
@ -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()
|
||||
|
@ -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 }}
|
||||
|
@ -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']}))
|
||||
|
||||
|
Reference in New Issue
Block a user