forked from expo/troggle
clean out broken QM bits
This commit is contained in:
@@ -146,12 +146,17 @@ class Cave(TroggleModel):
|
||||
return str(self.slug())
|
||||
|
||||
def get_QMs(self):
|
||||
return QM.objects.filter(found_by__cave_slug=self.caveslug_set.all())
|
||||
'''Does not work because found_by is a string == cave_slug not an object identifier
|
||||
This chnage was made to remove tricky __get_attribute__ code whihc is hard for
|
||||
most folks to maintain and is not really necessary. Need to do a proper search for the cave.
|
||||
Seems pretty broken - all needs re-doing more cleanly.
|
||||
'''
|
||||
return QM.objects.filter(found_by__cave_slug=self.slug)
|
||||
|
||||
def new_QM_number(self, year=datetime.date.today().year):
|
||||
"""Given a cave and the current year, returns the next QM number."""
|
||||
try:
|
||||
res=QM.objects.filter(found_by__date__year=year, found_by__cave=self).order_by('-number')[0]
|
||||
res=QM.objects.filter(found_by__date__year=year, found_by__cave_slug=self.slug).order_by('-number')[0]
|
||||
except IndexError:
|
||||
return 1
|
||||
return res.number+1
|
||||
@@ -379,6 +384,10 @@ class Entrance(TroggleModel):
|
||||
|
||||
class LogbookEntry(TroggleModel):
|
||||
"""Single parsed entry from Logbook
|
||||
|
||||
But what is all this__getattribute__ meta stuff for ? When is it needed ?!?
|
||||
Le'ts get rid of it and set the 'cave' attribute to a cave object elsehwhere. This is
|
||||
attempting to be Too Clever.
|
||||
"""
|
||||
LOGBOOK_ENTRY_TYPES = (
|
||||
("wiki", "Wiki style logbook"),
|
||||
@@ -386,7 +395,7 @@ class LogbookEntry(TroggleModel):
|
||||
)
|
||||
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-
|
||||
expedition = models.ForeignKey(Expedition,blank=True, null=True,on_delete=models.SET_NULL) # yes this is double-
|
||||
title = models.CharField(max_length=settings.MAX_LOGBOOK_ENTRY_TITLE_LENGTH)
|
||||
cave_slug = models.SlugField(max_length=50, blank=True, null=True)
|
||||
place = models.CharField(max_length=100,blank=True, null=True,help_text="Only use this if you haven't chosen a cave")
|
||||
@@ -399,29 +408,29 @@ class LogbookEntry(TroggleModel):
|
||||
# several PersonTrips point in to this object
|
||||
ordering = ('-date',)
|
||||
|
||||
def __getattribute__(self, item):
|
||||
if item == "cave":
|
||||
#Allow a logbookentries cave to be directly accessed despite not having a proper foreignkey
|
||||
return CaveSlug.objects.get(slug = self.cave_slug).cave
|
||||
# parse error in python3.8
|
||||
# https://stackoverflow.com/questions/41343263/provide-classcell-example-for-python-3-6-metaclass
|
||||
#https://github.com/django/django/pull/7653
|
||||
#return TroggleModel.__getattribute__(item)
|
||||
#return super(LogbookEntry, self).__getattribute__(item) # works in py3.5, fails in 3.8
|
||||
return TroggleModel.__getattribute__(self,item) # works in py 3.5 AND in 3.8
|
||||
# def __getattribute__(self, item):
|
||||
# if item == "cave":
|
||||
# #Allow a logbookentries cave to be directly accessed despite not having a proper foreignkey
|
||||
# return CaveSlug.objects.get(slug = self.cave_slug).cave
|
||||
# # parse error in python3.8
|
||||
# # https://stackoverflow.com/questions/41343263/provide-classcell-example-for-python-3-6-metaclass
|
||||
# #https://github.com/django/django/pull/7653
|
||||
# #return TroggleModel.__getattribute__(item)
|
||||
# #return super(LogbookEntry, self).__getattribute__(item) # works in py3.5, fails in 3.8
|
||||
# return TroggleModel.__getattribute__(self,item) # works in py 3.5 AND in 3.8
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
if "cave" in list(kwargs.keys()):
|
||||
if kwargs["cave"] is not None:
|
||||
kwargs["cave_slug"] = CaveSlug.objects.get(cave=kwargs["cave"], primary=True).slug
|
||||
kwargs.pop("cave")
|
||||
# parse error in python3.8
|
||||
return TroggleModel.__init__(self, *args, **kwargs) # seems OK in 3.5 & 3.8! failure later elsewhere with 3.8
|
||||
#return TroggleModel().__init__(self, *args, **kwargs) # parses OK, fails at runtime in 3.8
|
||||
#return super().__init__(self, *args, **kwargs) # fails in 3.8
|
||||
#return super().__init__(*args, **kwargs) # works in py3.5 fails in 3.8
|
||||
#return super(LogbookEntry, self).__init__(*args, **kwargs) # works in py3.5
|
||||
#return TroggleModel.__init__(*args, **kwargs) # fails in py3.5, runtime fail in 3.8
|
||||
# def __init__(self, *args, **kwargs):
|
||||
# if "cave" in list(kwargs.keys()):
|
||||
# if kwargs["cave"] is not None:
|
||||
# kwargs["cave_slug"] = CaveSlug.objects.get(cave=kwargs["cave"], primary=True).slug
|
||||
# kwargs.pop("cave")
|
||||
# # parse error in python3.8
|
||||
# return TroggleModel.__init__(self, *args, **kwargs) # seems OK in 3.5 & 3.8! failure later elsewhere with 3.8
|
||||
# #return TroggleModel().__init__(self, *args, **kwargs) # parses OK, fails at runtime in 3.8
|
||||
# #return super().__init__(self, *args, **kwargs) # fails in 3.8
|
||||
# #return super().__init__(*args, **kwargs) # works in py3.5 fails in 3.8
|
||||
# #return super(LogbookEntry, self).__init__(*args, **kwargs) # works in py3.5
|
||||
# #return TroggleModel.__init__(*args, **kwargs) # fails in py3.5, runtime fail in 3.8
|
||||
|
||||
def isLogbookEntry(self): # Function used in templates
|
||||
return True
|
||||
@@ -481,13 +490,13 @@ class QM(TroggleModel):
|
||||
|
||||
def code(self):
|
||||
if self.found_by:
|
||||
return "%s-%s-%s" % (str(self.found_by.cave)[6:], self.found_by.date.year, self.number)
|
||||
return "%s-%s-%s" % (str(self.found_by.cave_slug)[6:], self.found_by.date.year, self.number)
|
||||
else:
|
||||
return "%s" % (self.number)
|
||||
|
||||
def get_absolute_url(self):
|
||||
#return settings.URL_ROOT + '/cave/' + self.found_by.cave.kataster_number + '/' + str(self.found_by.date.year) + '-' + '%02d' %self.number
|
||||
return urljoin(settings.URL_ROOT, reverse('qm',kwargs={'cave_id':self.found_by.cave.kataster_number,'year':self.found_by.date.year,'qm_id':self.number,'grade':self.grade}))
|
||||
return urljoin(settings.URL_ROOT, reverse('qm',kwargs={'cave_id':self.found_by.cave_slug,'year':self.found_by.date.year,'qm_id':self.number,'grade':self.grade}))
|
||||
|
||||
def get_next_by_id(self):
|
||||
return QM.objects.get(id=self.id+1)
|
||||
|
||||
Reference in New Issue
Block a user