mirror of
https://expo.survex.com/repositories/troggle/.git
synced 2024-11-22 07:11:52 +00:00
more fixing bad *ref and null dates on blocks
This commit is contained in:
parent
87d9804864
commit
7672de2dd1
@ -265,7 +265,7 @@ class LoadingSurvex:
|
||||
rx_team = re.compile(r"(?i)team$")
|
||||
rx_set = re.compile(r"(?i)set$")
|
||||
|
||||
rx_names = re.compile(r"(?i)names")
|
||||
#rx_names = re.compile(r"(?i)names")
|
||||
rx_flagsnot = re.compile(r"not\s")
|
||||
rx_linelen = re.compile(r"[\d\-+.]+$")
|
||||
instruments = "(bitch|bodger|bolt|bolter|bolting|book|clino|comp|compass|consultant|disto|distox|distox2|dog|dogsbody|drawing|drill|gps|helper|inst|instr|instrument|monkey|nagging|nail|nail_polish|nail_polish_bitch|nail_polish_monkey|nail_varnish|nail_varnish_bitch|note|paint|photo|pic|point|polish|powerdrill|rig|rigger|rigging|shoot|sketch|slacker|something|tape|topodroid|unknown|useless|varnish|waiting_patiently)"
|
||||
@ -581,9 +581,27 @@ class LoadingSurvex:
|
||||
stash_data_issue(
|
||||
parser="survex", message=message, url=None, sb=(survexblock.survexfile.path)
|
||||
)
|
||||
|
||||
def LoadSurvexSet(self, survexblock, line):
|
||||
"""survex *set can reset the character for space, decinmal point, field separator
|
||||
and lots of other stuff which would stuff this parser completely. The '*set names ...' is
|
||||
innocuous, so we ignore that. All the others need swift attention."""
|
||||
item, *_ = line.strip().split(" ") # unpack tuples idiom in python 3
|
||||
if item.lower() == "names":
|
||||
# we don't care as we treat all chars as names anyway.
|
||||
# print(f"*set names - do not care: '{line}' {survexblock.survexfile.path}", file=sys.stderr)
|
||||
return
|
||||
else:
|
||||
message = (
|
||||
f"! SERIOUS Warning. Unparsed [*set]: '{line}' {survexblock.survexfile.path} "
|
||||
)
|
||||
print(self.insp + message)
|
||||
stash_data_issue(
|
||||
parser="survex", message=message, url=None, sb=(survexblock.survexfile.path)
|
||||
)
|
||||
|
||||
def LoadSurvexEntrance(self, survexblock, line):
|
||||
# Not using this yet
|
||||
# Not using this
|
||||
pass
|
||||
|
||||
def LoadSurvexAlias(self, survexblock, line):
|
||||
@ -1763,8 +1781,8 @@ class LoadingSurvex:
|
||||
self.LoadSurvexUnits(survexblock, args)
|
||||
elif self.rx_team.match(cmd):
|
||||
self.LoadSurvexTeam(survexblock, args)
|
||||
elif self.rx_set.match(cmd) and self.rx_names.match(cmd):
|
||||
pass
|
||||
elif self.rx_set.match(cmd): #and self.rx_names.match(cmd):
|
||||
self.LoadSurvexSet(survexblock, args)
|
||||
elif self.rx_include.match(cmd):
|
||||
message = f" ! -ERROR *include command not expected here {path}. Re-run a full Survex import."
|
||||
print(message)
|
||||
@ -2483,41 +2501,49 @@ def MakeFileRoot(svxpath):
|
||||
|
||||
return fileroot
|
||||
|
||||
def set_survexblocks(wallet):
|
||||
def set_survexblocks():
|
||||
"""Need to find the optimal Django way of doing this query.
|
||||
It's a mess now"""
|
||||
if svxfiles := wallet.survexfiles(): # reads from JSON, should be cached already
|
||||
for svx in svxfiles:
|
||||
if svx:
|
||||
if svx.endswith(".svx"):
|
||||
svx = svx.replace(".svx","")
|
||||
try:
|
||||
# there are survex files we ignore when troggle parses, and some of these are referred to in wallets
|
||||
sfile = SurvexFile.objects.get(path=svx) #.select_related("survexblocks")
|
||||
# print(sfile)
|
||||
except:
|
||||
continue
|
||||
blocks = SurvexBlock.objects.filter(survexfile=sfile)
|
||||
for b in blocks:
|
||||
try:
|
||||
if b.scanswallet == wallet:
|
||||
pass
|
||||
elif b.scanswallet:
|
||||
if b.date > date(2019, 1, 1) and b.date < date(2020, 1, 1):
|
||||
print(f"not set{wallet} on {b.survexfile} : {b} as already set to {b.scanswallet}")
|
||||
else:
|
||||
b.scanswallet = wallet
|
||||
b.save()
|
||||
if b.date > date(2019, 1, 1) and b.date < date(2020, 1, 1):
|
||||
print(f"setting {wallet} on {b.survexfile} : {b}")
|
||||
except:
|
||||
if not hasattr(b,"date"):
|
||||
print(f" Block {b} on {b.survexfile} HAS NO DATE SET ")
|
||||
elif not b.date:
|
||||
print(f" Block {b} on {b.survexfile} HAS NULL DATE ")
|
||||
else:
|
||||
print(f" exception {wallet} on {b.survexfile} : {b}")
|
||||
|
||||
|
||||
# for b in SurvexBlock.objects.all():
|
||||
# if not b.date:
|
||||
# print(f" Block {b} on {b.survexfile} HAS NULL DATE ")
|
||||
|
||||
cache = {}
|
||||
allsvx = SurvexFile.objects.all()
|
||||
for s in allsvx:
|
||||
if s.path:
|
||||
cache[s.path] = s
|
||||
|
||||
wallets = Wallet.objects.all()
|
||||
for wallet in wallets:
|
||||
|
||||
if svxfiles := wallet.survexfiles(): # reads from JSON, should be cached already
|
||||
for svx in svxfiles:
|
||||
if svx:
|
||||
if svx.endswith(".svx"):
|
||||
svx = svx.replace(".svx","")
|
||||
if svx in cache:
|
||||
sfile = cache[svx]
|
||||
# try:
|
||||
# # there are survex files we ignore when troggle parses, and some of these are referred to in wallets
|
||||
# sfile = SurvexFile.objects.get(path=svx) #.select_related("survexblocks")
|
||||
# # print(sfile)
|
||||
# except:
|
||||
# continue
|
||||
blocks = SurvexBlock.objects.filter(survexfile=sfile)
|
||||
for b in blocks:
|
||||
if b.date: # many are NULL
|
||||
if b.scanswallet == wallet:
|
||||
pass
|
||||
elif b.scanswallet:
|
||||
if b.date > date(2019, 1, 1) and b.date < date(2020, 1, 1):
|
||||
print(f"not set{wallet} on {b.survexfile} : {b} as already set to {b.scanswallet}")
|
||||
else:
|
||||
b.scanswallet = wallet
|
||||
b.save()
|
||||
if b.date > date(2019, 1, 1) and b.date < date(2020, 1, 1):
|
||||
print(f"setting {wallet} on {b.survexfile} : {b}")
|
||||
|
||||
def survexifywallets():
|
||||
"""Gets the caves from the list of survexblocks
|
||||
@ -2539,15 +2565,14 @@ def survexifywallets():
|
||||
print(f" - {duration:7.2f} s to add people to wallets ", file=sys.stderr)
|
||||
start = time.time()
|
||||
|
||||
wallets = Wallet.objects.all()
|
||||
for w in wallets:
|
||||
set_survexblocks(w) # reads JSON, sets survexblocks if survexfiles specified on wallet JSON
|
||||
|
||||
set_survexblocks() # reads JSON, sets survexblocks if survexfiles specified on wallet JSON
|
||||
|
||||
duration = time.time() - start
|
||||
print(f" - {duration:7.2f} s to set survexblock:wallet using JSON survexfiles ", file=sys.stderr)
|
||||
start = time.time()
|
||||
|
||||
for w in wallets:
|
||||
for w in Wallet.objects.all():
|
||||
blocks = SurvexBlock.objects.filter(scanswallet=w).select_related("survexfile")
|
||||
for b in blocks:
|
||||
if b.survexfile.cave:
|
||||
|
Loading…
Reference in New Issue
Block a user