128 lines
5.4 KiB
Python
128 lines
5.4 KiB
Python
from django.db import models
|
|
from phonenumber_field.modelfields import PhoneNumberField
|
|
import datetime
|
|
from django.utils import timezone
|
|
|
|
|
|
# Create your models here.
|
|
class UsefulLinks(models.Model):
|
|
name = models.CharField(max_length=256)
|
|
url = models.CharField(max_length=256)
|
|
|
|
|
|
class Membership(models.Model):
|
|
children = models.CharField(max_length=256, default="", blank=True, null=True)
|
|
|
|
def get_address_str(self):
|
|
if self.addressmodel1 is None:
|
|
return "No Address"
|
|
elif self.addressmodel1.address_1 is None:
|
|
return "No Address"
|
|
else:
|
|
return self.addressmodel1.address_1
|
|
|
|
def get_person_1(self):
|
|
emails = [item.email for item in MembershipPerson.objects.filter(membership_id=self.id)]
|
|
# remove all the Nones
|
|
filtered_emails = [i for i in emails if i is not None]
|
|
if len(filtered_emails) == 0:
|
|
return "No Person"
|
|
else:
|
|
return " | ".join(filtered_emails)
|
|
|
|
def __str__(self):
|
|
return self.get_address_str() + " | " + self.get_person_1()
|
|
|
|
class AddressModel1(models.Model):
|
|
membership = models.OneToOneField(Membership, on_delete=models.CASCADE)
|
|
address_1 = models.CharField(max_length=128)
|
|
address_2 = models.CharField(max_length=128, blank=True)
|
|
city = models.CharField(max_length=128)
|
|
state = models.CharField(max_length=2)
|
|
zip_code = models.CharField(max_length=5)
|
|
|
|
|
|
|
|
class CalendarEvent(models.Model):
|
|
event_name = models.CharField(max_length=256)
|
|
start_date = models.DateField(blank=True, null=True)
|
|
end_date = models.DateField(blank=True, null=True)
|
|
location_name = models.CharField(max_length=256, blank=True, null=True)
|
|
coordinator_email = models.EmailField(max_length=256, blank=True, null=True)
|
|
event_link_name = models.CharField(max_length=64, blank=True, null=True)
|
|
event_url = models.URLField(max_length=256, blank=True, null=True)
|
|
|
|
def has_date(self):
|
|
return not self.start_date is None
|
|
|
|
def past_event(self):
|
|
if self.has_date():
|
|
return self.start_date <= datetime.datetime.now().date()
|
|
else:
|
|
return False
|
|
|
|
def future_event(self):
|
|
if self.has_date():
|
|
return self.start_date > datetime.datetime.now().date()
|
|
else:
|
|
return False
|
|
|
|
def no_date(self):
|
|
return not self.has_date()
|
|
|
|
class CalendarEventAddressModel(models.Model):
|
|
calendar_event = models.OneToOneField(CalendarEvent, on_delete=models.CASCADE)
|
|
address_1 = models.CharField(max_length=128)
|
|
address_2 = models.CharField(max_length=128, blank=True)
|
|
city = models.CharField(max_length=128)
|
|
state = models.CharField(max_length=2)
|
|
zip_code = models.CharField(max_length=5)
|
|
|
|
def __str__ (self):
|
|
return self.address_1 + ", " + self.city + ", " + self.state + " " + self.zip_code
|
|
|
|
class MembershipPerson(models.Model):
|
|
membership = models.ForeignKey(Membership, on_delete=models.CASCADE, blank=True, null=True)
|
|
first_name = models.CharField(max_length=256, blank=True, null=True)
|
|
last_name = models.CharField(max_length=256, blank=True, null=True)
|
|
phone_number = PhoneNumberField(blank=False, null=True)
|
|
email = models.EmailField(max_length=254, blank=True, null=True)
|
|
|
|
def __str__(self):
|
|
return self.email if self.email else "No email"
|
|
|
|
|
|
|
|
|
|
class MembershipCommittee(models.Model):
|
|
membership = models.OneToOneField(Membership, on_delete=models.CASCADE)
|
|
block_captain = models.BooleanField(default=False, blank=True, null=True)
|
|
coordinator = models.BooleanField(default=False, blank=True, null=True)
|
|
egg_hunt = models.BooleanField(default=False, blank=True, null=True)
|
|
spring_garage_sale = models.BooleanField(default=False, blank=True, null=True)
|
|
golf_outing = models.BooleanField(default=False, blank=True, null=True)
|
|
ice_cream_social = models.BooleanField(default=False, blank=True, null=True)
|
|
fall_garage_sale = models.BooleanField(default=False, blank=True, null=True)
|
|
halloween_party = models.BooleanField(default=False, blank=True, null=True)
|
|
santa_visit = models.BooleanField(default=False, blank=True, null=True)
|
|
website = models.BooleanField(default=False, blank=True, null=True)
|
|
civic_affair = models.BooleanField(default=False, blank=True, null=True)
|
|
phone_directory = models.BooleanField(default=False, blank=True, null=True)
|
|
no_preference = models.BooleanField(default=False, blank=True, null=True)
|
|
|
|
class MembershipServices(models.Model):
|
|
membership = models.OneToOneField(Membership, on_delete=models.CASCADE)
|
|
babysitting = models.BooleanField(default=False, blank=True, null=True)
|
|
lawn_mowing = models.BooleanField(default=False, blank=True, null=True)
|
|
snow_shoveling = models.BooleanField(default=False, blank=True, null=True)
|
|
leaf_raking = models.BooleanField(default=False, blank=True, null=True)
|
|
petsitting = models.BooleanField(default=False, blank=True, null=True)
|
|
house_sitting = models.BooleanField(default=False, blank=True, null=True)
|
|
other = models.BooleanField(default=False, blank=True, null=True)
|
|
other_desc = models.CharField(default="", blank=True, null=True, max_length=256)
|
|
|
|
class Payments(models.Model):
|
|
date = models.DateField(default=timezone.now())
|
|
status = models.CharField(default='Completed', max_length=256)
|
|
email = models.EmailField(blank=True, null=True)
|
|
person = models.ForeignKey(MembershipPerson, on_delete=models.CASCADE, blank=True,null=True) |