Generated: Fri 2015-05-29 13:58 AST
Source file: /home/quincy/Code/valuehorizon-people/people/models.py
Stats: 24 executed, 18 missed, 7 excluded, 50 ignored
from django.db import modelsfrom countries.models import Countryclass Person(models.Model): """ Represents a person, such as John Doe, Joe Public, or Jiminy Cricket. """ GENDER_CHOICES = ( (u'M', u'Male'), (u'F', u'Female'), ) gender = models.CharField(max_length=1, choices=GENDER_CHOICES) TITLE_CHOICES = ( (u'DR', u'Dr.'), (u'MR', u'Mr.'), (u'MS', u'Ms.'), (u'MRS', u'Mrs.'), (u'SIR', u'Sir'), (u'LORD', u'Lord'), ) title = models.CharField(max_length=10, choices=TITLE_CHOICES) first_name = models.CharField(max_length=255) last_name = models.CharField(max_length=255) other_names = models.CharField(max_length=255, blank=True, help_text="Middle names, comma separated") date_of_birth = models.DateField(null=True, blank=True) date_of_death = models.DateField(null=True, blank=True) profile = models.TextField(blank=True, help_text="Description of Person") is_deceased = models.BooleanField(default=False) nationality = models.ManyToManyField(Country, blank=True, null=True, related_name="nationalities") # Cached Data full_name = models.CharField(max_length=255, blank=True, editable=False) date_modified = models.DateTimeField(null=True, blank=True, editable=False, auto_now=True) date_created = models.DateTimeField(null=True, blank=True, editable=False, auto_now_add=True) class Meta: verbose_name_plural = 'People' verbose_name = 'Person' ordering = ['last_name', 'first_name', 'date_of_birth'] def __unicode__(self): return u'%s' % (unicode(self.full_name)) def age(self): from datetime import date if self.date_of_birth != None: today = date.today() dob = self.date_of_birth if (today.month > dob.month) and (today.day > dob.day): return (today.year - dob.year) else: return ((today.year - dob.year) -1) else: return None def name(self): """ Return the person's name. If we have special titles, use them, otherwise, don't include the title. """ if self.title == "DR" or self.title == "SIR" or self.title == "LORD": return str(self.get_title_display()) + " " + str(self.first_name) + " " + str(self.last_name) else: return str(self.first_name) + " " + str(self.last_name) def get_absolute_url(self): return ('person_profile', (), { 'person_id': self.id}) get_absolute_url = models.permalink(get_absolute_url) def save(self, *args, **kwargs): """ If date of death is specified, set is_deceased to true """ if self.date_of_death != None: self.is_deceased = True # Since we often copy and paste from strange sources, do some basic cleanup self.first_name = self.first_name.strip() self.last_name = self.last_name.strip() self.other_names = self.other_names.strip() self.full_name = str(self.name()) self.profile = self.profile.encode('ascii', 'ignore').encode('utf8') # Call save method super(Person, self).save(*args, **kwargs) # Call the "real" save() method.