1414from django .db .models .functions import TruncDay
1515from django .contrib .auth .models import User
1616from django .contrib .sessions .models import Session
17+ from django .http import HttpResponse , Http404
1718
1819from .models import Section , Space , Item , PrintQueue , PrintQueueItem , SearchEntry , Student , CheckoutLog , CheckInLog , ItemLog , UserProfile
1920from .forms import SectionForm , SpaceForm , ItemForm , StudentForm , StockAdjustmentForm , UserUpdateForm , UserRoleForm
@@ -47,8 +48,8 @@ def signup(request):
4748
4849def universal_lookup (request ):
4950 """
50- Receives a scanned code and redirects to the appropriate
51- Item, Space, or Section detail page .
51+ Receives a scanned code and redirects to the appropriate detail page.
52+ Handles multiple barcode formats and shows a user-friendly error if not found .
5253 """
5354 code = request .GET .get ('code' , '' ).strip ()
5455
@@ -57,11 +58,12 @@ def universal_lookup(request):
5758 return redirect ('homepage' )
5859
5960 try :
60- if code .isdigit () and len (code ) >= 12 :
61- item = Item .objects .get (barcode = code [:12 ])
62- messages .success (request , f"Found Item: { item .name } " )
63- return redirect (item .get_absolute_url ())
6461
62+ if code .isdigit () and len (code ) == 13 :
63+ item = Item .objects .get (barcode = code )
64+ messages .success (request , f"Scan successful: Found item '{ item .name } '." )
65+ return redirect (item .get_absolute_url ())
66+
6567 if code .startswith ('SHERLOCK;' ):
6668 parts = code .split (';' )
6769 section_code_str = next ((p .split (':' )[1 ] for p in parts if p .startswith ('SECTIONCODE:' )), None )
@@ -71,19 +73,20 @@ def universal_lookup(request):
7173 section_code = int (section_code_str )
7274 if space_code_str :
7375 space_code = int (space_code_str )
74- space = get_object_or_404 ( Space , section__section_code = section_code , space_code = space_code )
75- messages .success (request , f"Found Space: { space .name } " )
76+ space = Space . objects . get ( section__section_code = section_code , space_code = space_code )
77+ messages .success (request , f"Scan successful: Found space ' { space .name } '. " )
7678 return redirect (space .get_absolute_url ())
7779 else :
78- section = get_object_or_404 ( Section , section_code = section_code )
79- messages .success (request , f"Found Section: { section .name } " )
80+ section = Section . objects . get ( section_code = section_code )
81+ messages .success (request , f"Scan successful: Found section ' { section .name } '. " )
8082 return redirect (section .get_absolute_url ())
8183
82- messages .error (request , f"Could not find any Item, Section, or Space matching the code." )
83- return redirect ('homepage' )
8484
85- except (Item .DoesNotExist , Section .DoesNotExist , Space .DoesNotExist ):
86- messages .error (request , f"Could not find any Item, Section, or Space matching the code." )
85+ raise Item .DoesNotExist
86+
87+ except (Item .DoesNotExist , Section .DoesNotExist , Space .DoesNotExist , ValueError ):
88+
89+ messages .error (request , f"Could not find any item, section, or space matching the scanned code." )
8790 return redirect ('homepage' )
8891
8992@login_required
0 commit comments