diff options
author | Philip Sargent <philip.sargent@klebos.com> | 2022-09-20 22:52:31 +0300 |
---|---|---|
committer | Philip Sargent <philip.sargent@klebos.com> | 2022-09-20 22:52:31 +0300 |
commit | 71bd07e70e542df553c595096dede77ea9569052 (patch) | |
tree | da4df221a9f8fe908ba94bf406c4fce6e63ef1ec /core/models/survex.py | |
parent | 94b49adc4ed961807ca32b726ccbf300f129e49c (diff) | |
download | troggle-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.py | 26 |
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): |