forked from expo/troggle
[svn] new person expedition
Copied from http://cucc@cucc.survex.com/svn/trunk/expoweb/troggle/, rev. 8189 by julian @ 1/18/2009 7:50 PM
This commit is contained in:
parent
da154a736b
commit
0f5109cb09
@ -45,6 +45,8 @@ class Person(models.Model):
|
|||||||
is_vfho = models.BooleanField(help_text="VFHO is the Vereines für Höhlenkunde in Obersteier, a nearby Austrian caving club.")
|
is_vfho = models.BooleanField(help_text="VFHO is the Vereines für Höhlenkunde in Obersteier, a nearby Austrian caving club.")
|
||||||
mug_shot = models.CharField(max_length=100, blank=True,null=True)
|
mug_shot = models.CharField(max_length=100, blank=True,null=True)
|
||||||
blurb = models.TextField(blank=True,null=True)
|
blurb = models.TextField(blank=True,null=True)
|
||||||
|
href = models.CharField(max_length=200)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name_plural = "People"
|
verbose_name_plural = "People"
|
||||||
|
|
||||||
@ -53,12 +55,6 @@ class Person(models.Model):
|
|||||||
return "%s %s" % (self.first_name, self.last_name)
|
return "%s %s" % (self.first_name, self.last_name)
|
||||||
return self.first_name
|
return self.first_name
|
||||||
|
|
||||||
# this should be a member entry
|
|
||||||
def href(self):
|
|
||||||
if self.last_name:
|
|
||||||
return "%s_%s" % (self.first_name.lower(), self.last_name.lower())
|
|
||||||
return self.first_name.lower()
|
|
||||||
|
|
||||||
|
|
||||||
class PersonExpedition(models.Model):
|
class PersonExpedition(models.Model):
|
||||||
expedition = models.ForeignKey(Expedition)
|
expedition = models.ForeignKey(Expedition)
|
||||||
@ -208,6 +204,7 @@ class LogbookEntry(models.Model):
|
|||||||
cave = models.ForeignKey(Cave,blank=True,null=True)
|
cave = models.ForeignKey(Cave,blank=True,null=True)
|
||||||
place = models.CharField(max_length=100,blank=True,null=True)
|
place = models.CharField(max_length=100,blank=True,null=True)
|
||||||
text = models.TextField()
|
text = models.TextField()
|
||||||
|
href = models.CharField(max_length=100)
|
||||||
|
|
||||||
logbookentry_next = models.ForeignKey('LogbookEntry', related_name='pnext', blank=True,null=True)
|
logbookentry_next = models.ForeignKey('LogbookEntry', related_name='pnext', blank=True,null=True)
|
||||||
logbookentry_prev = models.ForeignKey('LogbookEntry', related_name='pprev', blank=True,null=True)
|
logbookentry_prev = models.ForeignKey('LogbookEntry', related_name='pprev', blank=True,null=True)
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
|
import troggle.settings as settings
|
||||||
|
import os
|
||||||
|
|
||||||
class SurvexBlock(models.Model):
|
class SurvexBlock(models.Model):
|
||||||
name = models.CharField(max_length=100, blank=True, null=True)
|
name = models.CharField(max_length=100, blank=True, null=True)
|
||||||
@ -11,15 +12,28 @@ class SurvexBlock(models.Model):
|
|||||||
end_year = models.IntegerField(blank=True, null=True)
|
end_year = models.IntegerField(blank=True, null=True)
|
||||||
end_month = models.IntegerField(blank=True, null=True)
|
end_month = models.IntegerField(blank=True, null=True)
|
||||||
end_day = models.IntegerField(blank=True, null=True)
|
end_day = models.IntegerField(blank=True, null=True)
|
||||||
|
|
||||||
person = models.ManyToManyField('Person', through='PersonRole', blank=True, null=True)
|
person = models.ManyToManyField('Person', through='PersonRole', blank=True, null=True)
|
||||||
|
|
||||||
begin_file = models.CharField(max_length=200)
|
begin_file = models.CharField(max_length=200)
|
||||||
begin_char = models.IntegerField()
|
begin_char = models.IntegerField()
|
||||||
end_file = models.CharField(max_length=200, blank=True, null=True)
|
end_file = models.CharField(max_length=200, blank=True, null=True)
|
||||||
end_char = models.IntegerField(blank=True, null=True)
|
end_char = models.IntegerField(blank=True, null=True)
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return unicode(self.name)
|
return unicode(self.name)
|
||||||
|
|
||||||
|
def filecontents(self):
|
||||||
|
f = os.path.join(settings.SURVEX_DATA, self.begin_file)
|
||||||
|
fin = open(f)
|
||||||
|
res = fin.read()
|
||||||
|
fin.close()
|
||||||
|
return res
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class PersonRole(models.Model):
|
class PersonRole(models.Model):
|
||||||
|
personexpedition = models.ForeignKey('PersonExpedition')
|
||||||
person = models.ForeignKey('Person')
|
person = models.ForeignKey('Person')
|
||||||
survex_block = models.ForeignKey('SurvexBlock')
|
survex_block = models.ForeignKey('SurvexBlock')
|
||||||
role = models.ForeignKey('Role')
|
role = models.ForeignKey('Role')
|
||||||
|
@ -22,17 +22,19 @@ def expedition(request, expeditionname):
|
|||||||
return render_to_response('expedition.html', {'expedition': expedition, 'expedition_next':expedition_next, 'expedition_prev':expedition_prev, 'logbookentries':logbookentries, 'message':message, 'settings': settings})
|
return render_to_response('expedition.html', {'expedition': expedition, 'expedition_next':expedition_next, 'expedition_prev':expedition_prev, 'logbookentries':logbookentries, 'message':message, 'settings': settings})
|
||||||
|
|
||||||
def person(request, name):
|
def person(request, name):
|
||||||
persons = Person.objects.all()
|
person = Person.objects.get(href=name)
|
||||||
for person in persons:
|
|
||||||
if person.href() == name:
|
|
||||||
break
|
|
||||||
person = None
|
|
||||||
return render_to_response('person.html', {'person': person, 'settings': settings})
|
return render_to_response('person.html', {'person': person, 'settings': settings})
|
||||||
|
|
||||||
|
def personexpedition(request, name, expeditionname):
|
||||||
|
person = Person.objects.get(href=name)
|
||||||
|
year = int(expeditionname)
|
||||||
|
expedition = Expedition.objects.get(year=year)
|
||||||
|
personexpedition = person.personexpedition_set.get(expedition=expedition)
|
||||||
|
return render_to_response('personexpedition.html', {'personexpedition': personexpedition, 'settings': settings})
|
||||||
|
|
||||||
|
|
||||||
def logbookentry(request, logbookentry_id):
|
def logbookentry(request, logbookentry_id):
|
||||||
logbookentry = LogbookEntry.objects.filter(id = logbookentry_id)[0]
|
logbookentry = LogbookEntry.objects.filter(href = logbookentry_id)[0]
|
||||||
|
|
||||||
|
|
||||||
return render_to_response('logbookentry.html', {'logbookentry': logbookentry, 'settings': settings})
|
return render_to_response('logbookentry.html', {'logbookentry': logbookentry, 'settings': settings})
|
||||||
|
|
||||||
|
|
||||||
|
@ -169,10 +169,20 @@ def Parseloghtml01(year, expedition, txt):
|
|||||||
triptitles = triptitle.split(" - ")
|
triptitles = triptitle.split(" - ")
|
||||||
tripcave = triptitles[0].strip()
|
tripcave = triptitles[0].strip()
|
||||||
|
|
||||||
ltriptext = re.sub("</p>", "", triptext)
|
ltriptext = triptext
|
||||||
|
|
||||||
|
mtail = re.search('(?:<a href="[^"]*">[^<]*</a>|\s|/|-|&|</?p>|\((?:same day|\d+)\))*$', ltriptext)
|
||||||
|
if mtail:
|
||||||
|
#print mtail.group(0)
|
||||||
|
ltriptext = ltriptext[:mtail.start(0)]
|
||||||
|
ltriptext = re.sub("</p>", "", ltriptext)
|
||||||
ltriptext = re.sub("\s*?\n\s*", " ", ltriptext)
|
ltriptext = re.sub("\s*?\n\s*", " ", ltriptext)
|
||||||
ltriptext = re.sub("<p>", "\n\n", ltriptext).strip()
|
ltriptext = re.sub("<p>|<br>", "\n\n", ltriptext).strip()
|
||||||
#ltriptext = re.sub("[^\s0-9a-zA-Z\-.,:;'!]", "NONASCII", ltriptext)
|
#ltriptext = re.sub("[^\s0-9a-zA-Z\-.,:;'!]", "NONASCII", ltriptext)
|
||||||
|
ltriptext = re.sub("</?u>", "_", ltriptext)
|
||||||
|
ltriptext = re.sub("</?i>", "''", ltriptext)
|
||||||
|
ltriptext = re.sub("</?b>", "'''", ltriptext)
|
||||||
|
|
||||||
|
|
||||||
#print ldate, trippeople.strip()
|
#print ldate, trippeople.strip()
|
||||||
# could includ the tripid (url link for cross referencing)
|
# could includ the tripid (url link for cross referencing)
|
||||||
@ -246,6 +256,28 @@ def SetDatesFromLogbookEntries(expedition):
|
|||||||
expedition.date_to = max([personexpedition.date_to for personexpedition in expedition.personexpedition_set.all() if personexpedition.date_to] or [None])
|
expedition.date_to = max([personexpedition.date_to for personexpedition in expedition.personexpedition_set.all() if personexpedition.date_to] or [None])
|
||||||
expedition.save()
|
expedition.save()
|
||||||
|
|
||||||
|
# order by appearance in the logbook (done by id)
|
||||||
|
lprevlogbookentry = None
|
||||||
|
for logbookentry in expedition.logbookentry_set.order_by('id'):
|
||||||
|
logbookentry.logbookentry_prev = lprevlogbookentry
|
||||||
|
if lprevlogbookentry:
|
||||||
|
lprevlogbookentry.logbookentry_next = logbookentry
|
||||||
|
lprevlogbookentry.save()
|
||||||
|
logbookentry.logbookentry_next = None
|
||||||
|
logbookentry.save()
|
||||||
|
lprevlogbookentry = logbookentry
|
||||||
|
|
||||||
|
# order by date for setting the references
|
||||||
|
lprevlogbookentry = None
|
||||||
|
for logbookentry in expedition.logbookentry_set.order_by('date'):
|
||||||
|
if lprevlogbookentry and lprevlogbookentry.date == logbookentry.date:
|
||||||
|
mcount = re.search("_(\d+)$", lprevlogbookentry.href)
|
||||||
|
mc = mcount and (int(mcount.group(1)) + 1) or 1
|
||||||
|
logbookentry.href = "%s_%d" % (logbookentry.date, mc)
|
||||||
|
else:
|
||||||
|
logbookentry.href = "%s" % logbookentry.date
|
||||||
|
logbookentry.save()
|
||||||
|
lprevlogbookentry = logbookentry
|
||||||
|
|
||||||
|
|
||||||
def LoadLogbookForExpedition(expedition):
|
def LoadLogbookForExpedition(expedition):
|
||||||
@ -268,6 +300,7 @@ def LoadLogbooks():
|
|||||||
models.LogbookEntry.objects.all().delete()
|
models.LogbookEntry.objects.all().delete()
|
||||||
expowebbase = os.path.join(settings.EXPOWEB, "years")
|
expowebbase = os.path.join(settings.EXPOWEB, "years")
|
||||||
#yearlinks = [ ("2001", "2001/log.htm", Parseloghtml01), ] #overwrite
|
#yearlinks = [ ("2001", "2001/log.htm", Parseloghtml01), ] #overwrite
|
||||||
|
#yearlinks = [ ("1997", "1997/log.htm", Parseloghtml01),] # overwrite
|
||||||
|
|
||||||
for year, lloc, parsefunc in yearlinks:
|
for year, lloc, parsefunc in yearlinks:
|
||||||
expedition = models.Expedition.objects.filter(year = year)[0]
|
expedition = models.Expedition.objects.filter(year = year)[0]
|
||||||
|
@ -81,8 +81,11 @@ def LoadPersonsExpos():
|
|||||||
print firstname, lastname, "NNN", nickname
|
print firstname, lastname, "NNN", nickname
|
||||||
#assert lastname == person[header[""]], person
|
#assert lastname == person[header[""]], person
|
||||||
|
|
||||||
|
href = firstname.lower()
|
||||||
|
if lastname:
|
||||||
|
href += "_" + lastname.lower()
|
||||||
pObject = models.Person(first_name = firstname,
|
pObject = models.Person(first_name = firstname,
|
||||||
last_name = lastname,
|
last_name = lastname, href=href,
|
||||||
is_vfho = person[header["VfHO member"]],
|
is_vfho = person[header["VfHO member"]],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -70,7 +70,8 @@ def make_model(name, parent, iter_lines, sf, c, l):
|
|||||||
and names.strip("\t").strip(" ") != "Both"])
|
and names.strip("\t").strip(" ") != "Both"])
|
||||||
for name in re.split("&|/|\+|,|;", names):
|
for name in re.split("&|/|\+|,|;", names):
|
||||||
try:
|
try:
|
||||||
models.PersonRole(person = exp.GetPersonExpedition(name.strip(" ")).person,
|
models.PersonRole(personexpedition = exp.GetPersonExpedition(name.strip(" ")),
|
||||||
|
person = exp.GetPersonExpedition(name.strip(" ")).person,
|
||||||
survex_block = m,
|
survex_block = m,
|
||||||
role = models.Role.objects.get(name = roles[role])).save()
|
role = models.Role.objects.get(name = roles[role])).save()
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
<tr><th>Caver</th><th>From</th><th>To</th></tr>
|
<tr><th>Caver</th><th>From</th><th>To</th></tr>
|
||||||
{% for personexpedition in expedition.personexpedition_set.all %}
|
{% for personexpedition in expedition.personexpedition_set.all %}
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="{% url person personexpedition.person.href%}">{{personexpedition.person}}</a></td>
|
<td><a href="{% url personexpedition personexpedition.person.href personexpedition.expedition.year%}">{{personexpedition.person}}</a></td>
|
||||||
<td>{{personexpedition.date_from}}</td>
|
<td>{{personexpedition.date_from}}</td>
|
||||||
<td>{{personexpedition.date_to}}</td>
|
<td>{{personexpedition.date_to}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -36,7 +36,7 @@
|
|||||||
{% for logbookentry in logbookentries %}
|
{% for logbookentry in logbookentries %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{logbookentry.date}}</td>
|
<td>{{logbookentry.date}}</td>
|
||||||
<td><a href="{% url logbookentry logbookentry.id %}">{{logbookentry.title|safe}}</td>
|
<td><a href="{% url logbookentry logbookentry.href %}">{{logbookentry.title|safe}}</td>
|
||||||
<td><a href="{% url person logbookentry.author.person.href%}">{{logbookentry.author.name}}</a></td>
|
<td><a href="{% url person logbookentry.author.person.href%}">{{logbookentry.author.name}}</a></td>
|
||||||
<td>{{logbookentry.place}}</td>
|
<td>{{logbookentry.place}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -10,12 +10,22 @@
|
|||||||
<p><a href="{% url expedition logbookentry.expedition.year %}">{{logbookentry.expedition.name}}</a></p>
|
<p><a href="{% url expedition logbookentry.expedition.year %}">{{logbookentry.expedition.name}}</a></p>
|
||||||
<p>place: {{logbookentry.place}}</p>
|
<p>place: {{logbookentry.place}}</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
{% if logbookentry.logbookentry_prev %}
|
||||||
|
<a href="{% url logbookentry logbookentry.logbookentry_prev.href %}">{{logbookentry.logbookentry_prev.date}}</a>
|
||||||
|
{% endif %}
|
||||||
|
{% if logbookentry.logbookentry_next %}
|
||||||
|
<a href="{% url logbookentry logbookentry.logbookentry_next.href %}">{{logbookentry.logbookentry_next.date}}</a>
|
||||||
|
{% endif %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<table class="cavers">
|
<table class="cavers">
|
||||||
<tr><th>Caver</th><th>T/U</th><th>Prev</th><th>Next</th></tr>
|
<tr><th>Caver</th><th>T/U</th><th>Prev</th><th>Next</th></tr>
|
||||||
{% for persontrip in logbookentry.persontrip_set.all %}
|
{% for persontrip in logbookentry.persontrip_set.all %}
|
||||||
<tr>
|
<tr>
|
||||||
{% ifequal persontrip.person_expedition logbookentry.author %}
|
{% ifequal persontrip.person_expedition logbookentry.author %}
|
||||||
<td class="author">
|
<td class="author">
|
||||||
|
{{persontrip.person_expedition.person.personrole_set.count}}
|
||||||
{% else %}
|
{% else %}
|
||||||
<td>
|
<td>
|
||||||
{% endifequal %}
|
{% endifequal %}
|
||||||
@ -30,12 +40,12 @@
|
|||||||
|
|
||||||
<td>
|
<td>
|
||||||
{% if persontrip.persontrip_prev %}
|
{% if persontrip.persontrip_prev %}
|
||||||
<a href="{% url logbookentry persontrip.persontrip_prev.logbook_entry.id %}">{{persontrip.persontrip_prev.date}}</a>
|
<a href="{% url logbookentry persontrip.persontrip_prev.logbook_entry.href %}">{{persontrip.persontrip_prev.date}}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{% if persontrip.persontrip_next %}
|
{% if persontrip.persontrip_next %}
|
||||||
<a href="{% url logbookentry persontrip.persontrip_next.logbook_entry.id %}">{{persontrip.persontrip_next.date}}</a>
|
<a href="{% url logbookentry persontrip.persontrip_next.logbook_entry.href %}">{{persontrip.persontrip_next.date}}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
36
templates/personexpedition.html
Normal file
36
templates/personexpedition.html
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
{% load wiki_markup %}
|
||||||
|
|
||||||
|
{% block title %}Person {{personexpedition.person|wiki_to_html_short}} for {{personexpedition.expedition}}{% endblock %}
|
||||||
|
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h2>{{personexpedition.person}}: {{personexpedition.expedition}} ({{personexpedition.date_from}} - {{personexpedition.date_to}})</h2>
|
||||||
|
|
||||||
|
<div id="col2">
|
||||||
|
<table class="survexcontibutions">
|
||||||
|
<tr><th>Date</th><th>Place</th><th>Role</th></tr>
|
||||||
|
{% for personrole in personexpedition.personrole_set.all %}
|
||||||
|
<tr>
|
||||||
|
<td>{{personrole.survex_block.start_month}}</td>
|
||||||
|
<td>{{personrole.survex_block.name}}</td>
|
||||||
|
<td>{{personrole.role}}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="col1">
|
||||||
|
<table class="expeditionlogbooks">
|
||||||
|
<tr><th>Date</th><th>Title</th><th>Place</th></tr>
|
||||||
|
{% for persontrip in personexpedition.persontrip_set.all %}
|
||||||
|
<tr>
|
||||||
|
<td>{{persontrip.date}}</td>
|
||||||
|
<td><a href="{% url logbookentry persontrip.logbook_entry.href %}">{{persontrip.logbook_entry.title|safe}}</td>
|
||||||
|
<td>{{persontrip.place}}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock %}
|
3
urls.py
3
urls.py
@ -23,10 +23,11 @@ urlpatterns = patterns('',
|
|||||||
url(r'^personindex$', personindex, name="personindex"),
|
url(r'^personindex$', personindex, name="personindex"),
|
||||||
url(r'^person/(.+)$', person, name="person"),
|
url(r'^person/(.+)$', person, name="person"),
|
||||||
|
|
||||||
url(r'^logbookentry/(\d+)$', logbookentry, name="logbookentry"),
|
url(r'^logbookentry/(.+)$', logbookentry, name="logbookentry"),
|
||||||
url(r'^logbooksearch/(.*)/?$', logbookSearch),
|
url(r'^logbooksearch/(.*)/?$', logbookSearch),
|
||||||
|
|
||||||
url(r'^expedition/(\d+)$', expedition, name="expedition"),
|
url(r'^expedition/(\d+)$', expedition, name="expedition"),
|
||||||
|
url(r'^personexpedition/(.+?)/(\d+)$', personexpedition, name="personexpedition"),
|
||||||
|
|
||||||
url(r'^statistics/?$', stats, name="stats"),
|
url(r'^statistics/?$', stats, name="stats"),
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user