2
0
mirror of https://expo.survex.com/repositories/troggle/.git synced 2025-12-18 14:17:15 +00:00

finds case-insensitive scan file filenames and suppresses old error messages

This commit is contained in:
2025-12-16 02:33:53 +00:00
parent 542e9c778a
commit eefbdb59bb

View File

@@ -7,6 +7,7 @@ import settings
from troggle.core.models.survex import DrawingFile, SingleScan from troggle.core.models.survex import DrawingFile, SingleScan
from troggle.core.models.troggle import DataIssue from troggle.core.models.troggle import DataIssue
from troggle.core.models.wallets import Wallet from troggle.core.models.wallets import Wallet
from troggle.core.utils import current_expo
"""Searches through all the :drawings: repository looking """Searches through all the :drawings: repository looking
for tunnel and therion files 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}") DataIssue.objects.update_or_create(parser=parser_label, message=message, url=f"/dwgdataraw/{dwgfile}")
return False 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"): def _process_reference(dwgfile, path, parser_label="Tunnel"):
"""Unified processor to link drawing files to wallets/scans or referenced drawings. """Unified processor to link drawing files to wallets/scans or referenced drawings.
@@ -300,21 +303,38 @@ def _process_reference(dwgfile, path, parser_label="Tunnel"):
wallet = _handle_obsolete_wallets(walletname,dwgfile, scanfilename, parser_label) wallet = _handle_obsolete_wallets(walletname,dwgfile, scanfilename, parser_label)
if wallet: if wallet:
scansfilel = wallet.singlescan_set.filter(name=scanfilename) # file name scan_count = wallet.singlescan_set.filter(name=scanfilename).count() # file name
if len(scansfilel): if scan_count == 0:
if len(scansfilel) > 1: iscan_count = wallet.singlescan_set.filter(name__iexact=scanfilename).count() # __iexact means case-insensitive
plist = [sf.ffile for sf in scansfilel] if iscan_count == 1:
message = f"! More than one image FILENAME matches filter query. [{scansfilel[0]}]: {walletname} {scanfilename} {dwgfile.dwgpath} {path} {plist}" 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) print(message)
DataIssue.objects.update_or_create(parser=parser_label, message=message) DataIssue.objects.update_or_create(parser=parser_label, message=message)
scansfile = scansfilel[0]
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)
if wallet: if wallet:
dwgfile.dwgwallets.add(wallet) dwgfile.dwgwallets.add(wallet)
if scansfile: if scansfile:
dwgfile.scans.add(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: if wallet and not scansfile:
if is_recent(walletname):
scanfilename = Path(path).name scanfilename = Path(path).name
message = f"! In '{wallet.walletname}' scanned file is not actually found '{scanfilename}' in '{path}'" message = f"! In '{wallet.walletname}' scanned file is not actually found '{scanfilename}' in '{path}'"
wurl = f"/survey_scans/{wallet.walletname}/".replace("#", ":") wurl = f"/survey_scans/{wallet.walletname}/".replace("#", ":")