mirror of
https://expo.survex.com/repositories/troggle/.git
synced 2024-11-21 23:01:52 +00:00
Fixed coloured T and S on expo calendar
This commit is contained in:
parent
a1c34f488d
commit
226cbb6b5c
@ -13,6 +13,5 @@
|
||||
"first_name": "Michael",
|
||||
"last_name": "Sargent",
|
||||
"fullname": "Michael Sargent", "is_vfho": false, "mug_shot": null,
|
||||
"blurb": "\n\n\n\n\n\n<p><img class=\"onleft\" src=\"/folk/i/mikey0.jpg\">\n<img class=\"onright\" src=\"/folk/i/mikey1.jpg\" height=\"400\"\nalt=\"\" />\n<b>Michael Sargent</b> CUCC<br />\nExpeditions 2014, 15, 16, 17, 18, 19.\n<p>The first second-generation expo caver in 2014, later members of this exclusive group were Dan Lenartowicz and Sarah Connolly.\n\n\n<img class=\"onleft\" src=\"/folk/i/michaelsargent.jpg\">\n<im\n\n<hr style=\"clear: both\" /><p class=\"caption\">Pre-expo (pre-student) photos from President's Invite (OUCC) \nand first abseiling instruction (Cambridge).</p>\n", "orderref": "",
|
||||
"user": null}}
|
||||
"blurb": "\n\n\n\n\n\n<p><img class=\"onleft\" src=\"/folk/i/mikey0.jpg\">\n<img class=\"onright\" src=\"/folk/i/mikey1.jpg\" height=\"400\"\nalt=\"\" />\n<b>Michael Sargent</b> CUCC<br />\nExpeditions 2014, 15, 16, 17, 18, 19.\n<p>The first second-generation expo caver in 2014, later members of this exclusive group were Dan Lenartowicz and Sarah Connolly.\n\n\n<img class=\"onleft\" src=\"/folk/i/michaelsargent.jpg\">\n<im\n\n<hr style=\"clear: both\" /><p class=\"caption\">Pre-expo (pre-student) photos from President's Invite (OUCC) \nand first abseiling instruction (Cambridge).</p>\n", "orderref": ""}}
|
||||
]
|
@ -21,6 +21,7 @@ from django.template import Context, loader
|
||||
from django.urls import reverse
|
||||
|
||||
import settings
|
||||
#from troggle.core.models.caves import CaveSlug
|
||||
from troggle.core.models.survex import SurvexStation
|
||||
from troggle.core.models.troggle import (DataIssue, Expedition, Person,
|
||||
PersonExpedition, TroggleModel)
|
||||
@ -36,7 +37,7 @@ 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)
|
||||
# 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)
|
||||
@ -70,7 +71,14 @@ class LogbookEntry(TroggleModel):
|
||||
LogbookEntry.objects.get(id=self.id-1)
|
||||
|
||||
def DayIndex(self):
|
||||
return list(self.expeditionday.logbookentry_set.all()).index(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}")
|
||||
index = 0
|
||||
return index
|
||||
|
||||
|
||||
class PersonTrip(TroggleModel):
|
||||
"""Single Person going on a trip, which may or may not be written up.
|
||||
|
@ -73,7 +73,6 @@ class SurvexStationLookUpManager(models.Manager):
|
||||
class SurvexStation(models.Model):
|
||||
name = models.CharField(max_length=100)
|
||||
block = models.ForeignKey('SurvexBlock', null=True,on_delete=models.SET_NULL)
|
||||
# equate = models.ForeignKey('SurvexEquate', blank=True, null=True,on_delete=models.SET_NULL)
|
||||
objects = SurvexStationLookUpManager()
|
||||
x = models.FloatField(blank=True, null=True)
|
||||
y = models.FloatField(blank=True, null=True)
|
||||
@ -112,7 +111,7 @@ class SurvexBlockLookUpManager(models.Manager):
|
||||
return block
|
||||
|
||||
class SurvexBlock(models.Model):
|
||||
"""One begin..end block within a survex file. The basic elemt of a survey trip.
|
||||
"""One begin..end block within a survex file. The basic element of a survey trip.
|
||||
"""
|
||||
objects = SurvexBlockLookUpManager()
|
||||
name = models.CharField(max_length=100)
|
||||
@ -121,7 +120,7 @@ class SurvexBlock(models.Model):
|
||||
cave = models.ForeignKey('Cave', blank=True, null=True,on_delete=models.SET_NULL)
|
||||
|
||||
date = models.DateField(blank=True, null=True)
|
||||
expeditionday = models.ForeignKey("ExpeditionDay", null=True,on_delete=models.SET_NULL)
|
||||
#expeditionday = models.ForeignKey("ExpeditionDay", null=True,on_delete=models.SET_NULL)
|
||||
expedition = models.ForeignKey('Expedition', blank=True, null=True,on_delete=models.SET_NULL)
|
||||
|
||||
survexfile = models.ForeignKey("SurvexFile", blank=True, null=True,on_delete=models.SET_NULL)
|
||||
@ -147,7 +146,14 @@ class SurvexBlock(models.Model):
|
||||
return True
|
||||
|
||||
def DayIndex(self):
|
||||
return list(self.expeditionday.survexblock_set.all()).index(self)
|
||||
"""This is used to set different colours for the different trips on
|
||||
the calendar view of the expedition"""
|
||||
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
|
||||
#return list(self.survexblock_set.all()).index(self)
|
||||
return index
|
||||
|
||||
class SurvexPersonRole(models.Model):
|
||||
survexblock = models.ForeignKey('SurvexBlock',on_delete=models.CASCADE)
|
||||
|
@ -117,7 +117,7 @@ class ExpeditionDay(TroggleModel):
|
||||
ordering = ('date',)
|
||||
|
||||
def GetPersonTrip(self, personexpedition):
|
||||
"""returns all logbook trips for this expediton
|
||||
"""returns all logbook trips for this expeditonday
|
||||
"""
|
||||
personexpeditions = self.persontrip_set.filter(expeditionday=self)
|
||||
return personexpeditions and personexpeditions[0] or None
|
||||
@ -132,10 +132,8 @@ class Person(TroggleModel):
|
||||
is_vfho = models.BooleanField(help_text="VFHO is the Vereines für Höhlenkunde in Obersteier, a nearby Austrian caving club.", default=False)
|
||||
mug_shot = models.CharField(max_length=100, blank=True,null=True)
|
||||
blurb = models.TextField(blank=True,null=True)
|
||||
|
||||
#href = models.CharField(max_length=200)
|
||||
orderref = models.CharField(max_length=200) # for alphabetic
|
||||
user = models.OneToOneField(User, null=True, blank=True,on_delete=models.CASCADE) # not used now
|
||||
|
||||
def get_absolute_url(self):
|
||||
return urljoin(settings.URL_ROOT,reverse('person',kwargs={'first_name':self.first_name,'last_name':self.last_name}))
|
||||
|
||||
|
@ -11,6 +11,7 @@ from django.conf import settings
|
||||
from django.db import models
|
||||
from django.urls import reverse
|
||||
|
||||
#from troggle.core.models.survex import SurvexBlock
|
||||
# from troggle.core.models.troggle import DataIssue # circular import. Hmm
|
||||
|
||||
class Wallet(models.Model):
|
||||
@ -164,7 +165,8 @@ class Wallet(models.Model):
|
||||
return files
|
||||
|
||||
def fixsurvextick(self, tick):
|
||||
blocks = SurvexBlock.objects.filter(scanswallet = self)
|
||||
blocks = self.survexblock_set.all()
|
||||
#blocks = SurvexBlock.objects.filter(scanswallet = self)
|
||||
result = tick
|
||||
for b in blocks:
|
||||
if b.survexfile: # if any exist in db, no check for validity or a real file. Refactor.
|
||||
|
@ -34,7 +34,9 @@ save_carefully() - core function that saves troggle objects in the database
|
||||
various git add/commit functions that need refactoring together
|
||||
|
||||
NOTE that TROG is not serialized! Two users can update it and conflict !!
|
||||
This needs to be in a multi-user database with transactions.
|
||||
This needs to be in a multi-user database with transactions. However it is
|
||||
useful when doing a data import with databaseReset.py as that has a single
|
||||
thread.
|
||||
|
||||
'''
|
||||
|
||||
|
@ -15,7 +15,7 @@ from django.views.generic.list import ListView
|
||||
|
||||
import troggle.settings as settings
|
||||
from troggle.core.models.logbooks import LogbookEntry, PersonTrip
|
||||
from troggle.core.models.survex import SurvexBlock, Wallet
|
||||
from troggle.core.models.survex import SurvexBlock
|
||||
from troggle.core.models.troggle import Expedition, Person, PersonExpedition
|
||||
from troggle.core.utils import TROG
|
||||
from troggle.parsers.imports import import_logbook
|
||||
|
@ -71,15 +71,49 @@ table.expeditionpersonlist a:visited
|
||||
color:#509;
|
||||
}
|
||||
|
||||
table.expeditionpersonlist a.dayindexlog-0
|
||||
{ background-color: #af9; font-size: 130%;}
|
||||
table.expeditionpersonlist a.dayindexlog-1
|
||||
{ background-color: #440; color: white; }
|
||||
{ background-color: #9af; font-size: 130%;}
|
||||
table.expeditionpersonlist a.dayindexlog-2
|
||||
{ background-color: #9fa; }
|
||||
table.expeditionpersonlist a.dayindexsurvex-1
|
||||
{ background-color: #000; color: #55f; }
|
||||
table.expeditionpersonlist a.dayindexsurvex-2
|
||||
{ background-color: #6ff; }
|
||||
{ background-color: #880; color: white; font-weight: bold; font-size: 130%;}
|
||||
table.expeditionpersonlist a.dayindexlog-3
|
||||
{ background-color: #f9a; font-size: 130%;}
|
||||
table.expeditionpersonlist a.dayindexlog-4
|
||||
{ background-color: #808; color: white; font-weight: bold; font-size: 130%;}
|
||||
table.expeditionpersonlist a.dayindexlog-5
|
||||
{ background-color: #088; color: white; font-weight: bold; font-size: 130%;}
|
||||
table.expeditionpersonlist a.dayindexlog-6
|
||||
{ background-color: #000; color: yellow; font-weight: bold; font-size: 130%;}
|
||||
table.expeditionpersonlist a.dayindexlog-7
|
||||
{ background-color: #a9f; font-size: 130%;}
|
||||
table.expeditionpersonlist a.dayindexlog-8
|
||||
{ background-color: #fa9; font-size: 130%;}
|
||||
table.expeditionpersonlist a.dayindexlog-9
|
||||
{ background-color: #9fa; font-size: 130%;}
|
||||
|
||||
table.expeditionpersonlist a.dayindexsurvex-0
|
||||
{ background-color: #f6f; font-size: 130%}
|
||||
table.expeditionpersonlist a.dayindexsurvex-1
|
||||
{ background-color: #6ff; font-size: 130%}
|
||||
table.expeditionpersonlist a.dayindexsurvex-2
|
||||
{ background-color: #ff6; font-size: 130%}
|
||||
table.expeditionpersonlist a.dayindexsurvex-3
|
||||
{ background-color: #000; color: white; font-weight: bold; font-size: 130%;}
|
||||
table.expeditionpersonlist a.dayindexsurvex-4
|
||||
{ background-color: #99f; color: white; font-weight: bold; font-size: 130%;}
|
||||
table.expeditionpersonlist a.dayindexsurvex-5
|
||||
{ background-color: #f99; color: white; font-weight: bold; font-size: 130%;}
|
||||
table.expeditionpersonlist a.dayindexsurvex-6
|
||||
{ background-color: #f99; color: yellow; font-weight: bold; font-size: 130%;}
|
||||
table.expeditionpersonlist a.dayindexsurvex-7
|
||||
{ background-color: #f99; color: blue; font-weight: bold; font-size: 130%;}
|
||||
table.expeditionpersonlist a.dayindexsurvex-8
|
||||
{ background-color: #9f9; color: blue; font-weight: bold; font-size: 130%;}
|
||||
table.expeditionpersonlist a.dayindexsurvex-9
|
||||
{ background-color: #9f9; color: red; font-weight: bold; font-size: 130%;}
|
||||
table.expeditionpersonlist a.dayindexsurvex-10
|
||||
{ background-color: #9f9; color: white; font-weight: bold; font-size: 130%;}
|
||||
table.expeditionpersonlist a:hover
|
||||
{
|
||||
color:white;
|
||||
|
@ -113,8 +113,10 @@ def put_person_on_trip(survexblock, personexpedition, tm):
|
||||
|
||||
try:
|
||||
personrole = SurvexPersonRole.objects.create(
|
||||
survexblock=survexblock, person = personexpedition.person,
|
||||
expeditionday = survexblock.expeditionday, personexpedition=personexpedition,
|
||||
survexblock=survexblock,
|
||||
person = personexpedition.person,
|
||||
# expeditionday = survexblock.expeditionday,
|
||||
personexpedition=personexpedition,
|
||||
personname=tm
|
||||
)
|
||||
except:
|
||||
@ -353,14 +355,6 @@ class LoadingSurvex:
|
||||
expo = survexblock.expedition # may be None if no *date yet
|
||||
|
||||
if expo:
|
||||
if not survexblock.expeditionday: # *date has been set
|
||||
# should not happen
|
||||
message = f"! *team {expo.year} expo ok, expedition day NOT in *team {survexblock.survexfile.path} ({survexblock}) "
|
||||
print(self.insp + message)
|
||||
stash_data_issue(
|
||||
parser="survex", message=message, url=None, sb=(survexblock.survexfile.path)
|
||||
)
|
||||
|
||||
personexpedition = GetPersonExpeditionNameLookup(expo).get(tm.lower())
|
||||
if personexpedition:
|
||||
put_person_on_trip(survexblock, personexpedition, tm)
|
||||
@ -501,7 +495,7 @@ class LoadingSurvex:
|
||||
|
||||
expo = self.get_expo_from_year(year)
|
||||
survexblock.expedition = expo
|
||||
survexblock.expeditionday = expo.get_expedition_day(survexblock.date)
|
||||
# survexblock.expeditionday = expo.get_expedition_day(survexblock.date)
|
||||
survexblock.save()
|
||||
|
||||
team = get_team_on_trip(survexblock) # should be empty, should only be in 'pending'
|
||||
@ -1705,7 +1699,7 @@ class LoadingSurvex:
|
||||
stash_data_issue(parser="survex", message=message, url=None, sb=(path))
|
||||
return # skip this survex file and all things *included in it
|
||||
except:
|
||||
message = f" ! ERROR *include file '{path}' in '{survexblock}' has unexpected error. Omitted."
|
||||
message = f" ! ERROR *include file '{path}' in '{survexblock}' has unexpected error. OMITTED!"
|
||||
print(message)
|
||||
print(message, file=sys.stderr)
|
||||
stash_data_issue(parser="survex", message=message, url=None, sb=(path))
|
||||
|
@ -27,8 +27,10 @@
|
||||
{% endif %}
|
||||
|
||||
<p><b>At a single glance:</b> The table shows all expo cavers and their recorded trips.
|
||||
The columns are the date in the month (July or August), with a "T" for a logbook entry, and
|
||||
an "S" for a survey trip. The colours are the same for people on the same trip.</p>
|
||||
The columns are the date in the month (July or August), with a
|
||||
"<b>T</b>" for a logbook entry, and
|
||||
an "<b>S</b>" for a survey trip. The colours are the same for people on the same trip. </p>
|
||||
<!-- Colours are set in trog3.css and there can be 3 trips a day of each type-->
|
||||
|
||||
<table class="expeditionpersonlist">
|
||||
<tr>
|
||||
@ -47,7 +49,7 @@ an "S" for a survey trip. The colours are the same for people on the same trip.
|
||||
{% if persondayactivities.persontrips or persondayactivities.survexblocks %}
|
||||
<td class="persondayactivity">
|
||||
{% for persontrip in persondayactivities.persontrips %}
|
||||
<a href="{{persontrip.logbook_entry.get_absolute_url}}" class="dayindexlog-1">T</a>
|
||||
<a href="{{persontrip.logbook_entry.get_absolute_url}}" class="dayindexlog-{{persontrip.logbook_entry.DayIndex}}">T</a>
|
||||
{% endfor %}
|
||||
<br/>
|
||||
{% for survexblock in persondayactivities.survexblocks %}
|
||||
|
Loading…
Reference in New Issue
Block a user