forked from expo/troggle
Working on QMn TICK lines again
This commit is contained in:
parent
85fab88ac9
commit
c247636c4c
@ -104,7 +104,7 @@ survextemplatefile = """; *** THIS IS A TEMPLATE FILE NOT WHAT YOU MIGHT BE EXPE
|
|||||||
; QM doesn't go anywhere, set the resolution-station to be the same as the
|
; QM doesn't go anywhere, set the resolution-station to be the same as the
|
||||||
; nearest-station. Include any relevant details of how to find or push the QM in
|
; nearest-station. Include any relevant details of how to find or push the QM in
|
||||||
; the textual description.
|
; the textual description.
|
||||||
;Serial number grade(A/B/C/X) nearest-station resolution-station description
|
;Serial number grade(A/B/C/D/V/X) nearest-station resolution-station description
|
||||||
;[ QM1 A surveyname.3 - description of QM ]
|
;[ QM1 A surveyname.3 - description of QM ]
|
||||||
;[ QM2 B surveyname.5 - description of QM ]
|
;[ QM2 B surveyname.5 - description of QM ]
|
||||||
|
|
||||||
|
@ -254,7 +254,8 @@ class LoadingSurvex:
|
|||||||
rx_teamabs = re.compile(r"(?i)^\s*(" + instruments + ")?(?:es|s)?\s*$")
|
rx_teamabs = re.compile(r"(?i)^\s*(" + instruments + ")?(?:es|s)?\s*$")
|
||||||
rx_person = re.compile(r"(?i) and |/| / |, | , |&| & | \+ |^both$|^none$")
|
rx_person = re.compile(r"(?i) and |/| / |, | , |&| & | \+ |^both$|^none$")
|
||||||
rx_qm = re.compile(
|
rx_qm = re.compile(
|
||||||
r"(?i)^\s*QM(\d+)\s+(.+)\s+([\w\-\_]+)\.([\w\.\-]+)\s+(([\w\-]+)\.([\w\.\-]+)|\-)\s+(.+)$"
|
# r"(?i)^\s*QM(\d+)\s+(.+)\s+([\w\-\_]+)\.([\w\.\-]+)\s+(([\w\-]+)\.([\w\.\-]+)|\-)\s+(.+)$"
|
||||||
|
r"(?i)^\s*QM(\d+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+(.+)$"
|
||||||
)
|
)
|
||||||
# does not recognise non numeric suffix survey point ids
|
# does not recognise non numeric suffix survey point ids
|
||||||
rx_qm0 = re.compile(r"(?i)^\s*QM(\d+)\s+(.+)$")
|
rx_qm0 = re.compile(r"(?i)^\s*QM(\d+)\s+(.+)$")
|
||||||
@ -1272,54 +1273,73 @@ class LoadingSurvex:
|
|||||||
debugprint = False
|
debugprint = False
|
||||||
self.currentsurvexfile.save()
|
self.currentsurvexfile.save()
|
||||||
self.currentsurvexfile = self.stacksvxfiles.pop()
|
self.currentsurvexfile = self.stacksvxfiles.pop()
|
||||||
|
|
||||||
def TickSurvexQM(self, survexblock, qmtick):
|
def TickSurvexQM(self, survexblock, qmtick):
|
||||||
"""Interpret the specially formatted comment which is a QM TICKED statement"""
|
"""Interpret the specially formatted comment which is a QM TICKED statement"""
|
||||||
# Now we need to find the correct QM object. It will be in the same block and have the same number.
|
# Now we need to find the correct QM object. It will be in the same block and have the same number.
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
# could try to search on blockname instead?
|
||||||
|
# but the QMn TICK has to be in the same block anyway
|
||||||
qm = QM.objects.filter(block=survexblock, number=int(qmtick.group(1)))
|
qm = QM.objects.filter(block=survexblock, number=int(qmtick.group(1)))
|
||||||
except:
|
except:
|
||||||
# raise
|
# raise
|
||||||
message = f' ! QM TICK find FAIL QM{qmtick.group(1)} date:"{qmtick.group(2)}" qmlist:"{qm}" in "{survexblock.survexfile.path}" + comment:"{qmtick.group(3)}" '
|
message = f' ! QM TICK find FAIL QM{qmtick.group(1)} date:"{qmtick.group(2)}" qmlist:"{qm}" in "{survexblock.survexfile.path}" + completion_description:"{qmtick.group(3)}" '
|
||||||
print(message)
|
print(message)
|
||||||
stash_data_issue(
|
stash_data_issue(
|
||||||
parser="survex", message=message, url=None, sb=(survexblock.survexfile.path)
|
parser="survex", message=message, url=None, sb=(survexblock.survexfile.path)
|
||||||
)
|
)
|
||||||
if len(qm) > 1:
|
if len(qm) > 1:
|
||||||
message = f' ! QM TICK MULTIPLE found FAIL QM{qmtick.group(1)} date:"{qmtick.group(2)}" in "{survexblock.survexfile.path}" + comment:"{qmtick.group(3)}" '
|
message = f' ! QM TICK MULTIPLE found FAIL QM{qmtick.group(1)} date:"{qmtick.group(2)}" in "{survexblock.survexfile.path}" + completion_description:"{qmtick.group(3)}" '
|
||||||
print(message)
|
print(message)
|
||||||
stash_data_issue(
|
stash_data_issue(
|
||||||
parser="survex", message=message, url=None, sb=(survexblock.survexfile.path)
|
parser="survex", message=message, url=None, sb=(survexblock.survexfile.path)
|
||||||
)
|
)
|
||||||
qm[0].ticked = True
|
qm[0].ticked = True
|
||||||
|
# qm[0].ticked_date = qmtick.group(2) # not in data model yet
|
||||||
|
qm[0].completion_description = qmtick.group(3)
|
||||||
qm[0].save()
|
qm[0].save()
|
||||||
|
|
||||||
def LoadSurvexQM(self, survexblock, qmline):
|
def LoadSurvexQM(self, survexblock, qmline):
|
||||||
"""Interpret the specially formatted comment which is a QM definition"""
|
"""Interpret the specially formatted comment which is a QM definition"""
|
||||||
|
# r"(?i)^\s*QM(\d+)\s+(.+)\s+([\w\-\_]+)\.([\w\.\-]+)\s+(([\w\-]+)\.([\w\.\-]+)|\-)\s+(.+)$"
|
||||||
|
# r"(?i)^\s*QM(\d+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+(.+)$"
|
||||||
|
# rx_qm_tick QMnn TICK date comment
|
||||||
|
# (r"(?i)^\s*QM(\d+)\s+TICK\s([\d\-]+)\s(.*)$")
|
||||||
|
|
||||||
insp = self.insp
|
insp = self.insp
|
||||||
|
# create a short, hopefully-unique name for this block to be used in the QM id
|
||||||
|
blockname = survexblock.name[:6] + survexblock.name[-1:]
|
||||||
|
# logslug = f'D{int(qmyear)}_{blockname}_{int(qm_no):03d}'
|
||||||
|
|
||||||
qm_no = qmline.group(1) # this is NOT unique across multiple survex files
|
qm_no = qmline.group(1) # this is NOT unique across multiple survex files
|
||||||
|
qm_grade = qmline.group(2).strip().upper() # TICK or [a-dA-DvVxX?]
|
||||||
|
if qm_grade == "TICK":
|
||||||
|
self.TickSurvexQM(survexblock, qmline)
|
||||||
|
return
|
||||||
|
|
||||||
qm_grade = qmline.group(2).strip().upper() # [a-dA-DvVxX?]
|
|
||||||
if qm_grade not in ["A", "B", "C", "D", "X", "V", "?"]:
|
if qm_grade not in ["A", "B", "C", "D", "X", "V", "?"]:
|
||||||
message = f" ! QM{qm_no} INVALID code '{qm_grade}' in '{survexblock.survexfile.path}'"
|
message = f" ! QM{qm_no} INVALID code '{qm_grade}' [{blockname}] '{survexblock.survexfile.path}'"
|
||||||
print(insp + message)
|
print(insp + message)
|
||||||
stash_data_issue(
|
stash_data_issue(
|
||||||
parser="survex", message=message, url=None, sb=(survexblock.survexfile.path)
|
parser="survex", message=message, url=None, sb=(survexblock.survexfile.path)
|
||||||
)
|
)
|
||||||
|
qm_nearest = qmline.group(3)
|
||||||
if qmline.group(3): # usual closest survey station
|
# if qmline.group(3): # usual closest survey station
|
||||||
qm_nearest = qmline.group(3)
|
# qm_nearest = qmline.group(3)
|
||||||
if qmline.group(4):
|
# if qmline.group(4):
|
||||||
qm_nearest = qm_nearest + "." + qmline.group(4)
|
# qm_nearest = qm_nearest + "." + qmline.group(4)
|
||||||
|
|
||||||
|
qm_resolve_station = qmline.group(4)
|
||||||
|
# if qmline.group(6) and qmline.group(6) != "-":
|
||||||
|
# qm_resolve_station = qmline.group(6)
|
||||||
|
# if qmline.group(7):
|
||||||
|
# qm_resolve_station = qm_resolve_station + "." + qmline.group(7)
|
||||||
|
# else:
|
||||||
|
# qm_resolve_station = ""
|
||||||
|
qm_notes = qmline.group(5)
|
||||||
|
# qm_notes = qmline.group(8)
|
||||||
|
|
||||||
if qmline.group(6) and qmline.group(6) != "-":
|
|
||||||
qm_resolve_station = qmline.group(6)
|
|
||||||
if qmline.group(7):
|
|
||||||
qm_resolve_station = qm_resolve_station + "." + qmline.group(7)
|
|
||||||
else:
|
|
||||||
qm_resolve_station = ""
|
|
||||||
qm_notes = qmline.group(8)
|
|
||||||
# Spec of QM in SVX files:
|
# Spec of QM in SVX files:
|
||||||
# ;Serial number grade(A/B/C/D/V/X) nearest-station resolution-station description
|
# ;Serial number grade(A/B/C/D/V/X) nearest-station resolution-station description
|
||||||
# ;QM1 a hobnob_hallway_2.42 hobnob-hallway_3.42 junction of keyhole passage
|
# ;QM1 a hobnob_hallway_2.42 hobnob-hallway_3.42 junction of keyhole passage
|
||||||
@ -1332,15 +1352,10 @@ class LoadingSurvex:
|
|||||||
|
|
||||||
# Older troggle/CSV assumes a logbook entry 'found_by' for each QM, with a date.
|
# Older troggle/CSV assumes a logbook entry 'found_by' for each QM, with a date.
|
||||||
# We don't need this anymore so we don't need to create a placeholder logbook entry.
|
# We don't need this anymore so we don't need to create a placeholder logbook entry.
|
||||||
|
|
||||||
# create a short, hopefully-unique name for this block to be used in the QM id
|
|
||||||
blockname = survexblock.name[:6] + survexblock.name[-1:]
|
|
||||||
# logslug = f'D{int(qmyear)}_{blockname}_{int(qm_no):03d}'
|
|
||||||
|
|
||||||
if survexblock.survexfile.cave:
|
if survexblock.survexfile.cave:
|
||||||
survexblock.survexfile.cave.slug()
|
survexblock.survexfile.cave.slug()
|
||||||
else:
|
|
||||||
pass
|
|
||||||
|
|
||||||
self.fix_undated(survexblock) # null-op if already set
|
self.fix_undated(survexblock) # null-op if already set
|
||||||
expoyear = str(survexblock.date.year)
|
expoyear = str(survexblock.date.year)
|
||||||
@ -1392,16 +1407,11 @@ class LoadingSurvex:
|
|||||||
if qmline:
|
if qmline:
|
||||||
self.LoadSurvexQM(survexblock, qmline)
|
self.LoadSurvexQM(survexblock, qmline)
|
||||||
else:
|
else:
|
||||||
# rx_qm_tick = re.compile(r"(?i)^\s*QM(\d+)\s+TICK\s([\d\-]+)\s(.*)$")
|
message = f' ! QM Unrecognised as valid in "{survexblock.survexfile.path}" QM{qml.group(1)} "{qml.group(2)}" : regex failure typo?'
|
||||||
qmtick = self.rx_qm_tick.match(comment)
|
print(message)
|
||||||
if qmtick:
|
stash_data_issue(
|
||||||
self.TickSurvexQM(survexblock, qmtick)
|
parser="survex", message=message, url=None, sb=(survexblock.survexfile.path)
|
||||||
else:
|
)
|
||||||
message = f' ! QM Unrecognised as valid in "{survexblock.survexfile.path}" QM{qml.group(1)} "{qml.group(2)}" : regex failure typo?'
|
|
||||||
print(message)
|
|
||||||
stash_data_issue(
|
|
||||||
parser="survex", message=message, url=None, sb=(survexblock.survexfile.path)
|
|
||||||
)
|
|
||||||
|
|
||||||
def LoadSurvexComment(self, survexblock, comment):
|
def LoadSurvexComment(self, survexblock, comment):
|
||||||
# ignore all comments except ;ref, ; wallet and ;QM and ;*include (for collated survex file)
|
# ignore all comments except ;ref, ; wallet and ;QM and ;*include (for collated survex file)
|
||||||
|
Loading…
Reference in New Issue
Block a user