mirror of
https://expo.survex.com/repositories/troggle/.git
synced 2024-11-25 08:41:51 +00:00
n_delete=... soon to be required
This commit is contained in:
parent
55dd577275
commit
ee92182163
@ -5,7 +5,7 @@ import logging
|
||||
import re
|
||||
from subprocess import call
|
||||
|
||||
import urllib.parse
|
||||
from urllib.parse import urljoin
|
||||
from decimal import Decimal, getcontext
|
||||
getcontext().prec=2 #use 2 significant figures for decimal calculations
|
||||
|
||||
@ -53,7 +53,7 @@ class TroggleModel(models.Model):
|
||||
return self._meta.object_name
|
||||
|
||||
def get_admin_url(self):
|
||||
return urllib.parse.urljoin(settings.URL_ROOT, "/admin/core/" + self.object_name().lower() + "/" + str(self.pk))
|
||||
return urljoin(settings.URL_ROOT, "/admin/core/" + self.object_name().lower() + "/" + str(self.pk))
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
@ -84,7 +84,7 @@ class Expedition(TroggleModel):
|
||||
get_latest_by = 'year'
|
||||
|
||||
def get_absolute_url(self):
|
||||
return urllib.parse.urljoin(settings.URL_ROOT, reverse('expedition', args=[self.year]))
|
||||
return urljoin(settings.URL_ROOT, reverse('expedition', args=[self.year]))
|
||||
|
||||
# construction function. should be moved out
|
||||
def get_expedition_day(self, date):
|
||||
@ -105,7 +105,7 @@ class Expedition(TroggleModel):
|
||||
return res and res[len(res) - 1] or None
|
||||
|
||||
class ExpeditionDay(TroggleModel):
|
||||
expedition = models.ForeignKey("Expedition")
|
||||
expedition = models.ForeignKey("Expedition",on_delete=models.CASCADE)
|
||||
date = models.DateField()
|
||||
|
||||
class Meta:
|
||||
@ -127,9 +127,9 @@ class Person(TroggleModel):
|
||||
|
||||
#href = models.CharField(max_length=200)
|
||||
orderref = models.CharField(max_length=200) # for alphabetic
|
||||
user = models.OneToOneField(User, null=True, blank=True)
|
||||
user = models.OneToOneField(User, null=True, blank=True,on_delete=models.CASCADE)
|
||||
def get_absolute_url(self):
|
||||
return urllib.parse.urljoin(settings.URL_ROOT,reverse('person',kwargs={'first_name':self.first_name,'last_name':self.last_name}))
|
||||
return urljoin(settings.URL_ROOT,reverse('person',kwargs={'first_name':self.first_name,'last_name':self.last_name}))
|
||||
|
||||
class Meta:
|
||||
verbose_name_plural = "People"
|
||||
@ -168,9 +168,9 @@ class Person(TroggleModel):
|
||||
class PersonExpedition(TroggleModel):
|
||||
"""Person's attendance to one Expo
|
||||
"""
|
||||
expedition = models.ForeignKey(Expedition)
|
||||
person = models.ForeignKey(Person)
|
||||
slugfield = models.SlugField(max_length=50,blank=True,null=True)
|
||||
expedition = models.ForeignKey(Expedition,on_delete=models.CASCADE)
|
||||
person = models.ForeignKey(Person,on_delete=models.CASCADE)
|
||||
slugfield = models.SlugField(max_length=50,blank=True, null=True)
|
||||
|
||||
is_guest = models.BooleanField(default=False)
|
||||
COMMITTEE_CHOICES = (
|
||||
@ -181,7 +181,7 @@ class PersonExpedition(TroggleModel):
|
||||
('research','Expo research coordinator'),
|
||||
)
|
||||
expo_committee_position = models.CharField(blank=True,null=True,choices=COMMITTEE_CHOICES,max_length=200)
|
||||
nickname = models.CharField(max_length=100,blank=True,null=True)
|
||||
nickname = models.CharField(max_length=100,blank=True, null=True)
|
||||
|
||||
def GetPersonroles(self):
|
||||
res = [ ]
|
||||
@ -208,7 +208,7 @@ class PersonExpedition(TroggleModel):
|
||||
return self.person.first_name
|
||||
|
||||
def get_absolute_url(self):
|
||||
return urllib.parse.urljoin(settings.URL_ROOT, reverse('personexpedition',kwargs={'first_name':self.person.first_name,'last_name':self.person.last_name,'year':self.expedition.year}))
|
||||
return urljoin(settings.URL_ROOT, reverse('personexpedition',kwargs={'first_name':self.person.first_name,'last_name':self.person.last_name,'year':self.expedition.year}))
|
||||
|
||||
def surveyedleglength(self):
|
||||
survexblocks = [personrole.survexblock for personrole in self.personrole_set.all() ]
|
||||
|
@ -25,7 +25,7 @@ class Area(TroggleModel):
|
||||
short_name = models.CharField(max_length=100)
|
||||
name = models.CharField(max_length=200, blank=True, null=True)
|
||||
description = models.TextField(blank=True,null=True)
|
||||
parent = models.ForeignKey('Area', blank=True, null=True)
|
||||
parent = models.ForeignKey('Area', blank=True, null=True,on_delete=models.CASCADE)
|
||||
def __str__(self):
|
||||
if self.parent:
|
||||
return str(self.parent) + " - " + str(self.short_name)
|
||||
@ -38,14 +38,14 @@ class Area(TroggleModel):
|
||||
return self.parent.kat_area()
|
||||
|
||||
class CaveAndEntrance(models.Model):
|
||||
cave = models.ForeignKey('Cave')
|
||||
entrance = models.ForeignKey('Entrance')
|
||||
entrance_letter = models.CharField(max_length=20,blank=True,null=True)
|
||||
cave = models.ForeignKey('Cave',on_delete=models.CASCADE)
|
||||
entrance = models.ForeignKey('Entrance',on_delete=models.CASCADE)
|
||||
entrance_letter = models.CharField(max_length=20,blank=True, null=True)
|
||||
def __str__(self):
|
||||
return str(self.cave) + str(self.entrance_letter)
|
||||
|
||||
class CaveSlug(models.Model):
|
||||
cave = models.ForeignKey('Cave')
|
||||
cave = models.ForeignKey('Cave',on_delete=models.CASCADE)
|
||||
slug = models.SlugField(max_length=50, unique = True)
|
||||
primary = models.BooleanField(default=False)
|
||||
|
||||
@ -53,7 +53,7 @@ class Cave(TroggleModel):
|
||||
# too much here perhaps,
|
||||
official_name = models.CharField(max_length=160)
|
||||
area = models.ManyToManyField(Area, blank=True)
|
||||
kataster_code = models.CharField(max_length=20,blank=True,null=True)
|
||||
kataster_code = models.CharField(max_length=20,blank=True, null=True)
|
||||
kataster_number = models.CharField(max_length=10,blank=True, null=True)
|
||||
unofficial_number = models.CharField(max_length=60,blank=True, null=True)
|
||||
entrances = models.ManyToManyField('Entrance', through='CaveAndEntrance')
|
||||
@ -65,12 +65,12 @@ class Cave(TroggleModel):
|
||||
kataster_status = models.TextField(blank=True,null=True)
|
||||
underground_centre_line = models.TextField(blank=True,null=True)
|
||||
notes = models.TextField(blank=True,null=True)
|
||||
length = models.CharField(max_length=100,blank=True,null=True)
|
||||
depth = models.CharField(max_length=100,blank=True,null=True)
|
||||
extent = models.CharField(max_length=100,blank=True,null=True)
|
||||
survex_file = models.CharField(max_length=100,blank=True,null=True)
|
||||
description_file = models.CharField(max_length=200,blank=True,null=True)
|
||||
url = models.CharField(max_length=200,blank=True,null=True)
|
||||
length = models.CharField(max_length=100,blank=True, null=True)
|
||||
depth = models.CharField(max_length=100,blank=True, null=True)
|
||||
extent = models.CharField(max_length=100,blank=True, null=True)
|
||||
survex_file = models.CharField(max_length=100,blank=True, null=True)
|
||||
description_file = models.CharField(max_length=200,blank=True, null=True)
|
||||
url = models.CharField(max_length=200,blank=True, null=True)
|
||||
filename = models.CharField(max_length=200)
|
||||
|
||||
#class Meta:
|
||||
@ -215,12 +215,12 @@ def getCaveByReference(reference):
|
||||
|
||||
class OtherCaveName(TroggleModel):
|
||||
name = models.CharField(max_length=160)
|
||||
cave = models.ForeignKey(Cave)
|
||||
cave = models.ForeignKey(Cave,on_delete=models.CASCADE)
|
||||
def __str__(self):
|
||||
return str(self.name)
|
||||
|
||||
class EntranceSlug(models.Model):
|
||||
entrance = models.ForeignKey('Entrance')
|
||||
entrance = models.ForeignKey('Entrance',on_delete=models.CASCADE)
|
||||
slug = models.SlugField(max_length=50, unique = True)
|
||||
primary = models.BooleanField(default=False)
|
||||
|
||||
@ -260,9 +260,9 @@ class Entrance(TroggleModel):
|
||||
other_station = models.TextField(blank=True, null=True)
|
||||
other_description = models.TextField(blank=True,null=True)
|
||||
bearings = models.TextField(blank=True,null=True)
|
||||
url = models.CharField(max_length=200,blank=True,null=True)
|
||||
url = models.CharField(max_length=200,blank=True, null=True)
|
||||
filename = models.CharField(max_length=200)
|
||||
cached_primary_slug = models.CharField(max_length=200,blank=True,null=True)
|
||||
cached_primary_slug = models.CharField(max_length=200,blank=True, null=True)
|
||||
|
||||
def __str__(self):
|
||||
return str(self.slug())
|
||||
@ -415,11 +415,11 @@ 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)#MJG wants to KILL THIS (redundant information)
|
||||
expedition = models.ForeignKey(Expedition,blank=True,null=True) # yes this is double-
|
||||
expeditionday = models.ForeignKey("ExpeditionDay", null=True,on_delete=models.CASCADE)#MJG wants to KILL THIS (redundant information)
|
||||
expedition = models.ForeignKey(Expedition,blank=True, null=True,on_delete=models.CASCADE) # yes this is double-
|
||||
title = models.CharField(max_length=settings.MAX_LOGBOOK_ENTRY_TITLE_LENGTH)
|
||||
cave_slug = models.SlugField(max_length=50)
|
||||
place = models.CharField(max_length=100,blank=True,null=True,help_text="Only use this if you haven't chosen a cave")
|
||||
place = models.CharField(max_length=100,blank=True, null=True,help_text="Only use this if you haven't chosen a cave")
|
||||
text = models.TextField()
|
||||
slug = models.SlugField(max_length=50)
|
||||
filename = models.CharField(max_length=200,null=True)
|
||||
@ -488,10 +488,10 @@ class LogbookEntry(TroggleModel):
|
||||
class QM(TroggleModel):
|
||||
#based on qm.csv in trunk/expoweb/1623/204 which has the fields:
|
||||
#"Number","Grade","Area","Description","Page reference","Nearest station","Completion description","Comment"
|
||||
found_by = models.ForeignKey(LogbookEntry, related_name='QMs_found',blank=True, null=True )
|
||||
ticked_off_by = models.ForeignKey(LogbookEntry, related_name='QMs_ticked_off',null=True,blank=True)
|
||||
#cave = models.ForeignKey(Cave)
|
||||
#expedition = models.ForeignKey(Expedition)
|
||||
found_by = models.ForeignKey(LogbookEntry, related_name='QMs_found',blank=True, null=True,on_delete=models.CASCADE )
|
||||
ticked_off_by = models.ForeignKey(LogbookEntry, related_name='QMs_ticked_off',blank=True, null=True,on_delete=models.CASCADE)
|
||||
#cave = models.ForeignKey(Cave,on_delete=models.CASCADE)
|
||||
#expedition = models.ForeignKey(Expedition,on_delete=models.CASCADE)
|
||||
|
||||
number = models.IntegerField(help_text="this is the sequential number in the year", )
|
||||
GRADE_CHOICES=(
|
||||
@ -503,10 +503,10 @@ class QM(TroggleModel):
|
||||
)
|
||||
grade = models.CharField(max_length=1, choices=GRADE_CHOICES)
|
||||
location_description = models.TextField(blank=True)
|
||||
nearest_station_description = models.CharField(max_length=400,null=True,blank=True)
|
||||
nearest_station_name = models.CharField(max_length=200,blank=True,null=True)
|
||||
nearest_station = models.ForeignKey(SurvexStation,null=True,blank=True)
|
||||
area = models.CharField(max_length=100,blank=True,null=True)
|
||||
nearest_station_description = models.CharField(max_length=400,blank=True, null=True)
|
||||
nearest_station_name = models.CharField(max_length=200,blank=True, null=True)
|
||||
nearest_station = models.ForeignKey(SurvexStation,blank=True, null=True,on_delete=models.CASCADE)
|
||||
area = models.CharField(max_length=100,blank=True, null=True)
|
||||
completion_description = models.TextField(blank=True,null=True)
|
||||
comment=models.TextField(blank=True,null=True)
|
||||
|
||||
@ -541,18 +541,20 @@ def get_scan_path(instance, filename):
|
||||
# Single Person going on a trip, which may or may not be written up (accounts for different T/U for people in same logbook entry)
|
||||
#
|
||||
class PersonTrip(TroggleModel):
|
||||
personexpedition = models.ForeignKey("PersonExpedition",null=True)
|
||||
personexpedition = models.ForeignKey("PersonExpedition",null=True,on_delete=models.CASCADE)
|
||||
|
||||
#expeditionday = models.ForeignKey("ExpeditionDay")#MJG wants to KILL THIS (redundant information)
|
||||
#expeditionday = models.ForeignKey("ExpeditionDay",on_delete=models.CASCADE)#MJG wants to KILL THIS (redundant information)
|
||||
#date = models.DateField() #MJG wants to KILL THIS (redundant information)
|
||||
time_underground = models.FloatField(help_text="In decimal hours")
|
||||
logbook_entry = models.ForeignKey(LogbookEntry)
|
||||
logbook_entry = models.ForeignKey(LogbookEntry,on_delete=models.CASCADE)
|
||||
is_logbook_entry_author = models.BooleanField(default=False)
|
||||
|
||||
|
||||
# sequencing by person (difficult to solve locally)
|
||||
#persontrip_next = models.ForeignKey('PersonTrip', related_name='pnext', blank=True,null=True)#MJG wants to KILL THIS (and use funstion persontrip_next_auto)
|
||||
#persontrip_prev = models.ForeignKey('PersonTrip', related_name='pprev', blank=True,null=True)#MJG wants to KILL THIS(and use funstion persontrip_prev_auto)
|
||||
#persontrip_next = models.ForeignKey('PersonTrip', related_name='pnext',
|
||||
#blank=True,null=True,on_delete=models.CASCADE)#MJG wants to KILL THIS (and use funstion persontrip_next_auto)
|
||||
#persontrip_prev = models.ForeignKey('PersonTrip', related_name='pprev',
|
||||
#blank=True,null=True,on_delete=models.CASCADE)#MJG wants to KILL THIS(and use funstion persontrip_prev_auto)
|
||||
|
||||
def persontrip_next(self):
|
||||
futurePTs = PersonTrip.objects.filter(personexpedition = self.personexpedition, logbook_entry__date__gt = self.logbook_entry.date).order_by('logbook_entry__date').all()
|
||||
|
@ -1,5 +1,5 @@
|
||||
import os
|
||||
import urllib.parse
|
||||
from urllib.parse import urljoin
|
||||
import re
|
||||
|
||||
from django.db import models
|
||||
@ -16,8 +16,8 @@ from django.core.urlresolvers import reverse
|
||||
|
||||
class SurvexDirectory(models.Model):
|
||||
path = models.CharField(max_length=200)
|
||||
cave = models.ForeignKey('Cave', blank=True, null=True)
|
||||
primarysurvexfile = models.ForeignKey('SurvexFile', related_name='primarysurvexfile', blank=True, null=True)
|
||||
cave = models.ForeignKey('Cave', blank=True, null=True,on_delete=models.CASCADE)
|
||||
primarysurvexfile = models.ForeignKey('SurvexFile', related_name='primarysurvexfile', blank=True, null=True,on_delete=models.CASCADE)
|
||||
# could also include files in directory but not referenced
|
||||
|
||||
class Meta:
|
||||
@ -26,8 +26,8 @@ class SurvexDirectory(models.Model):
|
||||
|
||||
class SurvexFile(models.Model):
|
||||
path = models.CharField(max_length=200)
|
||||
survexdirectory = models.ForeignKey("SurvexDirectory", blank=True, null=True)
|
||||
cave = models.ForeignKey('Cave', blank=True, null=True)
|
||||
survexdirectory = models.ForeignKey("SurvexDirectory", blank=True, null=True,on_delete=models.CASCADE)
|
||||
cave = models.ForeignKey('Cave', blank=True, null=True,on_delete=models.CASCADE)
|
||||
|
||||
class Meta:
|
||||
ordering = ('id',)
|
||||
@ -53,7 +53,7 @@ class SurvexFile(models.Model):
|
||||
|
||||
|
||||
class SurvexEquate(models.Model):
|
||||
cave = models.ForeignKey('Cave', blank=True, null=True)
|
||||
cave = models.ForeignKey('Cave', blank=True, null=True,on_delete=models.CASCADE)
|
||||
|
||||
class SurvexStationLookUpManager(models.Manager):
|
||||
def lookup(self, name):
|
||||
@ -63,8 +63,8 @@ class SurvexStationLookUpManager(models.Manager):
|
||||
|
||||
class SurvexStation(models.Model):
|
||||
name = models.CharField(max_length=100)
|
||||
block = models.ForeignKey('SurvexBlock')
|
||||
equate = models.ForeignKey('SurvexEquate', blank=True, null=True)
|
||||
block = models.ForeignKey('SurvexBlock',on_delete=models.CASCADE)
|
||||
equate = models.ForeignKey('SurvexEquate', blank=True, null=True,on_delete=models.CASCADE)
|
||||
objects = SurvexStationLookUpManager()
|
||||
x = models.FloatField(blank=True, null=True)
|
||||
y = models.FloatField(blank=True, null=True)
|
||||
@ -82,10 +82,10 @@ class SurvexStation(models.Model):
|
||||
return r
|
||||
|
||||
# class SurvexLeg(models.Model):
|
||||
# block = models.ForeignKey('SurvexBlock')
|
||||
# #title = models.ForeignKey('SurvexTitle')
|
||||
# stationfrom = models.ForeignKey('SurvexStation', related_name='stationfrom')
|
||||
# stationto = models.ForeignKey('SurvexStation', related_name='stationto')
|
||||
# block = models.ForeignKey('SurvexBlock',on_delete=models.CASCADE)
|
||||
# #title = models.ForeignKey('SurvexTitle',on_delete=models.CASCADE)
|
||||
# stationfrom = models.ForeignKey('SurvexStation', related_name='stationfrom',on_delete=models.CASCADE)
|
||||
# stationto = models.ForeignKey('SurvexStation', related_name='stationto',on_delete=models.CASCADE)
|
||||
# tape = models.FloatField()
|
||||
# compass = models.FloatField()
|
||||
# clino = models.FloatField()
|
||||
@ -111,25 +111,25 @@ class SurvexBlockLookUpManager(models.Manager):
|
||||
class SurvexBlock(models.Model):
|
||||
objects = SurvexBlockLookUpManager()
|
||||
name = models.CharField(max_length=100)
|
||||
parent = models.ForeignKey('SurvexBlock', blank=True, null=True)
|
||||
parent = models.ForeignKey('SurvexBlock', blank=True, null=True,on_delete=models.CASCADE)
|
||||
# text = models.TextField()
|
||||
cave = models.ForeignKey('Cave', blank=True, null=True)
|
||||
cave = models.ForeignKey('Cave', blank=True, null=True,on_delete=models.CASCADE)
|
||||
|
||||
date = models.DateField(blank=True, null=True)
|
||||
expeditionday = models.ForeignKey("ExpeditionDay", null=True)
|
||||
expedition = models.ForeignKey('Expedition', blank=True, null=True)
|
||||
expeditionday = models.ForeignKey("ExpeditionDay", null=True,on_delete=models.CASCADE)
|
||||
expedition = models.ForeignKey('Expedition', blank=True, null=True,on_delete=models.CASCADE)
|
||||
|
||||
survexfile = models.ForeignKey("SurvexFile", blank=True, null=True)
|
||||
survexfile = models.ForeignKey("SurvexFile", blank=True, null=True,on_delete=models.CASCADE)
|
||||
# begin_char = models.IntegerField() # code for where in the survex data files this block sits
|
||||
survexpath = models.CharField(max_length=200) # the path for the survex stations
|
||||
|
||||
survexscansfolder = models.ForeignKey("SurvexScansFolder", null=True)
|
||||
survexscansfolder = models.ForeignKey("SurvexScansFolder", null=True,on_delete=models.CASCADE)
|
||||
#refscandir = models.CharField(max_length=100)
|
||||
|
||||
legsall = models.IntegerField() # summary data for this block
|
||||
legssplay = models.IntegerField() # summary data for this block
|
||||
legssurfc = models.IntegerField() # summary data for this block
|
||||
totalleglength = models.FloatField()
|
||||
legsall = models.IntegerField(null=True) # summary data for this block
|
||||
legssplay = models.IntegerField(null=True) # summary data for this block
|
||||
legssurfc = models.IntegerField(null=True) # summary data for this block
|
||||
totalleglength = models.FloatField(null=True)
|
||||
|
||||
class Meta:
|
||||
ordering = ('id',)
|
||||
@ -163,9 +163,9 @@ class SurvexBlock(models.Model):
|
||||
return list(self.expeditionday.survexblock_set.all()).index(self)
|
||||
|
||||
class SurvexTitle(models.Model):
|
||||
survexblock = models.ForeignKey('SurvexBlock')
|
||||
survexblock = models.ForeignKey('SurvexBlock',on_delete=models.CASCADE)
|
||||
title = models.CharField(max_length=200)
|
||||
cave = models.ForeignKey('Cave', blank=True, null=True)
|
||||
cave = models.ForeignKey('Cave', blank=True, null=True,on_delete=models.CASCADE)
|
||||
|
||||
#
|
||||
# member of a SurvexBlock
|
||||
@ -183,14 +183,14 @@ ROLE_CHOICES = (
|
||||
)
|
||||
|
||||
class SurvexPersonRole(models.Model):
|
||||
survexblock = models.ForeignKey('SurvexBlock')
|
||||
survexblock = models.ForeignKey('SurvexBlock',on_delete=models.CASCADE)
|
||||
nrole = models.CharField(choices=ROLE_CHOICES, max_length=200, blank=True, null=True)
|
||||
# increasing levels of precision
|
||||
personname = models.CharField(max_length=100)
|
||||
person = models.ForeignKey('Person', blank=True, null=True)
|
||||
personexpedition = models.ForeignKey('PersonExpedition', blank=True, null=True)
|
||||
persontrip = models.ForeignKey('PersonTrip', blank=True, null=True)
|
||||
expeditionday = models.ForeignKey("ExpeditionDay", null=True)
|
||||
person = models.ForeignKey('Person', blank=True, null=True,on_delete=models.CASCADE)
|
||||
personexpedition = models.ForeignKey('PersonExpedition', blank=True, null=True,on_delete=models.CASCADE)
|
||||
persontrip = models.ForeignKey('PersonTrip', blank=True, null=True,on_delete=models.CASCADE)
|
||||
expeditionday = models.ForeignKey("ExpeditionDay", null=True,on_delete=models.CASCADE)
|
||||
|
||||
def __str__(self):
|
||||
return str(self.person) + " - " + str(self.survexblock) + " - " + str(self.nrole)
|
||||
@ -203,7 +203,7 @@ class SurvexScansFolder(models.Model):
|
||||
ordering = ('walletname',)
|
||||
|
||||
def get_absolute_url(self):
|
||||
return urllib.parse.urljoin(settings.URL_ROOT, reverse('surveyscansfolder', kwargs={"path":re.sub("#", "%23", self.walletname)}))
|
||||
return urljoin(settings.URL_ROOT, reverse('surveyscansfolder', kwargs={"path":re.sub("#", "%23", self.walletname)}))
|
||||
|
||||
def __str__(self):
|
||||
return str(self.walletname) + " (Survey Scans Folder)"
|
||||
@ -211,13 +211,13 @@ class SurvexScansFolder(models.Model):
|
||||
class SurvexScanSingle(models.Model):
|
||||
ffile = models.CharField(max_length=200)
|
||||
name = models.CharField(max_length=200)
|
||||
survexscansfolder = models.ForeignKey("SurvexScansFolder", null=True)
|
||||
survexscansfolder = models.ForeignKey("SurvexScansFolder", null=True,on_delete=models.CASCADE)
|
||||
|
||||
class Meta:
|
||||
ordering = ('name',)
|
||||
|
||||
def get_absolute_url(self):
|
||||
return urllib.parse.urljoin(settings.URL_ROOT, reverse('surveyscansingle', kwargs={"path":re.sub("#", "%23", self.survexscansfolder.walletname), "file":self.name}))
|
||||
return urljoin(settings.URL_ROOT, reverse('surveyscansingle', kwargs={"path":re.sub("#", "%23", self.survexscansfolder.walletname), "file":self.name}))
|
||||
|
||||
def __str__(self):
|
||||
return "Survey Scan Image: " + str(self.name) + " in " + str(self.survexscansfolder)
|
||||
|
@ -7,6 +7,6 @@ class Redirect(models.Model):
|
||||
|
||||
class EntranceRedirect(models.Model):
|
||||
originalURL = models.CharField(max_length=200)
|
||||
entrance = models.ForeignKey(Entrance)
|
||||
entrance = models.ForeignKey(Entrance,on_delete=models.CASCADE)
|
||||
def __str__(self):
|
||||
return self.entrance.slug
|
||||
|
Loading…
Reference in New Issue
Block a user