mirror of
https://expo.survex.com/repositories/troggle/.git
synced 2025-12-18 08:27:13 +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.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,25 +303,42 @@ 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)
|
||||||
|
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)
|
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]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
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:
|
||||||
scanfilename = Path(path).name
|
if is_recent(walletname):
|
||||||
message = f"! In '{wallet.walletname}' scanned file is not actually found '{scanfilename}' in '{path}'"
|
scanfilename = Path(path).name
|
||||||
wurl = f"/survey_scans/{wallet.walletname}/".replace("#", ":")
|
message = f"! In '{wallet.walletname}' scanned file is not actually found '{scanfilename}' in '{path}'"
|
||||||
DataIssue.objects.update_or_create(parser="z_"+parser_label, message=message, url=wurl)
|
wurl = f"/survey_scans/{wallet.walletname}/".replace("#", ":")
|
||||||
|
DataIssue.objects.update_or_create(parser="z_"+parser_label, message=message, url=wurl)
|
||||||
return wallet, scansfile
|
return wallet, scansfile
|
||||||
|
|
||||||
# Not a wallet reference; check image extension and possibly drawing-to-drawing reference
|
# Not a wallet reference; check image extension and possibly drawing-to-drawing reference
|
||||||
|
|||||||
Reference in New Issue
Block a user