diff --git a/RIGS/models.py b/RIGS/models.py
index 6c4c9c9c..31ab3e86 100644
--- a/RIGS/models.py
+++ b/RIGS/models.py
@@ -9,7 +9,9 @@ from django.utils.encoding import python_2_unicode_compatible
import reversion
import string
import random
+from collections import Counter
from django.core.urlresolvers import reverse_lazy
+from django.core.exceptions import ValidationError
from decimal import Decimal
@@ -91,9 +93,13 @@ class Person(models.Model, RevisionMixin):
def organisations(self):
o = []
for e in Event.objects.filter(person=self).select_related('organisation'):
- if e.organisation and e.organisation not in o:
+ if e.organisation:
o.append(e.organisation)
- return o
+
+ #Count up occurances and put them in descending order
+ c = Counter(o)
+ stats = c.most_common()
+ return stats
@property
def latest_events(self):
@@ -131,9 +137,13 @@ class Organisation(models.Model, RevisionMixin):
def persons(self):
p = []
for e in Event.objects.filter(organisation=self).select_related('person'):
- if e.person and e.person not in p:
+ if e.person:
p.append(e.person)
- return p
+
+ #Count up occurances and put them in descending order
+ c = Counter(p)
+ stats = c.most_common()
+ return stats
@property
def latest_events(self):
@@ -348,6 +358,20 @@ class Event(models.Model, RevisionMixin):
def __str__(self):
return str(self.pk) + ": " + self.name
+ def clean(self):
+ if self.end_date and self.start_date > self.end_date:
+ raise ValidationError('Unless you\'ve invented time travel, the event can\'t finish before it has started.')
+
+ startEndSameDay = not self.end_date or self.end_date == self.start_date
+ hasStartAndEnd = self.has_start_time and self.has_end_time
+ if startEndSameDay and hasStartAndEnd and self.start_time > self.end_time:
+ raise ValidationError('Unless you\'ve invented time travel, the event can\'t finish before it has started.')
+
+ def save(self, *args, **kwargs):
+ """Call :meth:`full_clean` before saving."""
+ self.full_clean()
+ super(Event, self).save(*args, **kwargs)
+
class Meta:
permissions = (
('view_event', 'Can view Events'),
diff --git a/RIGS/templates/RIGS/organisation_detail.html b/RIGS/templates/RIGS/organisation_detail.html
index 098d4a42..7743086c 100644
--- a/RIGS/templates/RIGS/organisation_detail.html
+++ b/RIGS/templates/RIGS/organisation_detail.html
@@ -1,82 +1,109 @@
{% extends request.is_ajax|yesno:"base_ajax.html,base.html" %}
{% load widget_tweaks %}
-{% block title %}{{ object.name }}{% endblock %}
+{% block title %}Organisation | {{ object.name }}{% endblock %}
{% block content %}
- {% if not request.is_ajax %}
-