Spaces:
Running
Running
File size: 6,549 Bytes
e744e38 d5374bf e744e38 d5374bf e744e38 d5374bf e744e38 d5374bf e744e38 d5374bf e744e38 d5374bf e744e38 d5374bf e744e38 d5374bf e744e38 d5374bf e744e38 d5374bf e744e38 d5374bf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 |
from django.db import models
from django.contrib.auth.models import AbstractUser
import datetime as DateTime
from django.utils.html import mark_safe
class Bhagat(AbstractUser):
USER_TYPES = (
('superadmin', 'Super Admin'),
('regionadmin', 'Region Admin'),
('karyakarta', 'Karyakarta'),
('user', 'User'),
)
MEMBER_TYPES = (
('ambrish', 'Ambrish'),
('sadbhav', 'Sadbhav'),
('vip', 'VIP'),
('youvak', 'Youvak'),
)
user_type = models.CharField(max_length=20, choices=USER_TYPES, default="user")
phone = models.CharField(max_length=20, null=True)
member_type = models.CharField(max_length=20, choices=MEMBER_TYPES, default="youvak")
region = models.ForeignKey('Region', on_delete=models.SET_NULL, null=True)
birthday = models.DateField(default=DateTime.date.today, null=True)
streetName = models.TextField(null=True)
city = models.CharField(max_length=100, null=True)
state = models.CharField(max_length=100, null=True)
country = models.CharField(max_length=100, null=True)
pincode = models.CharField(max_length=10, null=True)
assigned_to = models.ForeignKey('self', on_delete=models.SET_NULL, null=True, blank=True, related_name='assigned_users')
profile_image = models.URLField(blank=True)
def __str__(self):
return self.first_name + ' ' + self.last_name
def save(self, *args, **kwargs):
if not self.password.startswith("pbkdf2_sha256"):
self.set_password(self.password)
super().save(*args, **kwargs)
def profileImage(self):
return mark_safe('<img src="%s" width="50" height="50" />' % self.profile_image)
def get_full_name(self):
return super().get_full_name()
class Region(models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return self.name
class Event(models.Model):
COLOR_CHOICES = (("orange","Shabha"), ("green","Activity"), ("blue","Birthday"), ("red","Important"), ("purple","Gathering"), ("yellow","Festival"), ("pink","Special"))
title = models.CharField(max_length=200)
description = models.TextField()
date = models.DateTimeField()
time = models.TimeField(default='00:00')
created_by = models.ForeignKey(Bhagat, on_delete=models.CASCADE, related_name='created_events',blank=True,null=True)
region = models.ForeignKey(Region, on_delete=models.CASCADE, blank=True,null=True)
is_approved = models.BooleanField(default=False)
color = models.CharField(max_length=15, default='orange',choices=COLOR_CHOICES)
def __str__(self):
return self.title
class Attendance(models.Model):
user = models.ForeignKey(Bhagat, on_delete=models.CASCADE)
event = models.ForeignKey(Event, on_delete=models.CASCADE)
status = models.CharField(max_length=20, choices=(('attending', 'Attending'), ('not_attending', 'Not Attending'), ('maybe', 'Maybe')))
class Notification(models.Model):
sender = models.ForeignKey(Bhagat, on_delete=models.CASCADE, related_name='sent_notifications')
recipients = models.ManyToManyField(Bhagat, related_name='received_notifications')
title = models.CharField(max_length=200, blank=True, null=True)
content = models.TextField()
timestamp = models.DateTimeField(auto_now_add=True)
notification_type = models.CharField(max_length=20, choices=(("orange", "Shabha"), ("green", "Activity"), ("blue", "Birthday"), ("red", "Important"), ("purple", "Gathering"), ("yellow", "Festival"), ("pink", "Custom")))
class BhajanCategory(models.Model):
name = models.CharField(max_length=100)
link = models.CharField(max_length=100)
icon = models.URLField(blank=True)
def __str__(self):
return self.name
def icon_image(self):
return mark_safe('<img src="%s" width="50" height="50" />' % self.icon)
class Bhajan(models.Model):
bhajanId = models.IntegerField(blank=True, default=0)
title = models.CharField(max_length=500, blank=True)
title_guj = models.CharField(max_length=500, blank=True)
category = models.ForeignKey(BhajanCategory, on_delete=models.CASCADE)
lyrics = models.CharField(max_length=50, blank=True)
audio_url = models.CharField(max_length=500, blank=True)
isEng = models.BooleanField(default=False)
isHnd = models.BooleanField(default=False)
isGer = models.BooleanField(default=False)
isAudio = models.BooleanField(default=False)
def __str__(self):
return self.title
def musicPreivew(self):
if self.isAudio:
return mark_safe('<audio controls><source src="https://huggingface.co/spaces/thejagstudio/MusicStore/resolve/main/Bhajan Audio/%s" type="audio/mpeg"></audio>' % self.audio_url)
else:
return 'No Audio Available'
def lyricsBtn(self):
# i have four languages in my bhajan so add them all as buttons and show them on click
languages = [["","GUJ"]]
if self.isEng:
languages.append(['E','ENG'])
if self.isHnd:
languages.append(['H','HND'])
if self.isGer:
languages.append(['G','GER'])
html = '<ul class="object-tools" style="margin-top:0">'
for lang in languages:
html += '<li style="padding-bottom:12px"><a href="https://huggingface.co/spaces/thejagstudio/MusicStore/raw/main/HTML Files/'+lang[0] + self.lyrics+'" target="_blank" class="import_link">'+(lang[1])+'</a></li>'
html += '</ul>'
return mark_safe(html)
class PushSubscription(models.Model):
user = models.ForeignKey(Bhagat, on_delete=models.CASCADE, null=True)
endpoint = models.URLField(max_length=500)
p256dh = models.CharField(max_length=200)
auth = models.CharField(max_length=100)
created_at = models.DateTimeField(auto_now_add=True)
class OptionPoll(models.Model):
optionText = models.TextField()
voters = models.ManyToManyField(Bhagat, related_name="options_voters", blank=True)
def __str__(self):
return self.optionText
class Poll(models.Model):
question = models.TextField()
options = models.ManyToManyField(
OptionPoll, related_name="polls_options", blank=True
)
participants = models.ManyToManyField(
Bhagat, related_name="polls_participant", blank=True
)
created_by = models.ForeignKey(
Bhagat, on_delete=models.CASCADE, related_name="polls_creator"
)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.question
|