2
0
mirror of https://expo.survex.com/repositories/troggle/.git synced 2025-12-16 09:17:07 +00:00

fixing Sunday display on calendar

This commit is contained in:
2023-01-30 15:28:11 +00:00
parent 7d98980121
commit 3742e0f367
7 changed files with 97 additions and 88 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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"]