Spaces:
Running
Running
Update api/models.py
Browse files- api/models.py +115 -111
api/models.py
CHANGED
@@ -1,112 +1,116 @@
|
|
1 |
-
from django.db import models
|
2 |
-
from django.contrib.auth.models import AbstractUser
|
3 |
-
import datetime as DateTime
|
4 |
-
from django.utils.html import mark_safe
|
5 |
-
|
6 |
-
class Bhagat(AbstractUser):
|
7 |
-
USER_TYPES = (
|
8 |
-
('superadmin', 'Super Admin'),
|
9 |
-
('regionadmin', 'Region Admin'),
|
10 |
-
('karyakarta', 'Karyakarta'),
|
11 |
-
('user', 'User'),
|
12 |
-
)
|
13 |
-
MEMBER_TYPES = (
|
14 |
-
('ambrish', 'Ambrish'),
|
15 |
-
('sadbhav', 'Sadbhav'),
|
16 |
-
('vip', 'VIP'),
|
17 |
-
('youvak', 'Youvak'),
|
18 |
-
)
|
19 |
-
user_type = models.CharField(max_length=20, choices=USER_TYPES, default="user")
|
20 |
-
phone = models.CharField(max_length=20, null=True)
|
21 |
-
member_type = models.CharField(max_length=20, choices=MEMBER_TYPES, default="youvak")
|
22 |
-
region = models.ForeignKey('Region', on_delete=models.SET_NULL, null=True)
|
23 |
-
birthday = models.DateField(default=DateTime.date.today, null=True)
|
24 |
-
streetName = models.TextField(null=True)
|
25 |
-
city = models.CharField(max_length=100, null=True)
|
26 |
-
state = models.CharField(max_length=100, null=True)
|
27 |
-
country = models.CharField(max_length=100, null=True)
|
28 |
-
pincode = models.CharField(max_length=10, null=True)
|
29 |
-
assigned_to = models.ForeignKey('self', on_delete=models.SET_NULL, null=True, blank=True, related_name='assigned_users')
|
30 |
-
profile_image = models.URLField(blank=True)
|
31 |
-
|
32 |
-
def __str__(self):
|
33 |
-
return self.first_name + ' ' + self.last_name
|
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 |
-
if self.
|
107 |
-
languages.append(['
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
|
|
|
|
|
|
|
|
112 |
return mark_safe(html)
|
|
|
1 |
+
from django.db import models
|
2 |
+
from django.contrib.auth.models import AbstractUser
|
3 |
+
import datetime as DateTime
|
4 |
+
from django.utils.html import mark_safe
|
5 |
+
|
6 |
+
class Bhagat(AbstractUser):
|
7 |
+
USER_TYPES = (
|
8 |
+
('superadmin', 'Super Admin'),
|
9 |
+
('regionadmin', 'Region Admin'),
|
10 |
+
('karyakarta', 'Karyakarta'),
|
11 |
+
('user', 'User'),
|
12 |
+
)
|
13 |
+
MEMBER_TYPES = (
|
14 |
+
('ambrish', 'Ambrish'),
|
15 |
+
('sadbhav', 'Sadbhav'),
|
16 |
+
('vip', 'VIP'),
|
17 |
+
('youvak', 'Youvak'),
|
18 |
+
)
|
19 |
+
user_type = models.CharField(max_length=20, choices=USER_TYPES, default="user")
|
20 |
+
phone = models.CharField(max_length=20, null=True)
|
21 |
+
member_type = models.CharField(max_length=20, choices=MEMBER_TYPES, default="youvak")
|
22 |
+
region = models.ForeignKey('Region', on_delete=models.SET_NULL, null=True)
|
23 |
+
birthday = models.DateField(default=DateTime.date.today, null=True)
|
24 |
+
streetName = models.TextField(null=True)
|
25 |
+
city = models.CharField(max_length=100, null=True)
|
26 |
+
state = models.CharField(max_length=100, null=True)
|
27 |
+
country = models.CharField(max_length=100, null=True)
|
28 |
+
pincode = models.CharField(max_length=10, null=True)
|
29 |
+
assigned_to = models.ForeignKey('self', on_delete=models.SET_NULL, null=True, blank=True, related_name='assigned_users')
|
30 |
+
profile_image = models.URLField(blank=True)
|
31 |
+
|
32 |
+
def __str__(self):
|
33 |
+
return self.first_name + ' ' + self.last_name
|
34 |
+
|
35 |
+
def save(self, *args, **kwargs):
|
36 |
+
self.set_password(self.password)
|
37 |
+
super().save(*args, **kwargs)
|
38 |
+
|
39 |
+
|
40 |
+
class Region(models.Model):
|
41 |
+
name = models.CharField(max_length=100)
|
42 |
+
|
43 |
+
def __str__(self):
|
44 |
+
return self.name
|
45 |
+
|
46 |
+
|
47 |
+
class Event(models.Model):
|
48 |
+
COLOR_CHOICES = (("orange","Shabha"), ("green","Activity"), ("blue","Birthday"), ("red","Important"), ("purple","Gathering"), ("yellow","Festival"), ("pink","Special"))
|
49 |
+
title = models.CharField(max_length=200)
|
50 |
+
description = models.TextField()
|
51 |
+
date = models.DateTimeField()
|
52 |
+
time = models.TimeField(default='00:00')
|
53 |
+
created_by = models.ForeignKey(Bhagat, on_delete=models.CASCADE, related_name='created_events',blank=True,null=True)
|
54 |
+
region = models.ForeignKey(Region, on_delete=models.CASCADE, blank=True,null=True)
|
55 |
+
is_approved = models.BooleanField(default=False)
|
56 |
+
color = models.CharField(max_length=15, default='orange',choices=COLOR_CHOICES)
|
57 |
+
|
58 |
+
def __str__(self):
|
59 |
+
return self.title
|
60 |
+
|
61 |
+
|
62 |
+
class Attendance(models.Model):
|
63 |
+
user = models.ForeignKey(Bhagat, on_delete=models.CASCADE)
|
64 |
+
event = models.ForeignKey(Event, on_delete=models.CASCADE)
|
65 |
+
status = models.CharField(max_length=20, choices=(('attending', 'Attending'), ('not_attending', 'Not Attending'), ('maybe', 'Maybe')))
|
66 |
+
|
67 |
+
class Notification(models.Model):
|
68 |
+
sender = models.ForeignKey(Bhagat, on_delete=models.CASCADE, related_name='sent_notifications')
|
69 |
+
recipients = models.ManyToManyField(Bhagat, related_name='received_notifications')
|
70 |
+
title = models.CharField(max_length=200, blank=True, null=True)
|
71 |
+
content = models.TextField()
|
72 |
+
timestamp = models.DateTimeField(auto_now_add=True)
|
73 |
+
notification_type = models.CharField(max_length=20, choices=(("orange", "Shabha"), ("green", "Activity"), ("blue", "Birthday"), ("red", "Important"), ("purple", "Gathering"), ("yellow", "Festival"), ("pink", "Custom")))
|
74 |
+
|
75 |
+
class BhajanCategory(models.Model):
|
76 |
+
name = models.CharField(max_length=100)
|
77 |
+
link = models.CharField(max_length=100)
|
78 |
+
|
79 |
+
def __str__(self):
|
80 |
+
return self.name
|
81 |
+
|
82 |
+
class Bhajan(models.Model):
|
83 |
+
bhajanId = models.IntegerField(blank=True,default=0)
|
84 |
+
title = models.CharField(max_length=500,blank=True)
|
85 |
+
title_guj = models.CharField(max_length=500,blank=True)
|
86 |
+
category = models.ForeignKey(BhajanCategory, on_delete=models.CASCADE)
|
87 |
+
lyrics = models.CharField(max_length=50, blank=True)
|
88 |
+
audio_url = models.URLField(blank=True)
|
89 |
+
isEng = models.BooleanField(default=False)
|
90 |
+
isHnd = models.BooleanField(default=False)
|
91 |
+
isGer = models.BooleanField(default=False)
|
92 |
+
isAudio = models.BooleanField(default=False)
|
93 |
+
|
94 |
+
def __str__(self):
|
95 |
+
return self.title
|
96 |
+
|
97 |
+
def musicPreivew(self):
|
98 |
+
if self.isAudio:
|
99 |
+
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)
|
100 |
+
else:
|
101 |
+
return 'No Audio Available'
|
102 |
+
|
103 |
+
def lyricsBtn(self):
|
104 |
+
# i have four languages in my bhajan so add them all as buttons and show them on click
|
105 |
+
languages = [["","GUJ"]]
|
106 |
+
if self.isEng:
|
107 |
+
languages.append(['E','ENG'])
|
108 |
+
if self.isHnd:
|
109 |
+
languages.append(['H','HND'])
|
110 |
+
if self.isGer:
|
111 |
+
languages.append(['G','GER'])
|
112 |
+
html = '<ul class="object-tools" style="margin-top:0">'
|
113 |
+
for lang in languages:
|
114 |
+
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>'
|
115 |
+
html += '</ul>'
|
116 |
return mark_safe(html)
|