summaryrefslogtreecommitdiffstats
path: root/core/models
diff options
context:
space:
mode:
Diffstat (limited to 'core/models')
-rw-r--r--core/models/logbooks.py15
-rw-r--r--core/models/survex.py7
-rw-r--r--core/models/troggle.py50
3 files changed, 25 insertions, 47 deletions
diff --git a/core/models/logbooks.py b/core/models/logbooks.py
index 521eb49..680036a 100644
--- a/core/models/logbooks.py
+++ b/core/models/logbooks.py
@@ -33,6 +33,7 @@ todo='''
'''
class CaveSlug(models.Model):
+ """Moved here to avoid nasty cyclic import error"""
cave = models.ForeignKey('Cave',on_delete=models.CASCADE)
slug = models.SlugField(max_length=50, unique = True)
primary = models.BooleanField(default=False)
@@ -41,7 +42,6 @@ class LogbookEntry(TroggleModel):
"""Single parsed entry from Logbook
"""
date = models.DateField()#MJG wants to turn this into a datetime such that multiple Logbook entries on the same day can be ordered.ld()
- # expeditionday = models.ForeignKey("ExpeditionDay", null=True,on_delete=models.SET_NULL)#MJG wants to KILL THIS (redundant information)
expedition = models.ForeignKey(Expedition,blank=True, null=True,on_delete=models.SET_NULL) # yes this is double-
title = models.CharField(max_length=200)
cave_slug = models.SlugField(max_length=50, blank=True, null=True)
@@ -77,9 +77,16 @@ class LogbookEntry(TroggleModel):
def DayIndex(self):
"""This is used to set different colours for the different trips on
the calendar view of the expedition"""
- index = list(LogbookEntry.objects.filter(date=self.date)).index(self)
- if index not in range(0,10):
- print(f"Unexpected LogbookEntry DayIndex '{index}' {self}")
+ mx = 10
+ todays = list(LogbookEntry.objects.filter(date=self.date))
+ if self in todays:
+ index = todays.index(self)
+ else:
+ print(f"DayIndex: Synchronization error. Restart server. {self}")
+ index = 0
+
+ if index not in range(0, mx):
+ print(f"DayIndex: More than {mx-1} LogbookEntry items on one day '{index}' {self}")
index = 0
return index
diff --git a/core/models/survex.py b/core/models/survex.py
index 4e852f5..24b679a 100644
--- a/core/models/survex.py
+++ b/core/models/survex.py
@@ -148,10 +148,11 @@ class SurvexBlock(models.Model):
def DayIndex(self):
"""This is used to set different colours for the different trips on
the calendar view of the expedition"""
+ mx = 10
index = list(SurvexBlock.objects.filter(date=self.date)).index(self)
- if index not in range(0,10):
- print(f"Unexpected SurvexBlock DayIndex '{index}' {self}")
- index = 10
+ if index not in range(0, mx):
+ print(f"DayIndex: More than {mx-1} SurvexBlock items on one day '{index}' {self}")
+ index = 0
#return list(self.survexblock_set.all()).index(self)
return index
diff --git a/core/models/troggle.py b/core/models/troggle.py
index 4651955..6e470b3 100644
--- a/core/models/troggle.py
+++ b/core/models/troggle.py
@@ -51,6 +51,8 @@ class DataIssue(TroggleModel):
We have replaced all assertions in the code with messages and local fix-ups or skips:
https://martinfowler.com/articles/replaceThrowWithNotification.html
+
+ See also the use of stash_data_issue() & store_data_issues() in parsers/survex.py which defer writing to the database until the end of the import.
"""
date = models.DateTimeField(auto_now_add=True, blank=True)
parser = models.CharField(max_length=50, blank=True, null=True)
@@ -81,34 +83,9 @@ class Expedition(TroggleModel):
def get_absolute_url(self):
return urljoin(settings.URL_ROOT, reverse('expedition', args=[self.year]))
- # construction function. should be moved out
- # def get_expedition_day(self, date):
- # expeditiondays = self.expeditionday_set.filter(date=date)
- # if expeditiondays:
- # if len(expeditiondays) == 1:
- # return expeditiondays[0]
- # else:
- # message =f'! - More than one expeditionday for the same date: {date} .\n - This should never happen. \n - Restart mysql and run reset to clean database.'
- # DataIssue.objects.create(parser='expedition', message=message)
- # return expeditiondays[0]
- # res = ExpeditionDay(expedition=self, date=date)
- # res.save()
- # return res
-
- # def day_min(self):
- # """First day of expedition
- # """
- # res = self.expeditionday_set.all()
- # return res and res[0] or None
-
- # def day_max(self):
- # """last day of expedition
- # """
- # res = self.expeditionday_set.all()
- # return res and res[len(res) - 1] or None
class ExpeditionDay(TroggleModel):
- """Exists only on Expedition now. Removed from logbookentry, persontrip, survex stuff etc.
+ """Exists only on Expedition now. Removed links from logbookentry, persontrip, survex stuff etc.
"""
expedition = models.ForeignKey("Expedition",on_delete=models.CASCADE)
date = models.DateField()
@@ -116,11 +93,11 @@ class ExpeditionDay(TroggleModel):
class Meta:
ordering = ('date',)
- def GetPersonTrip(self, personexpedition):
- """returns all logbook trips for this expeditonday
- """
- personexpeditions = self.persontrip_set.filter(expeditionday=self)
- return personexpeditions and personexpeditions[0] or None
+ # def GetPersonTrip(self, personexpedition):
+ # """returns all logbook trips for this expeditonday
+ # """
+ # personexpeditions = self.persontrip_set.filter(expeditionday=self)
+ # return personexpeditions and personexpeditions[0] or None
class Person(TroggleModel):
"""single Person, can go on many years
@@ -182,7 +159,7 @@ class PersonExpedition(TroggleModel):
slugfield = models.SlugField(max_length=50,blank=True, null=True) # 2022 to be used in future
is_guest = models.BooleanField(default=False)
- nickname = models.CharField(max_length=100,blank=True, null=True)
+ nickname = models.CharField(max_length=100,blank=True, null=True) # removbe this
class Meta:
ordering = ('-expedition',)
@@ -208,11 +185,4 @@ class PersonExpedition(TroggleModel):
survexblocks = [personrole.survexblock for personrole in self.survexpersonrole_set.all() ]
return sum([survexblock.legslength for survexblock in set(survexblocks)])
- # would prefer to return actual person trips so we could link to first and last ones
- # def day_min(self):
- # res = self.persontrip_set.aggregate(day_min=Min("expeditionday__date"))
- # return res["day_min"]
-
- # def day_max(self):
- # res = self.persontrip_set.all().aggregate(day_max=models.Max("expeditionday__date"))
- # return res["day_max"]
+ \ No newline at end of file