38028-vm/core/models.py
Flatlogic Bot 5697d35f91 heheh
2026-01-31 10:18:58 +00:00

53 lines
1.9 KiB
Python

from django.db import models
from django.conf import settings
from django.utils.text import slugify
class School(models.Model):
name = models.CharField(max_length=255)
slug = models.SlugField(unique=True, blank=True)
description = models.TextField(blank=True)
logo_url = models.URLField(blank=True, null=True, help_text="URL to the school logo")
created_at = models.DateTimeField(auto_now_add=True)
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.name)
super().save(*args, **kwargs)
def __str__(self):
return self.name
class Event(models.Model):
EVENT_TYPES = [
('assembly', 'Assembly'),
('field_trip', 'Field Trip'),
('parent_teacher', 'Parent-Teacher Night'),
('sports', 'Sports Event'),
('performance', 'Performance/Arts'),
('other', 'Other'),
]
school = models.ForeignKey(School, on_delete=models.CASCADE, related_name='events')
title = models.CharField(max_length=255)
description = models.TextField()
event_type = models.CharField(max_length=50, choices=EVENT_TYPES, default='other')
start_date = models.DateTimeField()
end_date = models.DateTimeField()
location = models.CharField(max_length=255)
capacity = models.PositiveIntegerField(default=100)
is_published = models.BooleanField(default=True)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"{self.title} ({self.school.name})"
class Registration(models.Model):
event = models.ForeignKey(Event, on_delete=models.CASCADE, related_name='registrations')
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
registered_at = models.DateTimeField(auto_now_add=True)
attended = models.BooleanField(default=False)
class Meta:
unique_together = ('event', 'user')
def __str__(self):
return f"{self.user.username} - {self.event.title}"