summaryrefslogtreecommitdiffstats
path: root/parsers/drawings.py
diff options
context:
space:
mode:
Diffstat (limited to 'parsers/drawings.py')
-rw-r--r--parsers/drawings.py94
1 files changed, 3 insertions, 91 deletions
diff --git a/parsers/drawings.py b/parsers/drawings.py
index a313a83..f3aca47 100644
--- a/parsers/drawings.py
+++ b/parsers/drawings.py
@@ -13,14 +13,14 @@ from functools import reduce
import settings
from troggle.core.models.survex import SingleScan, Wallet, DrawingFile
from troggle.core.models.troggle import DataIssue
-from troggle.core.utils import save_carefully
+from troggle.core.utils import save_carefully, GetListDir
'''Searches through all the :drawings: repository looking
for tunnel and therion files
-
-Searches through all the survey scans directories in expofiles, looking for images to be referenced.
'''
+todo='''
+'''
def get_or_create_placeholder(year):
""" All surveys must be related to a logbookentry. We don't have a way to
@@ -34,94 +34,6 @@ def get_or_create_placeholder(year):
placeholder_logbook_entry, newly_created = save_carefully(LogbookEntry, lookupAttribs, nonLookupAttribs)
return placeholder_logbook_entry
-def listdir(*directories):
- try:
- return os.listdir(os.path.join(settings.SURVEYS, *directories))
- except:
- import urllib.request, urllib.parse, urllib.error
- url = settings.SURVEYS + reduce(lambda x, y: x + "/" + y, ["listdir"] + list(directories))
- folders = urllib.request.urlopen(url.replace("#", "%23")).readlines()
- return [folder.rstrip(r"/") for folder in folders]
-
-
-# handles url or file, so we can refer to a set of scans (not drawings) on another server
-def GetListDir(sdir):
- res = [ ]
- if sdir[:7] == "http://":
- # s = urllib.request.urlopen(sdir)
- message = f"! Requesting loading from http:// NOT IMPLEMENTED. [{sdir}]"
- print(message)
- DataIssue.objects.create(parser='Drawings', message=message)
- sdir[:7] = ""
-
- for f in os.listdir(sdir):
- if f[0] != ".":
- ff = os.path.join(sdir, f)
- res.append((f, ff, os.path.isdir(ff)))
- return res
-
-
-def LoadListScansFile(wallet):
- gld = [ ]
- # flatten out any directories in these wallet folders - should not be any
- for (fyf, ffyf, fisdiryf) in GetListDir(wallet.fpath):
- if fisdiryf:
- gld.extend(GetListDir(ffyf))
- else:
- gld.append((fyf, ffyf, fisdiryf))
-
- c=0
- for (fyf, ffyf, fisdiryf) in gld:
- if re.search(r"\.(?:png|jpg|jpeg|pdf|svg|gif)(?i)$", fyf):
- singlescan = SingleScan(ffile=ffyf, name=fyf, wallet=wallet)
- singlescan.save()
- c+=1
- if c>=10:
- print(".", end='')
- c = 0
-
-
-# this iterates through the scans directories (either here or on the remote server)
-# and builds up the models we can access later
-def load_all_scans():
-
- print(' - Loading Survey Scans')
-
- SingleScan.objects.all().delete()
- Wallet.objects.all().delete()
- print(' - deleting all scansFolder and scansSingle objects')
-
- # first do the smkhs (large kh survey scans) directory
- manywallets_smkhs = Wallet(fpath=os.path.join(settings.SURVEY_SCANS, "../surveys/smkhs"), walletname="smkhs")
- print("smkhs", end=' ')
- if os.path.isdir(manywallets_smkhs.fpath):
- manywallets_smkhs.save()
- LoadListScansFile(manywallets_smkhs)
-
-
- # iterate into the surveyscans directory
- print(' - ', end=' ')
- for f, ff, fisdir in GetListDir(settings.SURVEY_SCANS):
- if not fisdir:
- continue
-
- # do the year folders
- if re.match(r"\d\d\d\d$", f):
- print("%s" % f, end=' ')
- for fy, ffy, fisdiry in GetListDir(ff):
- if fisdiry:
- wallet = Wallet(fpath=ffy, walletname=fy)
- wallet.save()
- LoadListScansFile(wallet)
-
- # do the
- elif f != "thumbs":
- wallet = Wallet(fpath=ff, walletname=f)
- wallet.save()
- LoadListScansFile(wallet)
-
- print("", flush=True)
-
def find_tunnel_file(dwgfile, path):
'''Is given a line of text 'path' which may or may not contain a recognisable name of a scanned file
which we have already seen when we imported all the files we could find in the surveyscans direstories