diff options
Diffstat (limited to 'expo')
-rw-r--r-- | expo/models.py | 27 | ||||
-rw-r--r-- | expo/view_surveys.py | 51 | ||||
-rw-r--r-- | expo/views_logbooks.py | 4 | ||||
-rw-r--r-- | expo/views_other.py | 3 |
4 files changed, 62 insertions, 23 deletions
diff --git a/expo/models.py b/expo/models.py index 59d0e11..bf8e2db 100644 --- a/expo/models.py +++ b/expo/models.py @@ -76,7 +76,13 @@ class Person(TroggleModel): mug_shot = models.CharField(max_length=100, blank=True,null=True)
blurb = models.TextField(blank=True,null=True)
- #href = models.CharField(max_length=200)
+
+ # this has been put back in so that the personexpedition links work
+ # if you're going to insist on replace something that works with an over-complex, dire, inevitably-flawed pointless
+ # and unnecessary regexp like (?P<first_name>[A-Z]*[a-z\-\']*)[^a-zA-Z]*(?P<last_name>[A-Z]*[a-z\-]*)/?
+ # for no reason at all, at least make it work everywhere!
+ href = models.CharField(max_length=200)
+
orderref = models.CharField(max_length=200) # for alphabetic
#the below have been removed and made methods. I'm not sure what the b in bisnotable stands for. - AC 16 Feb
@@ -113,14 +119,14 @@ class Person(TroggleModel): def bisnotable(self):
return self.notability > 0.3
- #def Sethref(self):
- #if self.last_name:
- #self.href = self.first_name.lower() + "_" + self.last_name.lower()
- #self.orderref = self.last_name + " " + self.first_name
- #else:
- # self.href = self.first_name.lower()
- #self.orderref = self.first_name
- #self.notability = 0.0 # set temporarily
+ def Sethref(self):
+ if self.last_name:
+ self.href = self.first_name.lower() + "_" + self.last_name.lower()
+ self.orderref = self.last_name + " " + self.first_name
+ else:
+ self.href = self.first_name.lower()
+ self.orderref = self.first_name
+ self.notability = 0.0 # set temporarily
class PersonExpedition(TroggleModel):
@@ -209,6 +215,9 @@ class LogbookEntry(TroggleModel): cave = models.ForeignKey('Cave',blank=True,null=True)
place = models.CharField(max_length=100,blank=True,null=True)
text = models.TextField()
+
+ # having this commented out prevents us from ever devising a regular URL, possibly based on the date of the trip
+ # and then disambiguated depending on how many trips there are
#href = models.CharField(max_length=100)
diff --git a/expo/view_surveys.py b/expo/view_surveys.py index 388efa9..8bf3cc3 100644 --- a/expo/view_surveys.py +++ b/expo/view_surveys.py @@ -94,35 +94,64 @@ def jgtfile(request, f): return HttpResponse("unknown file::%s::" % f, mimetype = "text/plain")
-def SaveImageInDir(name, imgdir, fdata):
- print ("hihihihi", fdata, settings.SURVEYS)
- print os.path.join(settings.SURVEYS, imgdir)
- if not os.path.isdir(os.path.join(settings.SURVEYS, imgdir)):
- print "*** Must have directory '%s' in '%s'" % (imgdir, settings.SURVEYS)
+def UniqueFile(fname):
while True:
- fname = os.path.join(settings.SURVEYS, imgdir, name)
if not os.path.exists(fname):
break
- mname = re.match("(.*?)(?:-(\d+))?\.(png|jpg|jpeg)$(?i)", name)
+ mname = re.match("(.*?)(?:-(\d+))?\.(png|jpg|jpeg)$(?i)", fname)
if mname:
- name = "%s-%d.%s" % (mname.group(1), int(mname.group(2) or "0") + 1, mname.group(3))
+ fname = "%s-%d.%s" % (mname.group(1), int(mname.group(2) or "0") + 1, mname.group(3))
+ return fname
+
+
+# join it all up and then split them off for the directories that don't exist
+# anyway, this mkdir doesn't work
+def SaveImageInDir(name, imgdir, project, fdata, bbinary):
+ print ("hihihihi", fdata, settings.SURVEYS)
+ fimgdir = os.path.join(settings.SURVEYS, imgdir)
+ if not os.path.isdir(fimgdir):
+ print "*** Making directory", fimgdir
+ os.path.mkdir(fimgdir)
+ fprojdir = os.path.join(fimgdir, project)
+ if not os.path.isdir(fprojdir):
+ print "*** Making directory", fprojdir
+ os.path.mkdir(fprojdir)
+ print "hhh"
+
+ fname = os.path.join(fprojdir, name)
+ print fname, "fff"
+ fname = UniqueFile(fname)
+
+ p2, p1 = os.path.split(fname)
+ p3, p2 = os.path.split(p2)
+ p4, p3 = os.path.split(p3)
+ res = os.path.join(p3, p2, p1)
+
print "saving file", fname
- fout = open(fname, "wb")
+ fout = open(fname, (bbinary and "wb" or "w"))
fout.write(fdata.read())
fout.close()
res = os.path.join(imgdir, name)
return res.replace("\\", "/")
+
+# do we want to consider saving project/field rather than field/project
def jgtuploadfile(request):
filesuploaded = [ ]
- project, user, tunnelversion = request.POST["project"], request.POST["user"], request.POST["tunnelversion"]
+ project, user, password, tunnelversion = request.POST["tunnelproject"], request.POST["tunneluser"], request.POST["tunnelpassword"], request.POST["tunnelversion"]
print (project, user, tunnelversion)
for uploadedfile in request.FILES.values():
if uploadedfile.field_name in ["tileimage", "backgroundimage"] and \
uploadedfile.content_type in ["image/png", "image/jpeg"]:
fname = user + "_" + re.sub("[\\\\/]", "-", uploadedfile.name) # very escaped \
print fname
- fileuploaded = SaveImageInDir(fname, uploadedfile.field_name, uploadedfile)
+ fileuploaded = SaveImageInDir(fname, uploadedfile.field_name, project, uploadedfile, True)
+ filesuploaded.append(settings.URL_ROOT + "/jgtfile/" + fileuploaded)
+ if uploadedfile.field_name in ["sketch"] and \
+ uploadedfile.content_type in ["text/plain"]:
+ fname = user + "_" + re.sub("[\\\\/]", "-", uploadedfile.name) # very escaped \
+ print fname
+ fileuploaded = SaveImageInDir(fname, uploadedfile.field_name, project, uploadedfile, False)
filesuploaded.append(settings.URL_ROOT + "/jgtfile/" + fileuploaded)
#print "FF", request.FILES
#print ("FFF", request.FILES.values())
diff --git a/expo/views_logbooks.py b/expo/views_logbooks.py index fae7491..ab85318 100644 --- a/expo/views_logbooks.py +++ b/expo/views_logbooks.py @@ -63,8 +63,8 @@ def person(request, first_name='', last_name=''): # person = Person.objects.get(href=name)
#
-def personexpedition(request, first_name='', last_name='', year=''):
- person = Person.objects.get(first_name = first_name, last_name = last_name)
+def personexpedition(request, href, year):
+ person = Person.objects.get(href=href)
expedition = Expedition.objects.get(year=year)
personexpedition = person.personexpedition_set.get(expedition=expedition)
return render_response(request,'personexpedition.html', {'personexpedition': personexpedition, })
diff --git a/expo/views_other.py b/expo/views_other.py index d890a6e..9852ccc 100644 --- a/expo/views_other.py +++ b/expo/views_other.py @@ -29,7 +29,8 @@ def frontpage(request): #'randSent':randSent.randomLogbookSentence(),
expeditions = Expedition.objects.order_by("-year")
- return render_response(request,'index.html', {'expeditions':expeditions, 'all':'all', "message":message})
+ totallogbookentries = LogbookEntry.objects.count()
+ return render_response(request,'index.html', {'expeditions':expeditions, 'all':'all', 'totallogbookentries':totallogbookentries, "message":message})
def calendar(request,year):
week=['S','S','M','T','W','T','F']
|