mirror of
https://github.com/inventree/InvenTree.git
synced 2025-07-01 03:00:54 +00:00
Improved Owner.get_owner method and fixed tests (try#2)
This commit is contained in:
@ -323,11 +323,9 @@ class StockOwnershipTest(StockViewTestCase):
|
||||
self.assertEqual(location.owner, user_group_owner)
|
||||
|
||||
# Test item edit
|
||||
# response = self.client.post(reverse('stock-item-edit', args=(test_item_id,)),
|
||||
# {'part': 1, 'status': StockStatus.OK, 'owner': new_user_as_owner.pk},
|
||||
# HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
||||
# print(response.content)
|
||||
# self.assertContains(response, '"form_valid": false', status_code=200)
|
||||
response = self.client.post(reverse('stock-item-edit', args=(test_item_id,)),
|
||||
{'part': 1, 'status': StockStatus.OK, 'owner': new_user_as_owner.pk},
|
||||
HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
||||
|
||||
# Make sure the item's owner is unchanged
|
||||
item = StockItem.objects.get(pk=test_item_id)
|
||||
@ -384,18 +382,19 @@ class StockOwnershipTest(StockViewTestCase):
|
||||
}
|
||||
|
||||
# Try to create new item with no owner
|
||||
# response = self.client.post(reverse('stock-item-create'),
|
||||
# new_item, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
||||
# self.assertContains(response, '"form_valid": false', status_code=200)
|
||||
response = self.client.post(reverse('stock-item-create'),
|
||||
new_item, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
||||
# print(response.content)
|
||||
self.assertContains(response, '"form_valid": false', status_code=200)
|
||||
|
||||
# Try to create new item with invalid owner
|
||||
# new_item['owner'] = user_as_owner
|
||||
# response = self.client.post(reverse('stock-item-create'),
|
||||
# new_item, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
||||
# self.assertContains(response, '"form_valid": false', status_code=200)
|
||||
new_item['owner'] = user_as_owner.pk
|
||||
response = self.client.post(reverse('stock-item-create'),
|
||||
new_item, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
||||
self.assertContains(response, '"form_valid": false', status_code=200)
|
||||
|
||||
# Try to create new item with valid owner
|
||||
new_item['owner'] = new_user_as_owner
|
||||
new_item['owner'] = new_user_as_owner.pk
|
||||
response = self.client.post(reverse('stock-item-create'),
|
||||
new_item, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
||||
self.assertContains(response, '"form_valid": true', status_code=200)
|
||||
|
@ -37,6 +37,7 @@ from .models import StockItem, StockLocation, StockItemTracking, StockItemAttach
|
||||
|
||||
import common.settings
|
||||
from common.models import InvenTreeSetting
|
||||
from users.models import Owner
|
||||
|
||||
from .admin import StockItemResource
|
||||
|
||||
@ -166,7 +167,7 @@ class StockLocationEdit(AjaxUpdateView):
|
||||
|
||||
stock_ownership_control = InvenTreeSetting.get_setting('STOCK_OWNERSHIP_CONTROL')
|
||||
if stock_ownership_control:
|
||||
authorized_owners = self.object.owner.get_users()
|
||||
authorized_owners = self.object.owner.get_related_owners()
|
||||
|
||||
# Update children locations
|
||||
children_locations = self.object.get_children()
|
||||
@ -1427,9 +1428,10 @@ class StockItemEdit(AjaxUpdateView):
|
||||
|
||||
# Check location owner type and filter
|
||||
if type(location_owner.owner) is Group:
|
||||
queryset = location_owner.get_users(include_group=True)
|
||||
if self.request.user in queryset:
|
||||
form.fields['owner'].initial = self.request.user
|
||||
user_as_owner = Owner.get_owner(self.request.user)
|
||||
queryset = location_owner.get_related_owners(include_group=True)
|
||||
if user_as_owner in queryset:
|
||||
form.fields['owner'].initial = user_as_owner
|
||||
form.fields['owner'].queryset = queryset
|
||||
elif type(location_owner.owner) is User:
|
||||
form.fields['owner'].disabled = True
|
||||
@ -1446,9 +1448,10 @@ class StockItemEdit(AjaxUpdateView):
|
||||
|
||||
# Check location owner type and filter
|
||||
if type(item_owner.owner) is Group:
|
||||
queryset = item_owner.get_users(include_group=True)
|
||||
if self.request.user in queryset:
|
||||
form.fields['owner'].initial = self.request.user
|
||||
user_as_owner = Owner.get_owner(self.request.user)
|
||||
queryset = item_owner.get_related_owners(include_group=True)
|
||||
if user_as_owner in queryset:
|
||||
form.fields['owner'].initial = user_as_owner
|
||||
form.fields['owner'].queryset = queryset
|
||||
elif type(item_owner.owner) is User:
|
||||
form.fields['owner'].disabled = True
|
||||
@ -1727,6 +1730,8 @@ class StockItemCreate(AjaxCreateView):
|
||||
ForeignKey choices based on other selections
|
||||
"""
|
||||
|
||||
print('------------ FORM ------------------')
|
||||
|
||||
form = super().get_form()
|
||||
|
||||
# Hide the "expiry date" field if the feature is not enabled
|
||||
@ -1797,17 +1802,25 @@ class StockItemCreate(AjaxCreateView):
|
||||
if not stock_ownership_control:
|
||||
form.fields['owner'].widget = HiddenInput()
|
||||
else:
|
||||
print('> Stock ownership is enabled')
|
||||
try:
|
||||
location_owner = location.owner
|
||||
except AttributeError:
|
||||
location_owner = None
|
||||
|
||||
print(f'{location_owner=}')
|
||||
|
||||
if location_owner:
|
||||
# Check location owner type and filter
|
||||
if type(location_owner.owner) is Group:
|
||||
queryset = location_owner.get_users()
|
||||
if self.request.user in queryset:
|
||||
form.fields['owner'].initial = self.request.user
|
||||
print(f'{self.request.user=}')
|
||||
user_as_owner = Owner.get_owner(self.request.user)
|
||||
print(f'{user_as_owner=}')
|
||||
queryset = location_owner.get_related_owners()
|
||||
print(f'{queryset=}')
|
||||
|
||||
if user_as_owner in queryset:
|
||||
form.fields['owner'].initial = user_as_owner
|
||||
form.fields['owner'].queryset = queryset
|
||||
elif type(location_owner.owner) is User:
|
||||
form.fields['owner'].disabled = True
|
||||
|
Reference in New Issue
Block a user