From b6500955880c983235a98a2b96a75fe710fba0ab Mon Sep 17 00:00:00 2001
From: Philip Sargent <philip.sargent@gmail.com>
Date: Fri, 14 Jul 2023 11:13:06 +0200
Subject: [PATCH] calendar S T colour >10 per date

---
 core/models/logbooks.py |  6 +++---
 core/models/survex.py   | 14 ++++++++------
 2 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/core/models/logbooks.py b/core/models/logbooks.py
index b0bde61..34032fd 100644
--- a/core/models/logbooks.py
+++ b/core/models/logbooks.py
@@ -85,12 +85,12 @@ class LogbookEntry(TroggleModel):
         if self in todays:
             index = todays.index(self)
         else:
-            print(f"DayIndex: Synchronization error. Restart server.  {self}")
+            print(f"DayIndex: Synchronization error in logbook entries. Restart server or do full reset.  {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
+            print(f"DayIndex: More than {mx-1} LogbookEntry items on one day  '{index}' {self}, restarting colour sequence.")
+            index = index % mx
         return index
 
 
diff --git a/core/models/survex.py b/core/models/survex.py
index 7b69b64..37e8eb5 100644
--- a/core/models/survex.py
+++ b/core/models/survex.py
@@ -228,15 +228,17 @@ 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"""
+        # print(f"SurvexBlock DayIndex {self.name} '{self.date}'  {len(list(SurvexBlock.objects.filter(date=self.date)))} on this date")
         mx = 10
-        try:
-            index = list(SurvexBlock.objects.filter(date=self.date)).index(self)
-        except:
-            print(f"DayIndex: BAD BAD BAD SurvexBlock items on one day '{index}' {self}")
+        todays = list(SurvexBlock.objects.filter(date=self.date))
+        if self in todays:
+            index = todays.index(self)
+        else:
+            print(f"DayIndex: Synchronization error in survex blocks. Restart server or do full reset.  {self}")
             index = 0
         if index not in range(0, mx):
-            print(f"DayIndex: More than {mx-1} SurvexBlock items on one day '{index}' {self}")
-            index = 0
+            print(f"DayIndex: More than {mx-1} SurvexBlock items on one day '{index}' {self}, restarting colour sequence.")
+            index = index % mx
         # return list(self.survexblock_set.all()).index(self)
         return index