diff options
Diffstat (limited to 'core/models')
-rw-r--r-- | core/models/logbooks.py | 15 | ||||
-rw-r--r-- | core/models/survex.py | 7 | ||||
-rw-r--r-- | core/models/troggle.py | 50 |
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 |