diff options
Diffstat (limited to 'expo')
-rw-r--r-- | expo/models.py | 28 | ||||
-rw-r--r-- | expo/models_survex.py | 12 |
2 files changed, 40 insertions, 0 deletions
diff --git a/expo/models.py b/expo/models.py index ee3179b..b8885ea 100644 --- a/expo/models.py +++ b/expo/models.py @@ -86,6 +86,34 @@ class PersonExpedition(models.Model): is_guest = models.BooleanField(default=False)
nickname = models.CharField(max_length=100,blank=True,null=True)
+ def GetPersonroles(self):
+ res = [ ]
+ for personrole in self.personrole_set.order_by('survex_block'):
+ if res and res[-1]['survexpath'] == personrole.survex_block.survexpath:
+ res[-1]['roles'] += ", " + str(personrole.role)
+ else:
+ res.append({'date':personrole.survex_block.date, 'survexpath':personrole.survex_block.survexpath, 'roles':str(personrole.role)})
+ print res
+ return res
+
+ def GetPersonChronology(self):
+ res = { }
+ for persontrip in self.persontrip_set.all():
+ a = res.setdefault(persontrip.date, { })
+ a.setdefault("persontrips", [ ]).append(persontrip)
+ for personrole in self.personrole_set.all():
+ a = res.setdefault(personrole.survex_block.date, { })
+ b = a.setdefault("personroles", { })
+ survexpath = personrole.survex_block.survexpath
+
+ if b.get(survexpath):
+ b[survexpath] += ", " + str(personrole.role)
+ else:
+ b[survexpath] = str(personrole.role)
+# needs converting dict into list
+ return sorted(res.items())
+
+
# deprecated
def GetPossibleNameForms(self):
res = [ ]
diff --git a/expo/models_survex.py b/expo/models_survex.py index 4b65357..1a7251f 100644 --- a/expo/models_survex.py +++ b/expo/models_survex.py @@ -27,6 +27,9 @@ class SurvexBlock(models.Model): end_file = models.CharField(max_length=200, blank=True, null=True)
end_char = models.IntegerField(blank=True, null=True)
+ class Meta:
+ ordering = ('date', 'survexpath')
+
def __unicode__(self):
return unicode(self.name)
@@ -37,6 +40,15 @@ class SurvexBlock(models.Model): fin.close()
return res
+ def GetPersonroles(self):
+ res = [ ]
+ for personrole in self.personrole_set.order_by('personexpedition'):
+ if res and res[-1]['person'] == personrole.personexpedition.person:
+ res[-1]['roles'] += ", " + str(personrole.role)
+ else:
+ res.append({'person':personrole.personexpedition.person, 'expeditionyear':personrole.personexpedition.expedition.year, 'roles':str(personrole.role)})
+ print res
+ return res
class PersonRole(models.Model):
|