You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

79 lines
2.7 KiB

from django.db import models
from datetime import datetime
from utils import generate_validate_token
class Person(models.Model):
#Basic Info
user = models.ForeignKey(User, blank=True, null=True, db_index=True)
first_name = models.CharField(max_length=255)
last_name = models.CharField(max_length=255)
email = models.EmailField(blank=True, null=True, unique=True, db_index=True)
email_validated = models.BooleanField(default=False)
tel_no = models.CharField(max_length=100, blank=True)
about = models.TextField(blank=True, null=True)
#Occupation info
occupations = models.ManyToManyField("Occupation", through='PersonOccupation', blank=True, null=True)
is_practitioner = models.BooleanField(default=False)
is_enthusiast = models.BooleanField(default=True)
#Personal info
dob = models.DateField(null=True, verbose_name="Date of Birth")
gender = models.CharField(max_length=255, choices=GENDER_CHOICES, blank=True)
image = models.ImageField(upload_to='images/', blank=True, null=True)
locations = models.ManyToManyField("Location", blank=True, null=True)
#Groups and Connections
is_freelancer = models.BooleanField(default=False)
groups = models.ManyToManyField("TheatreGroup", blank=True, null=True, through='PersonGroup')
connections = models.ManyToManyField('Person', blank=True, null=True, through='PersonPerson')
productions = models.ManyToManyField("Production", blank=True, null=True, through='PersonProduction')
# trainings = models.ManyToManyField("Training", blank=True, null=True)
photos = models.ManyToManyField("PhotoAlbum", blank=True, null=True)
# orphans = models.ManyToManyField("Orphan", blank=True, null=True, through='PersonOrphan')
#Meta
joined = models.DateTimeField(auto_now_add=True)
last_modified = models.DateTimeField(auto_now=True)
last_accessed = models.DateTimeField(default=datetime.now)
#Tokens
reset_token = modes.CharField(max_length=256, null=True)
validate_token = models.CharField(max_length=256, null=True, default=generate_validate_token)
def __unicode__(self):
return self.first_name + " " + self.last_name
def is_orphan(self):
return self.user == None
class Occupation(models.Model):
name = models.CharField(max_length=255)
parent = models.ForeignKey('Occupation', blank=True, null=True)
def __unicode__(self):
return self.name
def is_child(self):
return self.parent != None
def is_parent(self):
if self.is_child():
return False
else:
if Occupation.objects.filter(parent=self).count() > 0: #self has children
return True
return False
class PersonOccupation(models.Model):
person = models.ForeignKey(Person, db_index=True)
occupation = models.ForeignKey(Occupation)
order = models.IntegerField()
# Create your models here.