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

Improved Owner.get_owner method and fixed tests (try#2)

This commit is contained in:
eeintech
2021-01-12 16:36:29 -05:00
parent 49c954aa68
commit 5ca03af3e2
4 changed files with 86 additions and 39 deletions

View File

@ -422,27 +422,62 @@ class Owner(models.Model):
except IntegrityError:
return None
return existing_owner
@classmethod
def get_owner(cls, user_or_group):
# Get corresponding owner
try:
group = Owner.objects.get(owner_id=user_or_group.id,
owner_type=ContentType.objects.get_for_model(Group).id)
return group
except Owner.DoesNotExist:
pass
owner = None
content_type_id = 0
content_type_id_list = [ContentType.objects.get_for_model(Group).id,
ContentType.objects.get_for_model(User).id]
try:
user = Owner.objects.get(owner_id=user_or_group.id,
owner_type=ContentType.objects.get_for_model(User).id)
return user
except Owner.DoesNotExist:
pass
# If instance type is obvious: set content type
if type(user_or_group) is Group:
content_type_id = content_type_id_list[0]
elif type(user_or_group) is User:
content_type_id = content_type_id_list[1]
return None
if content_type_id:
try:
owner = Owner.objects.get(owner_id=user_or_group.id,
owner_type=content_type_id)
except Owner.DoesNotExist:
pass
else:
# Check whether user_or_group is a Group instance
try:
group = Group.objects.get(pk=user_or_group.id)
except Group.DoesNotExist:
group = None
def get_users(self, include_group=False):
if group:
try:
owner = Owner.objects.get(owner_id=user_or_group.id,
owner_type=content_type_id_list[0])
except Owner.DoesNotExist:
pass
return owner
# Check whether user_or_group is a User instance
try:
user = User.objects.get(pk=user_or_group.id)
except User.DoesNotExist:
user = None
if user:
try:
owner = Owner.objects.get(owner_id=user_or_group.id,
owner_type=content_type_id_list[1])
except Owner.DoesNotExist:
pass
return owner
return owner
def get_related_owners(self, include_group=False):
owner_users = None