You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
from containers.models import Container
|
|
from preinfo.models import Preinfo
|
|
|
|
|
|
def filter_queryset_by_user(queryset, user):
|
|
"""
|
|
Filters the queryset based on the user's line or company.
|
|
If the user has a line, it filters by that line.
|
|
If the user has a company, it filters by all lines associated with that company.
|
|
"""
|
|
print(f'user: {user}, user company: {user.company}, user line: {user.line}')
|
|
if user.line:
|
|
filtered = queryset.filter(line=user.line)
|
|
print(f"Filtering by line: {user.line.id}, count: {filtered.count()}")
|
|
return filtered
|
|
elif user.company:
|
|
company_lines = user.company.line_company.all()
|
|
filtered = queryset.filter(line__in=company_lines)
|
|
print(f"Filtering by company: {user.company.id}, count: {filtered.count()}")
|
|
return filtered
|
|
return queryset
|
|
|
|
|
|
def get_preinfo_by_number(number):
|
|
"""
|
|
Retrieves a PreinfoModel instance by its container number.
|
|
Returns None if no matching PreinfoModel is found.
|
|
"""
|
|
try:
|
|
return Preinfo.objects.get(container_number=number, received=False)
|
|
except Preinfo.DoesNotExist:
|
|
return None
|
|
|
|
|
|
def get_container_by_number(number):
|
|
"""
|
|
Retrieves a Container instance by its number.
|
|
Returns None if no matching Container is found.
|
|
"""
|
|
try:
|
|
return Container.objects.get(number=number, expedited=False)
|
|
except Container.DoesNotExist:
|
|
return None |