mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-28 19:46:46 +00:00
Merge pull request #557 from SchrodingersGat/save-user-data
Save user data
This commit is contained in:
commit
d247ea7589
@ -238,6 +238,18 @@ class AjaxCreateView(AjaxMixin, CreateView):
|
|||||||
- Handles form validation via AJAX POST requests
|
- Handles form validation via AJAX POST requests
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
def pre_save(self, **kwargs):
|
||||||
|
"""
|
||||||
|
Hook for doing something before the form is validated
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def post_save(self, **kwargs):
|
||||||
|
"""
|
||||||
|
Hook for doing something with the created object after it is saved
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
""" Creates form with initial data, and renders JSON response """
|
""" Creates form with initial data, and renders JSON response """
|
||||||
|
|
||||||
@ -255,26 +267,29 @@ class AjaxCreateView(AjaxMixin, CreateView):
|
|||||||
- Return status info (success / failure)
|
- Return status info (success / failure)
|
||||||
"""
|
"""
|
||||||
self.request = request
|
self.request = request
|
||||||
form = self.get_form()
|
self.form = self.get_form()
|
||||||
|
|
||||||
# Extra JSON data sent alongside form
|
# Extra JSON data sent alongside form
|
||||||
data = {
|
data = {
|
||||||
'form_valid': form.is_valid(),
|
'form_valid': self.form.is_valid(),
|
||||||
}
|
}
|
||||||
|
|
||||||
if form.is_valid():
|
if self.form.is_valid():
|
||||||
obj = form.save()
|
|
||||||
|
self.pre_save()
|
||||||
|
self.object = self.form.save()
|
||||||
|
self.post_save()
|
||||||
|
|
||||||
# Return the PK of the newly-created object
|
# Return the PK of the newly-created object
|
||||||
data['pk'] = obj.pk
|
data['pk'] = self.object.pk
|
||||||
data['text'] = str(obj)
|
data['text'] = str(object)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
data['url'] = obj.get_absolute_url()
|
data['url'] = self.object.get_absolute_url()
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
return self.renderJsonResponse(request, form, data)
|
return self.renderJsonResponse(request, self.form, data)
|
||||||
|
|
||||||
|
|
||||||
class AjaxUpdateView(AjaxMixin, UpdateView):
|
class AjaxUpdateView(AjaxMixin, UpdateView):
|
||||||
|
@ -91,6 +91,12 @@ class PurchaseOrderCreate(AjaxCreateView):
|
|||||||
|
|
||||||
return initials
|
return initials
|
||||||
|
|
||||||
|
def post_save(self, **kwargs):
|
||||||
|
# Record the user who created this purchase order
|
||||||
|
|
||||||
|
self.object.created_by = self.request.user
|
||||||
|
self.object.save()
|
||||||
|
|
||||||
|
|
||||||
class PurchaseOrderEdit(AjaxUpdateView):
|
class PurchaseOrderEdit(AjaxUpdateView):
|
||||||
""" View for editing a PurchaseOrder using a modal form """
|
""" View for editing a PurchaseOrder using a modal form """
|
||||||
|
@ -129,13 +129,17 @@ class StockItem(models.Model):
|
|||||||
else:
|
else:
|
||||||
add_note = False
|
add_note = False
|
||||||
|
|
||||||
|
user = kwargs.pop('user', None)
|
||||||
|
|
||||||
|
add_note = add_note and kwargs.pop('note', True)
|
||||||
|
|
||||||
super(StockItem, self).save(*args, **kwargs)
|
super(StockItem, self).save(*args, **kwargs)
|
||||||
|
|
||||||
if add_note:
|
if add_note:
|
||||||
# This StockItem is being saved for the first time
|
# This StockItem is being saved for the first time
|
||||||
self.addTransactionNote(
|
self.addTransactionNote(
|
||||||
'Created stock item',
|
'Created stock item',
|
||||||
None,
|
user,
|
||||||
notes="Created new stock item for part '{p}'".format(p=str(self.part)),
|
notes="Created new stock item for part '{p}'".format(p=str(self.part)),
|
||||||
system=True
|
system=True
|
||||||
)
|
)
|
||||||
@ -466,7 +470,8 @@ class StockItem(models.Model):
|
|||||||
if location:
|
if location:
|
||||||
new_item.location = location
|
new_item.location = location
|
||||||
|
|
||||||
new_item.save()
|
# The item already has a transaction history, don't create a new note
|
||||||
|
new_item.save(user=user, note=False)
|
||||||
|
|
||||||
# Copy entire transaction history
|
# Copy entire transaction history
|
||||||
new_item.copyHistoryFrom(self)
|
new_item.copyHistoryFrom(self)
|
||||||
|
@ -792,6 +792,8 @@ class StockItemCreate(AjaxCreateView):
|
|||||||
|
|
||||||
form = self.get_form()
|
form = self.get_form()
|
||||||
|
|
||||||
|
data = {}
|
||||||
|
|
||||||
valid = form.is_valid()
|
valid = form.is_valid()
|
||||||
|
|
||||||
if valid:
|
if valid:
|
||||||
@ -850,7 +852,7 @@ class StockItemCreate(AjaxCreateView):
|
|||||||
URL=data.get('URL'),
|
URL=data.get('URL'),
|
||||||
)
|
)
|
||||||
|
|
||||||
item.save()
|
item.save(user=request.user)
|
||||||
|
|
||||||
except ValidationError as e:
|
except ValidationError as e:
|
||||||
form.errors['serial_numbers'] = e.messages
|
form.errors['serial_numbers'] = e.messages
|
||||||
@ -861,11 +863,15 @@ class StockItemCreate(AjaxCreateView):
|
|||||||
# We need to call _post_clean() here because it is prevented in the form implementation
|
# We need to call _post_clean() here because it is prevented in the form implementation
|
||||||
form.clean()
|
form.clean()
|
||||||
form._post_clean()
|
form._post_clean()
|
||||||
form.save()
|
|
||||||
|
|
||||||
data = {
|
item = form.save(commit=False)
|
||||||
'form_valid': valid,
|
item.save(user=request.user)
|
||||||
}
|
|
||||||
|
data['pk'] = item.pk
|
||||||
|
data['url'] = item.get_absolute_url()
|
||||||
|
data['success'] = _("Created new stock item")
|
||||||
|
|
||||||
|
data['form_valid'] = valid
|
||||||
|
|
||||||
return self.renderJsonResponse(request, form, data=data)
|
return self.renderJsonResponse(request, form, data=data)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user