diff --git a/parsers/drawings.py b/parsers/drawings.py index 4b3e44d..1c5a1e8 100644 --- a/parsers/drawings.py +++ b/parsers/drawings.py @@ -29,7 +29,7 @@ def find_dwg_file(dwgfile, path): mscansdir = re.search(r"(\d\d\d\d#X?\d+\w?|1995-96kh|92-94Surveybookkh|1991surveybook|smkhs)/(.*?(?:png|jpg|pdf|jpeg|gif|txt))$", path) if mscansdir: scanswalletl = Wallet.objects.filter(walletname=mscansdir.group(1)) - # This should be chnaged to properly detect if a list of folders is returned and do something sensible, not just pick the first. + # This should be changed to properly detect if a list of folders is returned and do something sensible, not just pick the first. if len(scanswalletl): wallet = scanswalletl[0] if len(scanswalletl) > 1: @@ -70,10 +70,43 @@ def find_dwg_file(dwgfile, path): dwgfile.save() -def findimageinsert(therionfile, xth_me): +def findwalletimage(therionfile, foundpath): '''Tries to link the drawing file (Therion format) to the referenced image (scan) file ''' - pass + foundpath = foundpath.strip("{}") + mscansdir = re.search(r"(\d\d\d\d#\d+\w?|1995-96kh|92-94Surveybookkh|1991surveybook|smkhs)", foundpath) + if mscansdir: + scanswalletl = Wallet.objects.filter(walletname=mscansdir.group(1)) + # This should be changed to properly detect if a list of folders is returned and do something sensible, not just pick the first. + if len(scanswalletl): + wallet = scanswalletl[0] + if len(scanswalletl) > 1: + message = "! More than one scan FOLDER matches filter query. [{}]: {} {} {}".format(therionfile, mscansdir.group(1), foundpath) + print(message) + DataIssue.objects.create(parser='Therion', message=message) + if wallet: + therionfile.dwgwallets.add(wallet) + + scanfilename = Path(foundpath).name + scansfilel = wallet.singlescan_set.filter(name=scanfilename, wallet=wallet) + if len(scansfilel): + # message = f'! {len(scansfilel)} {scansfilel} = {scanfilename} found in the wallet specified {wallet.walletname}' + # print(message) + if len(scansfilel) > 1: + plist =[] + for sf in scansfilel: + plist.append(sf.ffile) + message = "! More than one image FILENAME matches filter query. [{}]: {} {} {} {} {}".format(scansfilel[0], mscansdir.group(1), mscansdir.group(2), dwgfile.dwgpath, path, plist) + print(message) + DataIssue.objects.create(parser='Therion', message=message) + scansfile = scansfilel[0] + therionfile.scans.add(scansfile) + else: + message = f'! Scanned file {scanfilename} mentioned in "{therionfile.dwgpath}" is not actually found in {wallet.walletname}' + wurl = f'/survey_scans/{wallet.walletname}/'.replace("#",":") + print(message) + DataIssue.objects.create(parser='Therion', message=message, url = wurl) + def findimportinsert(therionfile, imp): '''Tries to link the scrap (Therion format) to the referenced therion scrap @@ -120,10 +153,12 @@ def settherionfileinfo(filetuple): message = f'! Un-parsed image filename: {therionfile.dwgname} : {xth_me.split()[-3]} - {therionfile.dwgpath}' # print(message) # DataIssue.objects.create(parser='xTherion', message=message, url=f'/dwgdataraw/{therionfile.dwgpath}') + # ! Un-parsed image filename: 107coldest : ../../../expofiles/surveyscans/2015/2015#20/notes.jpg - therion/plan/107coldest.th2 + with open('therionrefs.log', 'a') as lg: lg.write(message + '\n') - findimageinsert(therionfile, xth_me) + findwalletimage(therionfile, xth_me.split()[-3]) for inp in rx_input.findall(ttext): # if this 'input' is a .th2 file we have already seen, then we can assign this as a sub-file diff --git a/parsers/scans.py b/parsers/scans.py index 28d0325..6439549 100644 --- a/parsers/scans.py +++ b/parsers/scans.py @@ -93,7 +93,7 @@ def LoadListScansFile(wallet): c=0 for (fyf, ffyf, fisdiryf) in gld: - if re.search(r"\.(?:png|jpg|jpeg|pdf|svg|gif)(?i)$", fyf): + if re.search(r"\.(?:png|jpg|jpeg|pdf|svg|gif|xvi)(?i)$", fyf): singlescan = SingleScan(ffile=ffyf, name=fyf, wallet=wallet) singlescan.save() c+=1