from django.db import models from django.contrib.auth.models import User class Profile(models.Model): def default_data(): return {"data": []} user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="User") profilePic = models.CharField(max_length=100, default="0001") location = models.CharField(max_length=100, blank=True) phone = models.CharField(max_length=10, blank=True) otp = models.CharField(max_length=6, blank=True) isVolunteer = models.BooleanField(default=False) isOrganiser = models.BooleanField(default=False) isAccountSetup = models.BooleanField(default=False) isCampainVolunteer = models.BooleanField(default=False) isVerified = models.BooleanField(default=False) college = models.CharField(max_length=500, blank=True) def __str__(self): return str(self.user.username) class Department(models.Model): name = models.CharField(max_length=500, unique=True) abbriviation = models.CharField(max_length=10, default="") coordinator1 = models.ForeignKey( Profile, on_delete=models.CASCADE, related_name='department_coordinator1') coordinator2 = models.ForeignKey( Profile, on_delete=models.CASCADE, blank=True, related_name='department_coordinator2') posterImage = models.CharField(max_length=1000) def __str__(self): return str(self.name) class Event(models.Model): def default_images(): return {"data": ["/static/event-images/1.jpg","/static/event-images/2.jpg","/static/event-images/3.jpg","/static/event-images/4.jpg"]} name = models.CharField(max_length=500, unique=True) department = models.ForeignKey(Department, on_delete=models.CASCADE) teamName = models.CharField(max_length=100) teamLeader = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name="event_teamLeader") price = models.CharField(max_length=10, default="-") teamPrice = models.CharField(max_length=10, default="-") winnerPrice1 = models.CharField(max_length=10, null=True, blank=True) winnerPrice2 = models.CharField(max_length=10, null=True, blank=True) location = models.CharField(max_length=100) date = models.DateField() description = models.CharField(max_length=10000) rules = models.CharField(max_length=10000, null=True, blank=True) round1Title = models.CharField(max_length=200, null=True, blank=True) round1 = models.CharField(max_length=10000, null=True, blank=True) round2Title = models.CharField(max_length=200, null=True, blank=True) round2 = models.CharField(max_length=10000, null=True, blank=True) round3Title = models.CharField(max_length=200, null=True, blank=True) round3 = models.CharField(max_length=10000, null=True, blank=True) round4Title = models.CharField(max_length=200, null=True, blank=True) round4 = models.CharField(max_length=10000, null=True, blank=True) round5Title = models.CharField(max_length=200, null=True, blank=True) round5 = models.CharField(max_length=10000, null=True, blank=True) tagline = models.CharField(max_length=2000) posterImage = models.CharField(max_length=1000) winner1 = models.ForeignKey(Profile, on_delete=models.CASCADE, blank=True, null=True, related_name="event_winner1") winner2 = models.ForeignKey(Profile, on_delete=models.CASCADE, blank=True, null=True, related_name="event_winner2") winner3 = models.ForeignKey(Profile, on_delete=models.CASCADE, blank=True, null=True, related_name="event_winner3") organisers = models.JSONField() volunteer = models.JSONField() organiser1 = models.ForeignKey(Profile, on_delete=models.CASCADE, blank=True,null=True, related_name='organiser1_event') organiser2 = models.ForeignKey(Profile, on_delete=models.CASCADE, blank=True,null=True, related_name='organiser2_event') organiser3 = models.ForeignKey(Profile, on_delete=models.CASCADE, blank=True,null=True, related_name='organiser3_event') organiser4 = models.ForeignKey(Profile, on_delete=models.CASCADE, blank=True,null=True, related_name='organiser4_event') organiser5 = models.ForeignKey(Profile, on_delete=models.CASCADE, blank=True,null=True, related_name='organiser5_event') teamParticapantCount = models.PositiveIntegerField(default=1) teamParticapantCountMin = models.PositiveIntegerField(default=1) isTeamEvent = models.BooleanField() isTeamPriceFull = models.BooleanField(default=False) isClosed = models.BooleanField() status = models.CharField(max_length=100) images = models.JSONField(default=default_images) def __str__(self): return str(self.name) class Ticket(models.Model): owner = models.ForeignKey(Profile, on_delete=models.CASCADE) owner1 = models.ForeignKey(Profile,on_delete=models.CASCADE,null=True,blank=True,related_name="owner1_ticket") owner2 = models.ForeignKey(Profile,on_delete=models.CASCADE,null=True,blank=True,related_name="owner2_ticket") owner3 = models.ForeignKey(Profile,on_delete=models.CASCADE,null=True,blank=True,related_name="owner3_ticket") owner4 = models.ForeignKey(Profile,on_delete=models.CASCADE,null=True,blank=True,related_name="owner4_ticket") event = models.ForeignKey(Event, on_delete=models.CASCADE) comments = models.CharField(max_length=200,null=True,blank=True) date = models.DateField(auto_now_add=True) qrCodeData = models.CharField(max_length=64) userCount = models.PositiveIntegerField(default=1) paymentMethod = models.CharField(max_length=100,null=True,blank=True) isScanned = models.BooleanField(default=False) isPaid = models.BooleanField(default=False) acceptedBy = models.ForeignKey(Profile, on_delete=models.CASCADE,null=True,blank=True,related_name="name_acceptedBy") def __str__(self): return str(self.owner) and str(self.event) class Notifications(models.Model): user = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name="notification_user") event = models.ForeignKey(Event, on_delete=models.CASCADE) dateTime = models.DateTimeField() isRead = models.BooleanField() class Gallery(models.Model): path = models.CharField(max_length=1000)