mirror of
https://expo.survex.com/repositories/troggle/.git
synced 2025-12-16 17:47:07 +00:00
finds case-insensitive scan file filenames and suppresses old error messages
This commit is contained in:
@@ -7,6 +7,7 @@ import settings
|
||||
from troggle.core.models.survex import DrawingFile, SingleScan
|
||||
from troggle.core.models.troggle import DataIssue
|
||||
from troggle.core.models.wallets import Wallet
|
||||
from troggle.core.utils import current_expo
|
||||
|
||||
"""Searches through all the :drawings: repository looking
|
||||
for tunnel and therion files
|
||||
@@ -272,6 +273,8 @@ def _handle_obsolete_wallets(old_wallet, dwgfile, scanfilename, parser_label):
|
||||
DataIssue.objects.update_or_create(parser=parser_label, message=message, url=f"/dwgdataraw/{dwgfile}")
|
||||
return False
|
||||
|
||||
def is_recent(walletname):
|
||||
return walletname[:4] == current_expo() or walletname[:4] == str(int(current_expo()) - 1)
|
||||
|
||||
def _process_reference(dwgfile, path, parser_label="Tunnel"):
|
||||
"""Unified processor to link drawing files to wallets/scans or referenced drawings.
|
||||
@@ -300,25 +303,42 @@ def _process_reference(dwgfile, path, parser_label="Tunnel"):
|
||||
wallet = _handle_obsolete_wallets(walletname,dwgfile, scanfilename, parser_label)
|
||||
|
||||
if wallet:
|
||||
scansfilel = wallet.singlescan_set.filter(name=scanfilename) # file name
|
||||
if len(scansfilel):
|
||||
if len(scansfilel) > 1:
|
||||
plist = [sf.ffile for sf in scansfilel]
|
||||
message = f"! More than one image FILENAME matches filter query. [{scansfilel[0]}]: {walletname} {scanfilename} {dwgfile.dwgpath} {path} {plist}"
|
||||
scan_count = wallet.singlescan_set.filter(name=scanfilename).count() # file name
|
||||
if scan_count == 0:
|
||||
iscan_count = wallet.singlescan_set.filter(name__iexact=scanfilename).count() # __iexact means case-insensitive
|
||||
if iscan_count == 1:
|
||||
if is_recent(walletname):
|
||||
scansfile = wallet.singlescan_set.get(name__iexact=scanfilename)
|
||||
message = f" - Case mismatch {walletname} '{scanfilename}' != '{scansfile.name}' in '{dwgfile.dwgpath}'"
|
||||
print(message)
|
||||
DataIssue.objects.update_or_create(parser=parser_label, message=message)
|
||||
|
||||
else:
|
||||
if scan_count == 1:
|
||||
scansfile = wallet.singlescan_set.get(name=scanfilename)
|
||||
else:
|
||||
scan_files = wallet.singlescan_set.filter(name=scanfilename)
|
||||
scansfile = scan_files[0]
|
||||
plist = [sf.ffile for sf in scan_files]
|
||||
message = f"! More than one image FILENAME matches filter query. {walletname} {scanfilename} {dwgfile.dwgpath} {path} {plist}"
|
||||
print(message)
|
||||
DataIssue.objects.update_or_create(parser=parser_label, message=message)
|
||||
scansfile = scansfilel[0]
|
||||
|
||||
|
||||
|
||||
|
||||
if wallet:
|
||||
dwgfile.dwgwallets.add(wallet)
|
||||
if scansfile:
|
||||
dwgfile.scans.add(scansfile)
|
||||
# If a wallet was found but no scan was associated from the wallet, record a DataIssue. There are a lot of these..
|
||||
# If a wallet was found but no scan was associated from the wallet, record a DataIssue.
|
||||
# There are a lot of these, so only do it for the current year
|
||||
if wallet and not scansfile:
|
||||
scanfilename = Path(path).name
|
||||
message = f"! In '{wallet.walletname}' scanned file is not actually found '{scanfilename}' in '{path}'"
|
||||
wurl = f"/survey_scans/{wallet.walletname}/".replace("#", ":")
|
||||
DataIssue.objects.update_or_create(parser="z_"+parser_label, message=message, url=wurl)
|
||||
if is_recent(walletname):
|
||||
scanfilename = Path(path).name
|
||||
message = f"! In '{wallet.walletname}' scanned file is not actually found '{scanfilename}' in '{path}'"
|
||||
wurl = f"/survey_scans/{wallet.walletname}/".replace("#", ":")
|
||||
DataIssue.objects.update_or_create(parser="z_"+parser_label, message=message, url=wurl)
|
||||
return wallet, scansfile
|
||||
|
||||
# Not a wallet reference; check image extension and possibly drawing-to-drawing reference
|
||||
|
||||
Reference in New Issue
Block a user