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.
32 lines
1.2 KiB
32 lines
1.2 KiB
from django.db import models
|
|
from django.conf import settings
|
|
from divebases.models import DiveBase
|
|
|
|
User = settings.AUTH_USER_MODEL
|
|
|
|
class Event(models.Model):
|
|
title = models.CharField(max_length=255)
|
|
start_datetime = models.DateTimeField()
|
|
location = models.CharField(max_length=255, blank=True)
|
|
google_maps_link = models.URLField(blank=True)
|
|
description = models.TextField(blank=True)
|
|
payment_details = models.TextField(blank=True)
|
|
|
|
dive_base = models.ForeignKey(DiveBase, on_delete=models.CASCADE, related_name='events')
|
|
created_by = models.ForeignKey(User, on_delete=models.PROTECT, related_name='created_events')
|
|
is_deleted = models.BooleanField(default=False)
|
|
|
|
def __str__(self):
|
|
return self.title
|
|
|
|
|
|
class EventApplication(models.Model):
|
|
event = models.ForeignKey(Event, on_delete=models.CASCADE, related_name='applications')
|
|
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='event_applications')
|
|
paid = models.BooleanField(default=False)
|
|
|
|
class Meta:
|
|
unique_together = ('event', 'user') # prevent duplicate applications
|
|
|
|
def __str__(self):
|
|
return f"{self.user} applied for {self.event}"
|
|
|