summaryrefslogtreecommitdiffstats
path: root/core/models/survex.py
diff options
context:
space:
mode:
authorPhilip Sargent <philip.sargent@klebos.com>2022-09-20 22:52:31 +0300
committerPhilip Sargent <philip.sargent@klebos.com>2022-09-20 22:52:31 +0300
commit71bd07e70e542df553c595096dede77ea9569052 (patch)
treeda4df221a9f8fe908ba94bf406c4fce6e63ef1ec /core/models/survex.py
parent94b49adc4ed961807ca32b726ccbf300f129e49c (diff)
downloadtroggle-71bd07e70e542df553c595096dede77ea9569052.tar.gz
troggle-71bd07e70e542df553c595096dede77ea9569052.tar.bz2
troggle-71bd07e70e542df553c595096dede77ea9569052.zip
Handling and fixing bad dates in JSON input
Diffstat (limited to 'core/models/survex.py')
-rw-r--r--core/models/survex.py26
1 files changed, 24 insertions, 2 deletions
diff --git a/core/models/survex.py b/core/models/survex.py
index f2ba667..1146704 100644
--- a/core/models/survex.py
+++ b/core/models/survex.py
@@ -2,6 +2,7 @@ import os
import re
import json
import operator
+import datetime
from urllib.parse import urljoin
from pathlib import Path
from functools import reduce
@@ -10,6 +11,7 @@ from django.db import models
from django.conf import settings
from django.urls import reverse
+# from troggle.core.models.troggle import DataIssue # circular import. Hmm
class SurvexDirectory(models.Model):
path = models.CharField(max_length=200)
@@ -185,6 +187,7 @@ class Wallet(models.Model):
fp = Path(self.fpath)
wname = fp.name
wyear = fp.parent.name
+ wurl = f"/scanupload/{self.walletname}" # .replace('#', ':')
jsonfile = Path(settings.DRAWINGS_DATA, "walletjson") / wyear / wname / "contents.json"
if not Path(jsonfile).is_file():
@@ -195,11 +198,30 @@ class Wallet(models.Model):
try:
waldata = json.load(json_f)
except:
- wurl = f"/scanupload/{self.walletname}" # .replace('#', ':')
message = f"! {str(self.walletname)} Failed to load {jsonfile} JSON file"
#print(message)
raise
-
+ if waldata["date"]:
+ datestr = waldata["date"].replace('.','-')
+ try:
+ thisdate = datetime.date.fromisoformat(datestr)
+ except ValueError:
+ # probably a single digit day number. HACKUS MAXIMUS.
+ # clearly we need to fix this when we first import date strings..
+ datestr = datestr[:-1] + '0' + datestr[-1]
+ print(f' - {datestr=} ')
+ try:
+ thisdate = datetime.date.fromisoformat(datestr)
+ try:
+ waldata["date"] = thisdate.isoformat()
+ except:
+ message = f"! {str(self.walletname)} Date formatting failure {thisdate}. Failed to load from {jsonfile} JSON file"
+ from troggle.core.models.troggle import DataIssue
+ DataIssue.objects.update_or_create(parser='scans', message=message, url=wurl)
+ except:
+ message = f"! {str(self.walletname)} Date format not ISO {datestr}. Failed to load fro, {jsonfile} JSON file"
+ from troggle.core.models.troggle import DataIssue
+ DataIssue.objects.update_or_create(parser='scans', message=message, url=wurl)
return waldata
def year(self):