Spaces:
Sleeping
Sleeping
| 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.ImageField(upload_to="profile_images/", blank=True, null=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="/media/%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(max_length=200, blank=True, null=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) | |
| image = models.ImageField(upload_to="polls/", blank=True, null=True) | |
| def __str__(self): | |
| return self.question | |
| class Books(models.Model): | |
| index = models.IntegerField(blank=True, default=0) | |
| title = models.CharField(max_length=200) | |
| urlId = models.CharField(max_length=200, blank=True) | |
| author = models.CharField(max_length=200) | |
| description = models.TextField() | |
| poster = models.FileField(upload_to="books/posters/", blank=True) | |
| pdf = models.FileField(upload_to="books/pdf/", blank=True) | |
| isPdf = models.BooleanField(default=False) | |
| hasSections = models.BooleanField(default=False) | |
| def __str__(self): | |
| return self.title | |
| def image_tag(self): | |
| return mark_safe('<img src="%s" width="50" height="50" />' % self.poster) | |
| class Sections(models.Model): | |
| title = models.CharField(max_length=200) | |
| urlId = models.CharField(max_length=200, blank=True) | |
| pdf = models.FileField(upload_to="books/sections/pdf/", blank=True) | |
| isPdf = models.BooleanField(default=False) | |
| hasChapters = models.BooleanField(default=False) | |
| book = models.ForeignKey( | |
| Books, on_delete=models.CASCADE, related_name="sections", null=True, blank=True | |
| ) | |
| def __str__(self): | |
| return self.title | |
| class Chapters(models.Model): | |
| title = models.CharField(max_length=200) | |
| urlId = models.CharField(max_length=200, blank=True) | |
| pdf = models.FileField(upload_to="books/chapters/pdf/", blank=True) | |
| isPdf = models.BooleanField(default=False) | |
| section = models.ForeignKey( | |
| Sections, | |
| on_delete=models.CASCADE, | |
| related_name="chapters", | |
| null=True, | |
| blank=True, | |
| ) | |
| book = models.ForeignKey( | |
| Books, on_delete=models.CASCADE, related_name="chapters", null=True, blank=True | |
| ) | |
| data = models.JSONField(blank=True, null=True,default=dict) | |
| def __str__(self): | |
| return self.title | |
| class Gallery(models.Model): | |
| image = models.ImageField(upload_to="gallery/") | |
| date = models.DateField(auto_now_add=True) | |
| region = models.ForeignKey(Region, on_delete=models.CASCADE, null=True, blank=True) | |
| uploaded_at = models.DateTimeField(auto_now_add=True) | |
| def __str__(self): | |
| return f"Gallery Image - {self.date.strftime('%B %d, %Y')}" | |
| def image_tag(self): | |
| return mark_safe('<img src="%s" width="50" height="50" />' % self.image.url if self.image else None) | |
| class Wallpaper(models.Model): | |
| image = models.ImageField(upload_to="wallpapers/") | |
| uploaded_at = models.DateTimeField(auto_now_add=True) | |
| def __str__(self): | |
| return self.image.url if self.image else "No Image" | |
| def image_tag(self): | |
| return mark_safe('<img src="%s" width="auto" height="50" />' % self.image.url if self.image else None) |