Updates to the main page

This commit is contained in:
2025-04-22 11:46:55 -05:00
parent 4c0605474c
commit 0e1ddbcf1a
14 changed files with 1493 additions and 60 deletions

View File

@@ -3,14 +3,29 @@ from phonenumber_field.modelfields import PhoneNumberField
import datetime
from django.utils import timezone
class TimeInfoBase(models.Model):
created = models.DateTimeField(default=timezone.now)
last_modified = models.DateTimeField(default=timezone.now)
class Meta:
abstract = True
def save(self, *args, **kwargs):
if not kwargs.pop("skip_last_modified", False) and not hasattr(self, "skip_last_modified"):
self.last_modified = timezone.now()
if kwargs.get("update_fields") is not None:
kwargs["update_fields"] = list({*kwargs["update_fields"], "last_modified"})
super().save(*args, **kwargs)
# Create your models here.
class UsefulLinks(models.Model):
class UsefulLinks(TimeInfoBase):
name = models.CharField(max_length=256)
url = models.CharField(max_length=256)
class Membership(models.Model):
class Membership(TimeInfoBase):
children = models.CharField(max_length=256, default="", blank=True, null=True)
def get_address_str(self):
@@ -37,7 +52,7 @@ class Membership(models.Model):
return self.get_address_str() + " | " + self.get_person_1()
class AddressModel1(models.Model):
class AddressModel1(TimeInfoBase):
membership = models.OneToOneField(Membership, on_delete=models.CASCADE)
address_1 = models.CharField(max_length=128)
address_2 = models.CharField(max_length=128, blank=True)
@@ -46,7 +61,7 @@ class AddressModel1(models.Model):
zip_code = models.CharField(max_length=5)
class CalendarEvent(models.Model):
class CalendarEvent(TimeInfoBase):
event_name = models.CharField(max_length=256)
start_date = models.DateField(blank=True, null=True)
end_date = models.DateField(blank=True, null=True)
@@ -75,7 +90,7 @@ class CalendarEvent(models.Model):
return not self.has_date()
class CalendarEventAddressModel(models.Model):
class CalendarEventAddressModel(TimeInfoBase):
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)
@@ -89,7 +104,7 @@ class CalendarEventAddressModel(models.Model):
)
class MembershipPerson(models.Model):
class MembershipPerson(TimeInfoBase):
membership = models.ForeignKey(
Membership, on_delete=models.CASCADE, blank=True, null=True
)
@@ -102,7 +117,7 @@ class MembershipPerson(models.Model):
return self.email if self.email else "No email"
class MembershipCommittee(models.Model):
class MembershipCommittee(TimeInfoBase):
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)
@@ -119,7 +134,7 @@ class MembershipCommittee(models.Model):
no_preference = models.BooleanField(default=False, blank=True, null=True)
class MembershipServices(models.Model):
class MembershipServices(TimeInfoBase):
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)
@@ -131,7 +146,7 @@ class MembershipServices(models.Model):
other_desc = models.CharField(default="", blank=True, null=True, max_length=256)
class Payments(models.Model):
class Payments(TimeInfoBase):
date = models.DateField(default=timezone.now())
status = models.CharField(default="Completed", max_length=256)
email = models.EmailField(blank=True, null=True)
@@ -140,26 +155,45 @@ class Payments(models.Model):
)
class SCHAOfficer(models.Model):
class SCHAOfficer(TimeInfoBase):
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)
### NOT USED YET ###
# 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 CommunitySchools(TimeInfoBase):
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 CommunityParks(models.Model):
# name = models.CharField(max_length=255)
# distance = models.DecimalField(max_digits=3, decimal_places=1)
# description = models.CharField(max_length=1024)
class CommunityShoppingAndDining(TimeInfoBase):
name = models.CharField(max_length=255)
distance = models.DecimalField(max_digits=3, decimal_places=1)
description = models.CharField(max_length=1024)
class CommunityParks(TimeInfoBase):
name = models.CharField(max_length=255)
distance = models.DecimalField(max_digits=3, decimal_places=1)
description = models.CharField(max_length=1024)
class CommunityPost(TimeInfoBase):
title = models.CharField(max_length=255)
category = models.CharField(max_length=255)
content = models.CharField(max_length=1024*8)
likes = models.IntegerField(default=0)
class CommunityPostReports(TimeInfoBase):
post = models.ForeignKey(CommunityPost, on_delete=models.CASCADE)
# user = something
class CommunityComment(TimeInfoBase):
post = models.ForeignKey(CommunityPost, on_delete=models.CASCADE)
content = models.CharField(max_length=1024*8)
likes = models.IntegerField(default=0)