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) #description= models.CharField(max_length=1024, default="") 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 ) class SCHAOfficer(models.Model): name = models.CharField(max_length=255) position = models.CharField(max_length=255) email = models.EmailField(max_length=255) # class CommunitySchools(models.Model): # name = models.CharField(max_length=255) # name_school_url = models.URLField(max_length=256) # rating_url = models.URLField(max_length=256) # rating = models.DecimalField(max_digits=5, decimal_places=2) # distance = models.DecimalField(max_digits=3, decimal_places=1) # principal = models.CharField(max_length=255) # grades = models.CharField(max_length=255) # class CommunityShoppingAndDining(models.Model): # name = models.CharField(max_length=255) # distance = models.DecimalField(max_digits=3, decimal_places=1) # description = models.CharField(max_length=1024) # class CommunityParks(models.Model): # name = models.CharField(max_length=255) # distance = models.DecimalField(max_digits=3, decimal_places=1) # description = models.CharField(max_length=1024)