thejagstudio commited on
Commit
a589392
·
verified ·
1 Parent(s): 6b9394e

Upload 145 files

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +94 -70
  2. Dockerfile +6 -6
  3. README.md +11 -11
  4. api/__pycache__/admin.cpython-313.pyc +0 -0
  5. api/__pycache__/models.cpython-313.pyc +0 -0
  6. api/__pycache__/urls.cpython-313.pyc +0 -0
  7. api/__pycache__/views.cpython-313.pyc +0 -0
  8. api/admin.py +21 -0
  9. api/models.py +213 -161
  10. api/urls.py +8 -0
  11. api/views.py +103 -0
  12. db.sqlite3 +0 -0
  13. extra/bhajanData.json +0 -0
  14. extra/dataMaker.py +132 -0
  15. extra/swamiNiVato/prakaran_1_data.json +0 -0
  16. extra/swamiNiVato/prakaran_2_data.json +0 -0
  17. extra/swamiNiVato/prakaran_3_data.json +0 -0
  18. extra/swamiNiVato/prakaran_4_data.json +0 -0
  19. extra/swamiNiVato/prakaran_5_data.json +0 -0
  20. extra/swamiNiVato/prakaran_6_data.json +0 -0
  21. extra/swamiNiVato/prakaran_7_data.json +0 -0
  22. frontend/urls.py +17 -17
  23. frontend/views.py +4 -4
  24. hsapssconnect/__pycache__/settings.cpython-313.pyc +0 -0
  25. hsapssconnect/__pycache__/urls.cpython-313.pyc +0 -0
  26. hsapssconnect/settings.py +180 -177
  27. hsapssconnect/urls.py +11 -5
  28. notification/admin.py +3 -3
  29. notification/apps.py +6 -6
  30. notification/consumers.py +32 -32
  31. notification/models.py +3 -3
  32. notification/routing.py +5 -5
  33. notification/tests.py +3 -3
  34. notification/urls.py +6 -6
  35. notification/views.py +3 -3
  36. requirements.txt +9 -9
  37. static/CalendarData.csv +0 -0
  38. static/books/pdf/vachnamrut-gujarati.pdf +3 -0
  39. static/books/posters/swami-ni-vato.jpg +3 -0
  40. static/books/posters/swami-ni-vato_KrDvdpe.jpg +3 -0
  41. static/books/posters/vachanamrut.jpg +3 -0
  42. static/books/posters/vachanamrut_eP1PSm5.jpg +3 -0
  43. static/data.json +1666 -0
  44. static/fonts/AestheticRomance-Regular.woff +0 -0
  45. static/fonts/AestheticRomance-Regular.woff2 +0 -0
  46. static/fonts/S0728810.TTF +3 -0
  47. static/fonts/S0728810.otf +3 -0
  48. static/images/AYMLogo.png +3 -0
  49. static/images/GunatitSwami.png +3 -0
  50. static/images/SHA_logo.png +3 -0
.gitattributes CHANGED
@@ -1,70 +1,94 @@
1
- *.7z filter=lfs diff=lfs merge=lfs -text
2
- *.arrow filter=lfs diff=lfs merge=lfs -text
3
- *.bin filter=lfs diff=lfs merge=lfs -text
4
- *.bz2 filter=lfs diff=lfs merge=lfs -text
5
- *.ckpt filter=lfs diff=lfs merge=lfs -text
6
- *.ftz filter=lfs diff=lfs merge=lfs -text
7
- *.gz filter=lfs diff=lfs merge=lfs -text
8
- *.h5 filter=lfs diff=lfs merge=lfs -text
9
- *.joblib filter=lfs diff=lfs merge=lfs -text
10
- *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
- *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
- *.model filter=lfs diff=lfs merge=lfs -text
13
- *.msgpack filter=lfs diff=lfs merge=lfs -text
14
- *.npy filter=lfs diff=lfs merge=lfs -text
15
- *.npz filter=lfs diff=lfs merge=lfs -text
16
- *.onnx filter=lfs diff=lfs merge=lfs -text
17
- *.ot filter=lfs diff=lfs merge=lfs -text
18
- *.parquet filter=lfs diff=lfs merge=lfs -text
19
- *.pb filter=lfs diff=lfs merge=lfs -text
20
- *.pickle filter=lfs diff=lfs merge=lfs -text
21
- *.pkl filter=lfs diff=lfs merge=lfs -text
22
- *.pt filter=lfs diff=lfs merge=lfs -text
23
- *.pth filter=lfs diff=lfs merge=lfs -text
24
- *.rar filter=lfs diff=lfs merge=lfs -text
25
- *.safetensors filter=lfs diff=lfs merge=lfs -text
26
- saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
- *.tar.* filter=lfs diff=lfs merge=lfs -text
28
- *.tar filter=lfs diff=lfs merge=lfs -text
29
- *.tflite filter=lfs diff=lfs merge=lfs -text
30
- *.tgz filter=lfs diff=lfs merge=lfs -text
31
- *.wasm filter=lfs diff=lfs merge=lfs -text
32
- *.xz filter=lfs diff=lfs merge=lfs -text
33
- *.zip filter=lfs diff=lfs merge=lfs -text
34
- *.zst filter=lfs diff=lfs merge=lfs -text
35
- *tfevents* filter=lfs diff=lfs merge=lfs -text
36
- downloads/1.jpg filter=lfs diff=lfs merge=lfs -text
37
- downloads/100.png filter=lfs diff=lfs merge=lfs -text
38
- downloads/101.png filter=lfs diff=lfs merge=lfs -text
39
- downloads/102.png filter=lfs diff=lfs merge=lfs -text
40
- downloads/103.png filter=lfs diff=lfs merge=lfs -text
41
- downloads/104.png filter=lfs diff=lfs merge=lfs -text
42
- downloads/105.png filter=lfs diff=lfs merge=lfs -text
43
- downloads/106.png filter=lfs diff=lfs merge=lfs -text
44
- downloads/107.png filter=lfs diff=lfs merge=lfs -text
45
- downloads/108.png filter=lfs diff=lfs merge=lfs -text
46
- downloads/11.png filter=lfs diff=lfs merge=lfs -text
47
- downloads/110.jpg filter=lfs diff=lfs merge=lfs -text
48
- downloads/112.jpg filter=lfs diff=lfs merge=lfs -text
49
- downloads/116.jpg filter=lfs diff=lfs merge=lfs -text
50
- downloads/125.jpg filter=lfs diff=lfs merge=lfs -text
51
- downloads/127.jpg filter=lfs diff=lfs merge=lfs -text
52
- downloads/13.png filter=lfs diff=lfs merge=lfs -text
53
- downloads/130.jpg filter=lfs diff=lfs merge=lfs -text
54
- downloads/134.jpg filter=lfs diff=lfs merge=lfs -text
55
- downloads/136.jpg filter=lfs diff=lfs merge=lfs -text
56
- downloads/139.jpg filter=lfs diff=lfs merge=lfs -text
57
- downloads/150.jpg filter=lfs diff=lfs merge=lfs -text
58
- downloads/151.jpg filter=lfs diff=lfs merge=lfs -text
59
- downloads/157.jpg filter=lfs diff=lfs merge=lfs -text
60
- downloads/160.jpg filter=lfs diff=lfs merge=lfs -text
61
- downloads/166.jpg filter=lfs diff=lfs merge=lfs -text
62
- downloads/168.jpg filter=lfs diff=lfs merge=lfs -text
63
- downloads/169.jpg filter=lfs diff=lfs merge=lfs -text
64
- downloads/173.jpg filter=lfs diff=lfs merge=lfs -text
65
- downloads/177.jpg filter=lfs diff=lfs merge=lfs -text
66
- downloads/18.png filter=lfs diff=lfs merge=lfs -text
67
- downloads/183.jpg filter=lfs diff=lfs merge=lfs -text
68
- downloads/186.jpg filter=lfs diff=lfs merge=lfs -text
69
- downloads/187.jpg filter=lfs diff=lfs merge=lfs -text
70
- downloads/189.jpg filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ downloads/1.jpg filter=lfs diff=lfs merge=lfs -text
37
+ downloads/100.png filter=lfs diff=lfs merge=lfs -text
38
+ downloads/101.png filter=lfs diff=lfs merge=lfs -text
39
+ downloads/102.png filter=lfs diff=lfs merge=lfs -text
40
+ downloads/103.png filter=lfs diff=lfs merge=lfs -text
41
+ downloads/104.png filter=lfs diff=lfs merge=lfs -text
42
+ downloads/105.png filter=lfs diff=lfs merge=lfs -text
43
+ downloads/106.png filter=lfs diff=lfs merge=lfs -text
44
+ downloads/107.png filter=lfs diff=lfs merge=lfs -text
45
+ downloads/108.png filter=lfs diff=lfs merge=lfs -text
46
+ downloads/11.png filter=lfs diff=lfs merge=lfs -text
47
+ downloads/110.jpg filter=lfs diff=lfs merge=lfs -text
48
+ downloads/112.jpg filter=lfs diff=lfs merge=lfs -text
49
+ downloads/116.jpg filter=lfs diff=lfs merge=lfs -text
50
+ downloads/125.jpg filter=lfs diff=lfs merge=lfs -text
51
+ downloads/127.jpg filter=lfs diff=lfs merge=lfs -text
52
+ downloads/13.png filter=lfs diff=lfs merge=lfs -text
53
+ downloads/130.jpg filter=lfs diff=lfs merge=lfs -text
54
+ downloads/134.jpg filter=lfs diff=lfs merge=lfs -text
55
+ downloads/136.jpg filter=lfs diff=lfs merge=lfs -text
56
+ downloads/139.jpg filter=lfs diff=lfs merge=lfs -text
57
+ downloads/150.jpg filter=lfs diff=lfs merge=lfs -text
58
+ downloads/151.jpg filter=lfs diff=lfs merge=lfs -text
59
+ downloads/157.jpg filter=lfs diff=lfs merge=lfs -text
60
+ downloads/160.jpg filter=lfs diff=lfs merge=lfs -text
61
+ downloads/166.jpg filter=lfs diff=lfs merge=lfs -text
62
+ downloads/168.jpg filter=lfs diff=lfs merge=lfs -text
63
+ downloads/169.jpg filter=lfs diff=lfs merge=lfs -text
64
+ downloads/173.jpg filter=lfs diff=lfs merge=lfs -text
65
+ downloads/177.jpg filter=lfs diff=lfs merge=lfs -text
66
+ downloads/18.png filter=lfs diff=lfs merge=lfs -text
67
+ downloads/183.jpg filter=lfs diff=lfs merge=lfs -text
68
+ downloads/186.jpg filter=lfs diff=lfs merge=lfs -text
69
+ downloads/187.jpg filter=lfs diff=lfs merge=lfs -text
70
+ downloads/189.jpg filter=lfs diff=lfs merge=lfs -text
71
+ db.sqlite3 filter=lfs diff=lfs merge=lfs -text
72
+ static/books/pdf/vachnamrut-gujarati.pdf filter=lfs diff=lfs merge=lfs -text
73
+ static/books/posters/swami-ni-vato_KrDvdpe.jpg filter=lfs diff=lfs merge=lfs -text
74
+ static/books/posters/swami-ni-vato.jpg filter=lfs diff=lfs merge=lfs -text
75
+ static/books/posters/vachanamrut_eP1PSm5.jpg filter=lfs diff=lfs merge=lfs -text
76
+ static/books/posters/vachanamrut.jpg filter=lfs diff=lfs merge=lfs -text
77
+ static/fonts/S0728810.otf filter=lfs diff=lfs merge=lfs -text
78
+ static/fonts/S0728810.TTF filter=lfs diff=lfs merge=lfs -text
79
+ static/images/AYMLogo.png filter=lfs diff=lfs merge=lfs -text
80
+ static/images/gswami-banner.jpg filter=lfs diff=lfs merge=lfs -text
81
+ static/images/GunatitSwami.png filter=lfs diff=lfs merge=lfs -text
82
+ static/images/kite.png filter=lfs diff=lfs merge=lfs -text
83
+ static/images/logo.png filter=lfs diff=lfs merge=lfs -text
84
+ static/images/logoMain.png filter=lfs diff=lfs merge=lfs -text
85
+ static/images/maharaj-banner.jpg filter=lfs diff=lfs merge=lfs -text
86
+ static/images/maharaj.png filter=lfs diff=lfs merge=lfs -text
87
+ static/images/manifest-icon-512.maskable.png filter=lfs diff=lfs merge=lfs -text
88
+ static/images/SHA_logo.png filter=lfs diff=lfs merge=lfs -text
89
+ static/images/shastrijiMaharaj.png filter=lfs diff=lfs merge=lfs -text
90
+ static/images/sm-banner.jpg filter=lfs diff=lfs merge=lfs -text
91
+ static/images/swamiji-banner.jpg filter=lfs diff=lfs merge=lfs -text
92
+ static/images/Swamiji.png filter=lfs diff=lfs merge=lfs -text
93
+ static/images/ym-banner.jpg filter=lfs diff=lfs merge=lfs -text
94
+ static/images/yogijiMaharaj.png filter=lfs diff=lfs merge=lfs -text
Dockerfile CHANGED
@@ -1,7 +1,7 @@
1
- FROM python:3
2
- WORKDIR /usr/src/app
3
- COPY requirements.txt ./
4
- RUN pip install -r requirements.txt
5
- COPY . .
6
- EXPOSE 7860
7
  CMD ["python","./manage.py","runserver","0.0.0.0:7860"]
 
1
+ FROM python:3
2
+ WORKDIR /usr/src/app
3
+ COPY requirements.txt ./
4
+ RUN pip install -r requirements.txt
5
+ COPY . .
6
+ EXPOSE 7860
7
  CMD ["python","./manage.py","runserver","0.0.0.0:7860"]
README.md CHANGED
@@ -1,11 +1,11 @@
1
- ---
2
- title: Connect
3
- emoji: ⚡
4
- colorFrom: green
5
- colorTo: pink
6
- sdk: docker
7
- pinned: false
8
- license: apache-2.0
9
- ---
10
-
11
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
+ ---
2
+ title: Connect
3
+ emoji: ⚡
4
+ colorFrom: green
5
+ colorTo: pink
6
+ sdk: docker
7
+ pinned: false
8
+ license: apache-2.0
9
+ ---
10
+
11
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
api/__pycache__/admin.cpython-313.pyc CHANGED
Binary files a/api/__pycache__/admin.cpython-313.pyc and b/api/__pycache__/admin.cpython-313.pyc differ
 
api/__pycache__/models.cpython-313.pyc CHANGED
Binary files a/api/__pycache__/models.cpython-313.pyc and b/api/__pycache__/models.cpython-313.pyc differ
 
api/__pycache__/urls.cpython-313.pyc CHANGED
Binary files a/api/__pycache__/urls.cpython-313.pyc and b/api/__pycache__/urls.cpython-313.pyc differ
 
api/__pycache__/views.cpython-313.pyc CHANGED
Binary files a/api/__pycache__/views.cpython-313.pyc and b/api/__pycache__/views.cpython-313.pyc differ
 
api/admin.py CHANGED
@@ -10,6 +10,9 @@ from .models import (
10
  PushSubscription,
11
  OptionPoll,
12
  Poll,
 
 
 
13
  )
14
  from import_export.admin import ImportExportModelAdmin
15
 
@@ -77,6 +80,21 @@ class PollAdmin(ImportExportModelAdmin):
77
  search_fields = ("question", "created_by")
78
 
79
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
  admin.site.register(Bhagat, BhagatAdmin)
81
  admin.site.register(Region, RegionAdmin)
82
  admin.site.register(BhajanCategory, BhajanCategoryAdmin)
@@ -86,3 +104,6 @@ admin.site.register(Notification, NotificationAdmin)
86
  admin.site.register(PushSubscription, PushSubscriptionAdmin)
87
  admin.site.register(OptionPoll, OptionPollAdmin)
88
  admin.site.register(Poll, PollAdmin)
 
 
 
 
10
  PushSubscription,
11
  OptionPoll,
12
  Poll,
13
+ Books,
14
+ Sections,
15
+ Chapters,
16
  )
17
  from import_export.admin import ImportExportModelAdmin
18
 
 
80
  search_fields = ("question", "created_by")
81
 
82
 
83
+ class BooksAdmin(ImportExportModelAdmin):
84
+ list_display = ("title", "isPdf", "hasSections", "urlId")
85
+ search_fields = ("title", "isPdf", "hasSections", "urlId")
86
+
87
+
88
+ class SectionsAdmin(ImportExportModelAdmin):
89
+ list_display = ("title", "isPdf", "hasChapters", "urlId","book__title")
90
+ search_fields = ("title", "isPdf", "hasChapters", "urlId","book__title")
91
+
92
+
93
+ class ChaptersAdmin(ImportExportModelAdmin):
94
+ list_display = ("title", "isPdf", "urlId","book__title", "section__title")
95
+ search_fields = ("title", "isPdf", "urlId","book__title", "section__title")
96
+
97
+
98
  admin.site.register(Bhagat, BhagatAdmin)
99
  admin.site.register(Region, RegionAdmin)
100
  admin.site.register(BhajanCategory, BhajanCategoryAdmin)
 
104
  admin.site.register(PushSubscription, PushSubscriptionAdmin)
105
  admin.site.register(OptionPoll, OptionPollAdmin)
106
  admin.site.register(Poll, PollAdmin)
107
+ admin.site.register(Books, BooksAdmin)
108
+ admin.site.register(Sections, SectionsAdmin)
109
+ admin.site.register(Chapters, ChaptersAdmin)
api/models.py CHANGED
@@ -1,161 +1,213 @@
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
- if not self.password.startswith("pbkdf2_sha256"):
37
- self.set_password(self.password)
38
- super().save(*args, **kwargs)
39
-
40
- def profileImage(self):
41
- return mark_safe('<img src="%s" width="50" height="50" />' % self.profile_image)
42
-
43
- def get_full_name(self):
44
- return super().get_full_name()
45
-
46
-
47
- class Region(models.Model):
48
- name = models.CharField(max_length=100)
49
-
50
- def __str__(self):
51
- return self.name
52
-
53
-
54
- class Event(models.Model):
55
- COLOR_CHOICES = (("orange","Shabha"), ("green","Activity"), ("blue","Birthday"), ("red","Important"), ("purple","Gathering"), ("yellow","Festival"), ("pink","Special"))
56
- title = models.CharField(max_length=200)
57
- description = models.TextField()
58
- date = models.DateTimeField()
59
- time = models.TimeField(default='00:00')
60
- created_by = models.ForeignKey(Bhagat, on_delete=models.CASCADE, related_name='created_events',blank=True,null=True)
61
- region = models.ForeignKey(Region, on_delete=models.CASCADE, blank=True,null=True)
62
- is_approved = models.BooleanField(default=False)
63
- color = models.CharField(max_length=15, default='orange',choices=COLOR_CHOICES)
64
-
65
- def __str__(self):
66
- return self.title
67
-
68
-
69
- class Attendance(models.Model):
70
- user = models.ForeignKey(Bhagat, on_delete=models.CASCADE)
71
- event = models.ForeignKey(Event, on_delete=models.CASCADE)
72
- status = models.CharField(max_length=20, choices=(('attending', 'Attending'), ('not_attending', 'Not Attending'), ('maybe', 'Maybe')))
73
-
74
- class Notification(models.Model):
75
- sender = models.ForeignKey(Bhagat, on_delete=models.CASCADE, related_name='sent_notifications')
76
- recipients = models.ManyToManyField(Bhagat, related_name='received_notifications')
77
- title = models.CharField(max_length=200, blank=True, null=True)
78
- content = models.TextField()
79
- timestamp = models.DateTimeField(auto_now_add=True)
80
- notification_type = models.CharField(max_length=20, choices=(("orange", "Shabha"), ("green", "Activity"), ("blue", "Birthday"), ("red", "Important"), ("purple", "Gathering"), ("yellow", "Festival"), ("pink", "Custom")))
81
-
82
- class BhajanCategory(models.Model):
83
- name = models.CharField(max_length=100)
84
- link = models.CharField(max_length=100)
85
- icon = models.URLField(blank=True)
86
-
87
- def __str__(self):
88
- return self.name
89
-
90
- def icon_image(self):
91
- return mark_safe('<img src="%s" width="50" height="50" />' % self.icon)
92
-
93
-
94
- class Bhajan(models.Model):
95
- bhajanId = models.IntegerField(blank=True, default=0)
96
- title = models.CharField(max_length=500, blank=True)
97
- title_guj = models.CharField(max_length=500, blank=True)
98
- category = models.ForeignKey(BhajanCategory, on_delete=models.CASCADE)
99
- lyrics = models.CharField(max_length=50, blank=True)
100
- audio_url = models.CharField(max_length=500, blank=True)
101
- isEng = models.BooleanField(default=False)
102
- isHnd = models.BooleanField(default=False)
103
- isGer = models.BooleanField(default=False)
104
- isAudio = models.BooleanField(default=False)
105
-
106
- def __str__(self):
107
- return self.title
108
-
109
- def musicPreivew(self):
110
- if self.isAudio:
111
- 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)
112
- else:
113
- return 'No Audio Available'
114
-
115
- def lyricsBtn(self):
116
- # i have four languages in my bhajan so add them all as buttons and show them on click
117
- languages = [["","GUJ"]]
118
- if self.isEng:
119
- languages.append(['E','ENG'])
120
- if self.isHnd:
121
- languages.append(['H','HND'])
122
- if self.isGer:
123
- languages.append(['G','GER'])
124
- html = '<ul class="object-tools" style="margin-top:0">'
125
- for lang in languages:
126
- 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>'
127
- html += '</ul>'
128
- return mark_safe(html)
129
-
130
-
131
- class PushSubscription(models.Model):
132
- user = models.ForeignKey(Bhagat, on_delete=models.CASCADE, null=True)
133
- endpoint = models.URLField(max_length=500)
134
- p256dh = models.CharField(max_length=200)
135
- auth = models.CharField(max_length=100)
136
- created_at = models.DateTimeField(auto_now_add=True)
137
-
138
-
139
- class OptionPoll(models.Model):
140
- optionText = models.TextField()
141
- voters = models.ManyToManyField(Bhagat, related_name="options_voters", blank=True)
142
-
143
- def __str__(self):
144
- return self.optionText
145
-
146
-
147
- class Poll(models.Model):
148
- question = models.TextField()
149
- options = models.ManyToManyField(
150
- OptionPoll, related_name="polls_options", blank=True
151
- )
152
- participants = models.ManyToManyField(
153
- Bhagat, related_name="polls_participant", blank=True
154
- )
155
- created_by = models.ForeignKey(
156
- Bhagat, on_delete=models.CASCADE, related_name="polls_creator"
157
- )
158
- created_at = models.DateTimeField(auto_now_add=True)
159
-
160
- def __str__(self):
161
- return self.question
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ if not self.password.startswith("pbkdf2_sha256"):
37
+ self.set_password(self.password)
38
+ super().save(*args, **kwargs)
39
+
40
+ def profileImage(self):
41
+ return mark_safe('<img src="%s" width="50" height="50" />' % self.profile_image)
42
+
43
+ def get_full_name(self):
44
+ return super().get_full_name()
45
+
46
+
47
+ class Region(models.Model):
48
+ name = models.CharField(max_length=100)
49
+
50
+ def __str__(self):
51
+ return self.name
52
+
53
+
54
+ class Event(models.Model):
55
+ COLOR_CHOICES = (("orange","Shabha"), ("green","Activity"), ("blue","Birthday"), ("red","Important"), ("purple","Gathering"), ("yellow","Festival"), ("pink","Special"))
56
+ title = models.CharField(max_length=200)
57
+ description = models.TextField()
58
+ date = models.DateTimeField()
59
+ time = models.TimeField(default='00:00')
60
+ created_by = models.ForeignKey(Bhagat, on_delete=models.CASCADE, related_name='created_events',blank=True,null=True)
61
+ region = models.ForeignKey(Region, on_delete=models.CASCADE, blank=True,null=True)
62
+ is_approved = models.BooleanField(default=False)
63
+ color = models.CharField(max_length=15, default='orange',choices=COLOR_CHOICES)
64
+
65
+ def __str__(self):
66
+ return self.title
67
+
68
+
69
+ class Attendance(models.Model):
70
+ user = models.ForeignKey(Bhagat, on_delete=models.CASCADE)
71
+ event = models.ForeignKey(Event, on_delete=models.CASCADE)
72
+ status = models.CharField(max_length=20, choices=(('attending', 'Attending'), ('not_attending', 'Not Attending'), ('maybe', 'Maybe')))
73
+
74
+ class Notification(models.Model):
75
+ sender = models.ForeignKey(Bhagat, on_delete=models.CASCADE, related_name='sent_notifications')
76
+ recipients = models.ManyToManyField(Bhagat, related_name='received_notifications')
77
+ title = models.CharField(max_length=200, blank=True, null=True)
78
+ content = models.TextField()
79
+ timestamp = models.DateTimeField(auto_now_add=True)
80
+ notification_type = models.CharField(max_length=20, choices=(("orange", "Shabha"), ("green", "Activity"), ("blue", "Birthday"), ("red", "Important"), ("purple", "Gathering"), ("yellow", "Festival"), ("pink", "Custom")))
81
+
82
+ class BhajanCategory(models.Model):
83
+ name = models.CharField(max_length=100)
84
+ link = models.CharField(max_length=100)
85
+ icon = models.URLField(blank=True)
86
+
87
+ def __str__(self):
88
+ return self.name
89
+
90
+ def icon_image(self):
91
+ return mark_safe('<img src="%s" width="50" height="50" />' % self.icon)
92
+
93
+
94
+ class Bhajan(models.Model):
95
+ bhajanId = models.IntegerField(blank=True, default=0)
96
+ title = models.CharField(max_length=500, blank=True)
97
+ title_guj = models.CharField(max_length=500, blank=True)
98
+ category = models.ForeignKey(BhajanCategory, on_delete=models.CASCADE)
99
+ lyrics = models.CharField(max_length=50, blank=True)
100
+ audio_url = models.CharField(max_length=500, blank=True)
101
+ isEng = models.BooleanField(default=False)
102
+ isHnd = models.BooleanField(default=False)
103
+ isGer = models.BooleanField(default=False)
104
+ isAudio = models.BooleanField(default=False)
105
+
106
+ def __str__(self):
107
+ return self.title
108
+
109
+ def musicPreivew(self):
110
+ if self.isAudio:
111
+ 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)
112
+ else:
113
+ return 'No Audio Available'
114
+
115
+ def lyricsBtn(self):
116
+ # i have four languages in my bhajan so add them all as buttons and show them on click
117
+ languages = [["","GUJ"]]
118
+ if self.isEng:
119
+ languages.append(['E','ENG'])
120
+ if self.isHnd:
121
+ languages.append(['H','HND'])
122
+ if self.isGer:
123
+ languages.append(['G','GER'])
124
+ html = '<ul class="object-tools" style="margin-top:0">'
125
+ for lang in languages:
126
+ 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>'
127
+ html += '</ul>'
128
+ return mark_safe(html)
129
+
130
+
131
+ class PushSubscription(models.Model):
132
+ user = models.ForeignKey(Bhagat, on_delete=models.CASCADE, null=True)
133
+ endpoint = models.URLField(max_length=500)
134
+ p256dh = models.CharField(max_length=200)
135
+ auth = models.CharField(max_length=100)
136
+ created_at = models.DateTimeField(auto_now_add=True)
137
+
138
+
139
+ class OptionPoll(models.Model):
140
+ optionText = models.TextField()
141
+ voters = models.ManyToManyField(Bhagat, related_name="options_voters", blank=True)
142
+
143
+ def __str__(self):
144
+ return self.optionText
145
+
146
+
147
+ class Poll(models.Model):
148
+ question = models.TextField()
149
+ options = models.ManyToManyField(
150
+ OptionPoll, related_name="polls_options", blank=True
151
+ )
152
+ participants = models.ManyToManyField(
153
+ Bhagat, related_name="polls_participant", blank=True
154
+ )
155
+ created_by = models.ForeignKey(
156
+ Bhagat, on_delete=models.CASCADE, related_name="polls_creator"
157
+ )
158
+ created_at = models.DateTimeField(auto_now_add=True)
159
+
160
+ def __str__(self):
161
+ return self.question
162
+
163
+
164
+ class Books(models.Model):
165
+ title = models.CharField(max_length=200)
166
+ urlId = models.CharField(max_length=200, blank=True)
167
+ author = models.CharField(max_length=200)
168
+ description = models.TextField()
169
+ poster = models.FileField(upload_to="static/books/posters/", blank=True)
170
+ pdf = models.FileField(upload_to="static/books/pdf/", blank=True)
171
+ isPdf = models.BooleanField(default=False)
172
+ hasSections = models.BooleanField(default=False)
173
+
174
+ def __str__(self):
175
+ return self.title
176
+
177
+ def image_tag(self):
178
+ return mark_safe('<img src="%s" width="50" height="50" />' % self.poster)
179
+
180
+
181
+ class Sections(models.Model):
182
+ title = models.CharField(max_length=200)
183
+ urlId = models.CharField(max_length=200, blank=True)
184
+ pdf = models.FileField(upload_to="static/books/sections/pdf/", blank=True)
185
+ isPdf = models.BooleanField(default=False)
186
+ hasChapters = models.BooleanField(default=False)
187
+ book = models.ForeignKey(
188
+ Books, on_delete=models.CASCADE, related_name="sections", null=True, blank=True
189
+ )
190
+
191
+ def __str__(self):
192
+ return self.title
193
+
194
+
195
+ class Chapters(models.Model):
196
+ title = models.CharField(max_length=200)
197
+ urlId = models.CharField(max_length=200, blank=True)
198
+ pdf = models.FileField(upload_to="static/books/chapters/pdf/", blank=True)
199
+ isPdf = models.BooleanField(default=False)
200
+ section = models.ForeignKey(
201
+ Sections,
202
+ on_delete=models.CASCADE,
203
+ related_name="chapters",
204
+ null=True,
205
+ blank=True,
206
+ )
207
+ book = models.ForeignKey(
208
+ Books, on_delete=models.CASCADE, related_name="chapters", null=True, blank=True
209
+ )
210
+ data = models.JSONField(blank=True, null=True,default=dict)
211
+
212
+ def __str__(self):
213
+ return self.title
api/urls.py CHANGED
@@ -26,4 +26,12 @@ urlpatterns = [
26
  path("change-password/", views.change_password, name="change_password"),
27
  path("polls/", views.polls, name="polls"),
28
  path("poll-voters/<int:id>", views.voterList, name="voterList"),
 
 
 
 
 
 
 
 
29
  ]
 
26
  path("change-password/", views.change_password, name="change_password"),
27
  path("polls/", views.polls, name="polls"),
28
  path("poll-voters/<int:id>", views.voterList, name="voterList"),
29
+ path("bookList/", views.bookList, name="bookList"),
30
+ path("book/<str:urlId>", views.bookDetail, name="bookDetail"),
31
+ path(
32
+ "book/<str:urlId>/<str:chapterId>",
33
+ views.bookChapterDetail,
34
+ name="bookChapterDetail",
35
+ ),
36
+ path("data", views.data, name="data"),
37
  ]
api/views.py CHANGED
@@ -16,6 +16,9 @@ from .models import (
16
  Bhajan,
17
  OptionPoll,
18
  Poll,
 
 
 
19
  )
20
  from django.conf import settings
21
  from django.core import serializers
@@ -373,6 +376,7 @@ def profile_updater(request):
373
  except Exception as e:
374
  return JsonResponse({"status": "error", "error": str(e)})
375
  else:
 
376
  user = request.user
377
  regions = Region.objects.all()
378
  data = {
@@ -630,3 +634,102 @@ def voterList(request, id):
630
  }
631
  )
632
  return JsonResponse({"data": optionsList})
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  Bhajan,
17
  OptionPoll,
18
  Poll,
19
+ Books,
20
+ Sections,
21
+ Chapters,
22
  )
23
  from django.conf import settings
24
  from django.core import serializers
 
376
  except Exception as e:
377
  return JsonResponse({"status": "error", "error": str(e)})
378
  else:
379
+
380
  user = request.user
381
  regions = Region.objects.all()
382
  data = {
 
634
  }
635
  )
636
  return JsonResponse({"data": optionsList})
637
+
638
+
639
+ @api_view(["GET"])
640
+ @permission_classes([AllowAny])
641
+ def bookList(request):
642
+ books = Books.objects.all()
643
+ bookArr = []
644
+ for book in books:
645
+ bookArr.append(
646
+ {
647
+ "id": book.id,
648
+ "urlId": book.urlId,
649
+ "title": book.title,
650
+ "author": book.author,
651
+ "description": book.description,
652
+ "poster": book.poster.url if book.poster else None,
653
+ "pdf": book.pdf.url if book.pdf else None,
654
+ "isPdf": book.isPdf,
655
+ "hasSections": book.hasSections,
656
+ }
657
+ )
658
+ return JsonResponse({"books": bookArr})
659
+
660
+
661
+ @api_view(["GET"])
662
+ @permission_classes([AllowAny])
663
+ def bookDetail(request, urlId):
664
+ book = Books.objects.filter(urlId=urlId).first()
665
+ if not book:
666
+ return JsonResponse({"error": "Book not found"}, status=404)
667
+
668
+ sections = []
669
+ if book.hasSections:
670
+ bookSections = Sections.objects.filter(book=book)
671
+ for section in bookSections:
672
+ chapters = []
673
+ bookChapters = Chapters.objects.filter(section=section)
674
+ for chapter in bookChapters:
675
+ chapters.append(
676
+ {
677
+ "id": chapter.id,
678
+ "urlId": chapter.urlId,
679
+ "data": chapter.data,
680
+ "title": chapter.title,
681
+ }
682
+ )
683
+ sections.append(
684
+ {"id": section.id, "title": section.title, "chapters": chapters}
685
+ )
686
+
687
+ return JsonResponse(
688
+ {
689
+ "book": {
690
+ "id": book.id,
691
+ "urlId": book.urlId,
692
+ "title": book.title,
693
+ "author": book.author,
694
+ "description": book.description,
695
+ "poster": book.poster.url if book.poster else None,
696
+ "pdf": book.pdf.url if book.pdf else None,
697
+ "isPdf": book.isPdf,
698
+ "hasSections": book.hasSections,
699
+ "sections": sections if book.hasSections else None,
700
+ }
701
+ }
702
+ )
703
+
704
+
705
+ @api_view(["GET"])
706
+ @permission_classes([AllowAny])
707
+ def bookChapterDetail(request, urlId, chapterId):
708
+ book = Books.objects.filter(urlId=urlId).first()
709
+ chapter = Chapters.objects.filter(urlId=chapterId, book=book).first()
710
+ if not chapter:
711
+ return JsonResponse({"error": "Chapter not found"}, status=404)
712
+
713
+ return JsonResponse(
714
+ {
715
+ "chapter": {
716
+ "id": chapter.id,
717
+ "urlId": chapter.urlId,
718
+ "title": chapter.title,
719
+ "data": chapter.data,
720
+ "book": {
721
+ "id": chapter.book.id,
722
+ "title": chapter.book.title,
723
+ "author": chapter.book.author,
724
+ "poster": chapter.book.poster.url if chapter.book.poster else None,
725
+ "pdf": chapter.book.pdf.url if chapter.book.pdf else None,
726
+ },
727
+ }
728
+ }
729
+ )
730
+
731
+
732
+ @api_view(["GET"])
733
+ def data(request):
734
+
735
+ return JsonResponse({"data": ""})
db.sqlite3 CHANGED
Binary files a/db.sqlite3 and b/db.sqlite3 differ
 
extra/bhajanData.json CHANGED
The diff for this file is too large to render. See raw diff
 
extra/dataMaker.py CHANGED
@@ -76,3 +76,135 @@ for bhajan in bhajan_audios:
76
  data.append(metadata)
77
  with open("./metadata.json", "w") as f:
78
  json.dump(data, f, indent=4)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  data.append(metadata)
77
  with open("./metadata.json", "w") as f:
78
  json.dump(data, f, indent=4)
79
+
80
+
81
+ def swamiNiVato():
82
+ prakaran1Data = json.loads(
83
+ open("./extra/swamiNiVato/prakaran_1_data.json", "r", encoding="utf-8").read()
84
+ )
85
+ prakaran2Data = json.loads(
86
+ open("./extra/swamiNiVato/prakaran_2_data.json", "r", encoding="utf-8").read()
87
+ )
88
+ prakaran3Data = json.loads(
89
+ open("./extra/swamiNiVato/prakaran_3_data.json", "r", encoding="utf-8").read()
90
+ )
91
+ prakaran4Data = json.loads(
92
+ open("./extra/swamiNiVato/prakaran_4_data.json", "r", encoding="utf-8").read()
93
+ )
94
+ prakaran5Data = json.loads(
95
+ open("./extra/swamiNiVato/prakaran_5_data.json", "r", encoding="utf-8").read()
96
+ )
97
+ prakaran6Data = json.loads(
98
+ open("./extra/swamiNiVato/prakaran_6_data.json", "r", encoding="utf-8").read()
99
+ )
100
+ prakaran7Data = json.loads(
101
+ open("./extra/swamiNiVato/prakaran_7_data.json", "r", encoding="utf-8").read()
102
+ )
103
+
104
+ swamiNiVato = Books.objects.filter(title="Swami Ni Vato").first()
105
+ # create 7 new sections in the book
106
+ for i in range(1, 8):
107
+ section = Sections.objects.create(
108
+ book=swamiNiVato,
109
+ title=f"Prakaran {i}",
110
+ urlId=f"prakaran-{i}",
111
+ isPdf=False,
112
+ hasChapters=True,
113
+ )
114
+ # each prakaran {
115
+ # "contentGuj": "અનાદિ મૂળ અક્ષરમૂર્તિ શ્રી ગુણાતીતાનંદ સ્વામીએ વાત કરી જે, ભગવાન ને સાધુના મહિમાની વાતું નિરંતર કરવી ને સાંભળવી. ને મહારજ તો પોતાનું અક્ષરધામ ને પાર્ષદ ને પોતાનું સમગ્ર ઐશ્વર્ય તે લઈને આંહી પધાર્યા છે. તે એવા ને એવા જ છે. ને દેહ મૂકીને જેને પામવા છે, તે આજ દેહ છતાં મળ્યા છે, કાંઈ બાકી નથી; ને એમ ન સમજાય તેથી જીવમાં દુર્બળતા રહે છે, ને એમ સમજાય ત્યારે કોઈ દિવસ જીવમાં દુર્બળતા મનાય જ નહિ; ને જીવ બીજી રીતનો થઈ જાય છે. ને મહિમા સમજવા જેવું બીજું કોઈ મોટું સાધન પણ નથી ને મહિમા વિના બીજાં ગમે એટલાં સાધન કરે, તો પણ જીવ બળને પામે નહિ. ને એવો મહિમા સમજવાનું કારણ તો એવા ભગવદીનો પ્રસંગ છે, પણ તે વિના એવો મહિમા સમજાતો નથી.",
116
+ # "footnoteGuj": "",
117
+ # "mp3": "https://ia903107.us.archive.org/9/items/vato_20191108/1.mp3",
118
+ # "contentEng": "One should continuously engage in delivering and listening to talks on the glory of God and his Sadhu. Maharaj has come here (to earth) with his Akshardham,parshadsand all his powers. He is exactly the same (today).1He whom we wish to attain after death, we have attained during this life; there is nothing more left to attain. If this truth is not understood properly, thejivaremains weak. Once this is understood, thejivawill no longer consider itself weak and will acquire a different mettle. Also, there is no greater endeavour than to understand the glory of God. Without understanding the glory, even countless other endeavours will not enable thejivato attain spiritual strength. The means to understanding this glory is profound association with such a holy Sadhu, and without it the true glory of God cannot be understood.",
119
+ # "footnoteEng": "1. Meaning, the human form on earth is the same as the divine form in Akshardham.",
120
+ # "prakaran": 1,
121
+ # "vato": 1
122
+ # }
123
+ # data
124
+ for data in prakaran1Data:
125
+ section = Sections.objects.filter(
126
+ book=swamiNiVato, urlId=f"prakaran-{data["prakaran"]}"
127
+ ).first()
128
+ Chapters.objects.create(
129
+ title=f'Vat {data["vato"]}',
130
+ urlId=f'vat-{data["vato"]}',
131
+ data=data,
132
+ section=section,
133
+ book=swamiNiVato,
134
+ isPdf=False,
135
+ )
136
+ for data in prakaran2Data:
137
+ section = Sections.objects.filter(
138
+ book=swamiNiVato, urlId=f"prakaran-{data['prakaran']}"
139
+ ).first()
140
+ Chapters.objects.create(
141
+ title=f'Vat {data["vato"]}',
142
+ urlId=f'vat-{data["vato"]}',
143
+ data=data,
144
+ section=section,
145
+ book=swamiNiVato,
146
+ isPdf=False,
147
+ )
148
+ for data in prakaran3Data:
149
+ section = Sections.objects.filter(
150
+ book=swamiNiVato, urlId=f"prakaran-{data['prakaran']}"
151
+ ).first()
152
+ Chapters.objects.create(
153
+ title=f'Vat {data["vato"]}',
154
+ urlId=f'vat-{data["vato"]}',
155
+ data=data,
156
+ section=section,
157
+ book=swamiNiVato,
158
+ isPdf=False,
159
+ )
160
+ for data in prakaran4Data:
161
+ section = Sections.objects.filter(
162
+ book=swamiNiVato, urlId=f"prakaran-{data['prakaran']}"
163
+ ).first()
164
+ Chapters.objects.create(
165
+ title=f'Vat {data["vato"]}',
166
+ urlId=f'vat-{data["vato"]}',
167
+ data=data,
168
+ section=section,
169
+ book=swamiNiVato,
170
+ isPdf=False,
171
+ )
172
+ for data in prakaran5Data:
173
+ section = Sections.objects.filter(
174
+ book=swamiNiVato, urlId=f"prakaran-{data['prakaran']}"
175
+ ).first()
176
+ Chapters.objects.create(
177
+ title=f'Vat {data["vato"]}',
178
+ urlId=f'vat-{data["vato"]}',
179
+ data=data,
180
+ section=section,
181
+ book=swamiNiVato,
182
+ isPdf=False,
183
+ )
184
+
185
+ for data in prakaran6Data:
186
+ section = Sections.objects.filter(
187
+ book=swamiNiVato, urlId=f"prakaran-{data['prakaran']}"
188
+ ).first()
189
+ Chapters.objects.create(
190
+ title=f'Vat {data["vato"]}',
191
+ urlId=f'vat-{data["vato"]}',
192
+ data=data,
193
+ section=section,
194
+ book=swamiNiVato,
195
+ isPdf=False,
196
+ )
197
+
198
+ for data in prakaran7Data:
199
+ section = Sections.objects.filter(
200
+ book=swamiNiVato, urlId=f"prakaran-{data['prakaran']}"
201
+ ).first()
202
+ Chapters.objects.create(
203
+ title=f'Vat {data["vato"]}',
204
+ urlId=f'vat-{data["vato"]}',
205
+ data=data,
206
+ section=section,
207
+ book=swamiNiVato,
208
+ isPdf=False,
209
+ )
210
+
extra/swamiNiVato/prakaran_1_data.json ADDED
The diff for this file is too large to render. See raw diff
 
extra/swamiNiVato/prakaran_2_data.json ADDED
The diff for this file is too large to render. See raw diff
 
extra/swamiNiVato/prakaran_3_data.json ADDED
The diff for this file is too large to render. See raw diff
 
extra/swamiNiVato/prakaran_4_data.json ADDED
The diff for this file is too large to render. See raw diff
 
extra/swamiNiVato/prakaran_5_data.json ADDED
The diff for this file is too large to render. See raw diff
 
extra/swamiNiVato/prakaran_6_data.json ADDED
The diff for this file is too large to render. See raw diff
 
extra/swamiNiVato/prakaran_7_data.json ADDED
The diff for this file is too large to render. See raw diff
 
frontend/urls.py CHANGED
@@ -1,18 +1,18 @@
1
- from django.urls import path
2
- from . import views
3
-
4
- urlpatterns = [
5
- path('', views.index, name='index'),
6
- path('calendar/', views.index, name='calendar'),
7
- path('bhajan/', views.index, name='bhajan'),
8
- path('bhajan/<str:id>/', views.index, name='bhajan_detail'),
9
- path('setting/', views.index, name='setting'),
10
- path('books/', views.index, name='books'),
11
- path('change-password/', views.index, name='change_password'),
12
- path('notification/', views.index, name='notification'),
13
- path('notification-setting/', views.index, name='notification_setting'),
14
- path('profile/', views.index, name='profile'),
15
- path('login/', views.index, name='login'),
16
- path('logout/', views.index, name='logout'),
17
- path('register/', views.index, name='register'),
18
  ]
 
1
+ from django.urls import path
2
+ from . import views
3
+
4
+ urlpatterns = [
5
+ path('', views.index, name='index'),
6
+ path('calendar/', views.index, name='calendar'),
7
+ path('bhajan/', views.index, name='bhajan'),
8
+ path('bhajan/<str:id>/', views.index, name='bhajan_detail'),
9
+ path('setting/', views.index, name='setting'),
10
+ path('books/', views.index, name='books'),
11
+ path('change-password/', views.index, name='change_password'),
12
+ path('notification/', views.index, name='notification'),
13
+ path('notification-setting/', views.index, name='notification_setting'),
14
+ path('profile/', views.index, name='profile'),
15
+ path('login/', views.index, name='login'),
16
+ path('logout/', views.index, name='logout'),
17
+ path('register/', views.index, name='register'),
18
  ]
frontend/views.py CHANGED
@@ -1,4 +1,4 @@
1
- from django.shortcuts import render
2
-
3
- def index(request, id=None):
4
- return render(request, 'index.html')
 
1
+ from django.shortcuts import render
2
+
3
+ def index(request, id=None):
4
+ return render(request, 'index.html')
hsapssconnect/__pycache__/settings.cpython-313.pyc CHANGED
Binary files a/hsapssconnect/__pycache__/settings.cpython-313.pyc and b/hsapssconnect/__pycache__/settings.cpython-313.pyc differ
 
hsapssconnect/__pycache__/urls.cpython-313.pyc CHANGED
Binary files a/hsapssconnect/__pycache__/urls.cpython-313.pyc and b/hsapssconnect/__pycache__/urls.cpython-313.pyc differ
 
hsapssconnect/settings.py CHANGED
@@ -1,177 +1,180 @@
1
- """
2
- Django settings for hsapssconnect project.
3
-
4
- Generated by 'django-admin startproject' using Django 5.0.6.
5
-
6
- For more information on this file, see
7
- https://docs.djangoproject.com/en/5.0/topics/settings/
8
-
9
- For the full list of settings and their values, see
10
- https://docs.djangoproject.com/en/5.0/ref/settings/
11
- """
12
-
13
- from pathlib import Path
14
- from datetime import timedelta
15
-
16
- # Build paths inside the project like this: BASE_DIR / 'subdir'.
17
- BASE_DIR = Path(__file__).resolve().parent.parent
18
-
19
-
20
- # Quick-start development settings - unsuitable for production
21
- # See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/
22
-
23
- # SECURITY WARNING: keep the secret key used in production secret!
24
- SECRET_KEY = "django-insecure-lde0hgz*y9#h@sbz_u6&=&=i9cef23em^sax91iqb_)1#2s*qd"
25
-
26
- # SECURITY WARNING: don't run with debug turned on in production!
27
- DEBUG = True
28
-
29
- ALLOWED_HOSTS = ["*", "127.0.0.1", "localhost", "thejagstudio-connect.hf.space", "zjkjjkxf-8000.use.devtunnels.ms"]
30
- CORS_ORIGIN_ALLOW_ALL = True
31
- CORS_ALLOW_CREDENTIALS = True
32
- CORS_ALLOWED_ORIGINS = ["https://thejagstudio-connect.hf.space", "https://zjkjjkxf-8000.use.devtunnels.ms"]
33
-
34
- CSRF_TRUSTED_ORIGINS = ["https://thejagstudio-connect.hf.space", "https://zjkjjkxf-8000.use.devtunnels.ms"]
35
- # SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
36
- # SECURE_SSL_REDIRECT = True
37
- # SESSION_COOKIE_SECURE = True
38
- # CSRF_COOKIE_SECURE = True
39
-
40
-
41
- # Application definition
42
-
43
- INSTALLED_APPS = [
44
- "django.contrib.admin",
45
- "django.contrib.auth",
46
- "django.contrib.contenttypes",
47
- "django.contrib.sessions",
48
- "django.contrib.messages",
49
- "daphne",
50
- "api",
51
- "notification",
52
- "corsheaders",
53
- "import_export",
54
- "rest_framework",
55
- "rest_framework_simplejwt",
56
- "rest_framework_simplejwt.token_blacklist",
57
- "django.contrib.staticfiles",
58
- ]
59
-
60
- MIDDLEWARE = [
61
- "django.middleware.security.SecurityMiddleware",
62
- "django.contrib.sessions.middleware.SessionMiddleware",
63
- "corsheaders.middleware.CorsMiddleware",
64
- "django.middleware.common.CommonMiddleware",
65
- "django.middleware.csrf.CsrfViewMiddleware",
66
- "django.contrib.auth.middleware.AuthenticationMiddleware",
67
- "django.contrib.messages.middleware.MessageMiddleware",
68
- "django.middleware.clickjacking.XFrameOptionsMiddleware",
69
- ]
70
-
71
- ROOT_URLCONF = "hsapssconnect.urls"
72
-
73
- TEMPLATES = [
74
- {
75
- "BACKEND": "django.template.backends.django.DjangoTemplates",
76
- "DIRS": ["templates"],
77
- "APP_DIRS": True,
78
- "OPTIONS": {
79
- "context_processors": [
80
- "django.template.context_processors.debug",
81
- "django.template.context_processors.request",
82
- "django.contrib.auth.context_processors.auth",
83
- "django.contrib.messages.context_processors.messages",
84
- ],
85
- },
86
- },
87
- ]
88
-
89
- WSGI_APPLICATION = "hsapssconnect.wsgi.application"
90
- ASGI_APPLICATION = "hsapssconnect.asgi.application"
91
- CHANNEL_LAYERS = {
92
- "default": {
93
- "BACKEND": "channels.layers.InMemoryChannelLayer",
94
- }
95
- }
96
- # Database
97
- # https://docs.djangoproject.com/en/5.0/ref/settings/#databases
98
-
99
- DATABASES = {
100
- "default": {
101
- "ENGINE": "django.db.backends.postgresql",
102
- "NAME": "postgres",
103
- "USER": "postgres.psjobjezrtkjvenhsmge",
104
- "PORT": 6543,
105
- "PASSWORD": "ErO9vgKcwCA1bdah",
106
- "HOST": "aws-0-us-east-1.pooler.supabase.com",
107
- }
108
- # "default": {
109
- # "ENGINE": "django.db.backends.sqlite3",
110
- # "NAME": BASE_DIR / "db.sqlite3",
111
- # }
112
- }
113
-
114
- # Password validation
115
- # https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators
116
-
117
- AUTH_PASSWORD_VALIDATORS = [
118
- {
119
- "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",
120
- },
121
- {
122
- "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",
123
- },
124
- {
125
- "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator",
126
- },
127
- {
128
- "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",
129
- },
130
- ]
131
-
132
-
133
- # Internationalization
134
- # https://docs.djangoproject.com/en/5.0/topics/i18n/
135
-
136
- LANGUAGE_CODE = "en-us"
137
-
138
- TIME_ZONE = "EST"
139
-
140
- USE_I18N = True
141
-
142
- USE_TZ = True
143
-
144
-
145
- # Static files (CSS, JavaScript, Images)
146
- # https://docs.djangoproject.com/en/5.0/howto/static-files/
147
-
148
- STATIC_URL = "static/"
149
-
150
- # Default primary key field type
151
- # https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field
152
-
153
- DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
154
- AUTH_USER_MODEL = "api.Bhagat"
155
-
156
-
157
- RECAPTCHA_SITE_KEY = "6LfDVWUqAAAAAOPlzTro2t51YeymYoz-Pt89tarF"
158
- RECAPTCHA_SECRET_KEY = "6LfDVWUqAAAAACzIE4ZKx71R0smuDVJaV-GBLR66"
159
-
160
- REST_FRAMEWORK = {
161
- "DEFAULT_AUTHENTICATION_CLASSES": ("rest_framework_simplejwt.authentication.JWTAuthentication",),
162
- "DEFAULT_RENDERER_CLASSES": [
163
- "rest_framework.renderers.JSONRenderer",
164
- "rest_framework.renderers.BrowsableAPIRenderer",
165
- ],
166
- }
167
-
168
- SIMPLE_JWT = {
169
- "ACCESS_TOKEN_LIFETIME": timedelta(days=60),
170
- "REFRESH_TOKEN_LIFETIME": timedelta(days=120),
171
- "ROTATE_REFRESH_TOKENS": False,
172
- "ALGORITHM": "HS256",
173
- "SIGNING_KEY": "HariPremci6fhen4G3iGpCE0IYrhLOPCWAvoxxVw",
174
- "AUTH_HEADER_TYPES": ("Bearer",),
175
- }
176
-
177
- WEBPUSH_SETTINGS = {"VAPID_PUBLIC_KEY": "BOE7XX5MdzDx4thHOajMNZJj8C1LqGaa8X35O7hww5uzsvFyjFAcRZw71AUAYubeggvOoSvkB4nd1xtPkPFfB9U", "VAPID_PRIVATE_KEY": "gdd6ff_ti4W33uj23npZRIUZM6ViyTIOueHIv01Q7Lc", "VAPID_ADMIN_EMAIL": "[email protected]"}
 
 
 
 
1
+ """
2
+ Django settings for hsapssconnect project.
3
+
4
+ Generated by 'django-admin startproject' using Django 5.0.6.
5
+
6
+ For more information on this file, see
7
+ https://docs.djangoproject.com/en/5.0/topics/settings/
8
+
9
+ For the full list of settings and their values, see
10
+ https://docs.djangoproject.com/en/5.0/ref/settings/
11
+ """
12
+
13
+ from pathlib import Path
14
+ from datetime import timedelta
15
+
16
+ # Build paths inside the project like this: BASE_DIR / 'subdir'.
17
+ BASE_DIR = Path(__file__).resolve().parent.parent
18
+
19
+
20
+ # Quick-start development settings - unsuitable for production
21
+ # See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/
22
+
23
+ # SECURITY WARNING: keep the secret key used in production secret!
24
+ SECRET_KEY = "django-insecure-lde0hgz*y9#h@sbz_u6&=&=i9cef23em^sax91iqb_)1#2s*qd"
25
+
26
+ # SECURITY WARNING: don't run with debug turned on in production!
27
+ DEBUG = True
28
+
29
+ ALLOWED_HOSTS = ["*", "127.0.0.1", "localhost", "thejagstudio-connect.hf.space", "zjkjjkxf-8000.use.devtunnels.ms"]
30
+ CORS_ORIGIN_ALLOW_ALL = True
31
+ CORS_ALLOW_CREDENTIALS = True
32
+ CORS_ALLOWED_ORIGINS = ["https://thejagstudio-connect.hf.space", "https://zjkjjkxf-8000.use.devtunnels.ms"]
33
+
34
+ CSRF_TRUSTED_ORIGINS = ["https://thejagstudio-connect.hf.space", "https://zjkjjkxf-8000.use.devtunnels.ms"]
35
+ # SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
36
+ # SECURE_SSL_REDIRECT = True
37
+ # SESSION_COOKIE_SECURE = True
38
+ # CSRF_COOKIE_SECURE = True
39
+
40
+
41
+ # Application definition
42
+
43
+ INSTALLED_APPS = [
44
+ "django.contrib.admin",
45
+ "django.contrib.auth",
46
+ "django.contrib.contenttypes",
47
+ "django.contrib.sessions",
48
+ "django.contrib.messages",
49
+ "daphne",
50
+ "api",
51
+ "notification",
52
+ "corsheaders",
53
+ "import_export",
54
+ "rest_framework",
55
+ "rest_framework_simplejwt",
56
+ "rest_framework_simplejwt.token_blacklist",
57
+ "django.contrib.staticfiles",
58
+ ]
59
+
60
+ MIDDLEWARE = [
61
+ "django.middleware.security.SecurityMiddleware",
62
+ "django.contrib.sessions.middleware.SessionMiddleware",
63
+ "corsheaders.middleware.CorsMiddleware",
64
+ "django.middleware.common.CommonMiddleware",
65
+ "django.middleware.csrf.CsrfViewMiddleware",
66
+ "django.contrib.auth.middleware.AuthenticationMiddleware",
67
+ "django.contrib.messages.middleware.MessageMiddleware",
68
+ "django.middleware.clickjacking.XFrameOptionsMiddleware",
69
+ ]
70
+
71
+ ROOT_URLCONF = "hsapssconnect.urls"
72
+
73
+ TEMPLATES = [
74
+ {
75
+ "BACKEND": "django.template.backends.django.DjangoTemplates",
76
+ "DIRS": ["templates"],
77
+ "APP_DIRS": True,
78
+ "OPTIONS": {
79
+ "context_processors": [
80
+ "django.template.context_processors.debug",
81
+ "django.template.context_processors.request",
82
+ "django.contrib.auth.context_processors.auth",
83
+ "django.contrib.messages.context_processors.messages",
84
+ ],
85
+ },
86
+ },
87
+ ]
88
+
89
+ WSGI_APPLICATION = "hsapssconnect.wsgi.application"
90
+ ASGI_APPLICATION = "hsapssconnect.asgi.application"
91
+ CHANNEL_LAYERS = {
92
+ "default": {
93
+ "BACKEND": "channels.layers.InMemoryChannelLayer",
94
+ }
95
+ }
96
+ # Database
97
+ # https://docs.djangoproject.com/en/5.0/ref/settings/#databases
98
+
99
+ DATABASES = {
100
+ "default": {
101
+ "ENGINE": "django.db.backends.postgresql",
102
+ "NAME": "postgres",
103
+ "USER": "postgres.psjobjezrtkjvenhsmge",
104
+ "PORT": 6543,
105
+ "PASSWORD": "ErO9vgKcwCA1bdah",
106
+ "HOST": "aws-0-us-east-1.pooler.supabase.com",
107
+ }
108
+ # "default": {
109
+ # "ENGINE": "django.db.backends.sqlite3",
110
+ # "NAME": BASE_DIR / "db.sqlite3",
111
+ # }
112
+ }
113
+
114
+ # Password validation
115
+ # https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators
116
+
117
+ AUTH_PASSWORD_VALIDATORS = [
118
+ {
119
+ "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",
120
+ },
121
+ {
122
+ "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",
123
+ },
124
+ {
125
+ "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator",
126
+ },
127
+ {
128
+ "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",
129
+ },
130
+ ]
131
+
132
+
133
+ # Internationalization
134
+ # https://docs.djangoproject.com/en/5.0/topics/i18n/
135
+
136
+ LANGUAGE_CODE = "en-us"
137
+
138
+ TIME_ZONE = "EST"
139
+
140
+ USE_I18N = True
141
+
142
+ USE_TZ = True
143
+
144
+
145
+ # Static files (CSS, JavaScript, Images)
146
+ # https://docs.djangoproject.com/en/5.0/howto/static-files/
147
+
148
+ STATIC_URL = "static/"
149
+ STATICFILES_DIRS = [
150
+ BASE_DIR / "static",
151
+ ]
152
+
153
+ # Default primary key field type
154
+ # https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field
155
+
156
+ DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
157
+ AUTH_USER_MODEL = "api.Bhagat"
158
+
159
+
160
+ RECAPTCHA_SITE_KEY = "6LfDVWUqAAAAAOPlzTro2t51YeymYoz-Pt89tarF"
161
+ RECAPTCHA_SECRET_KEY = "6LfDVWUqAAAAACzIE4ZKx71R0smuDVJaV-GBLR66"
162
+
163
+ REST_FRAMEWORK = {
164
+ "DEFAULT_AUTHENTICATION_CLASSES": ("rest_framework_simplejwt.authentication.JWTAuthentication",),
165
+ "DEFAULT_RENDERER_CLASSES": [
166
+ "rest_framework.renderers.JSONRenderer",
167
+ "rest_framework.renderers.BrowsableAPIRenderer",
168
+ ],
169
+ }
170
+
171
+ SIMPLE_JWT = {
172
+ "ACCESS_TOKEN_LIFETIME": timedelta(days=60),
173
+ "REFRESH_TOKEN_LIFETIME": timedelta(days=120),
174
+ "ROTATE_REFRESH_TOKENS": False,
175
+ "ALGORITHM": "HS256",
176
+ "SIGNING_KEY": "HariPremci6fhen4G3iGpCE0IYrhLOPCWAvoxxVw",
177
+ "AUTH_HEADER_TYPES": ("Bearer",),
178
+ }
179
+
180
+ WEBPUSH_SETTINGS = {"VAPID_PUBLIC_KEY": "BOE7XX5MdzDx4thHOajMNZJj8C1LqGaa8X35O7hww5uzsvFyjFAcRZw71AUAYubeggvOoSvkB4nd1xtPkPFfB9U", "VAPID_PRIVATE_KEY": "gdd6ff_ti4W33uj23npZRIUZM6ViyTIOueHIv01Q7Lc", "VAPID_ADMIN_EMAIL": "[email protected]"}
hsapssconnect/urls.py CHANGED
@@ -1,9 +1,15 @@
1
  from django.contrib import admin
2
  from django.urls import path
3
  from django.urls.conf import include
 
 
4
 
5
- urlpatterns = [
6
- path("admin/", admin.site.urls),
7
- path("api/", include("api.urls")),
8
- path("notifications/", include("notification.urls"))
9
- ]
 
 
 
 
 
1
  from django.contrib import admin
2
  from django.urls import path
3
  from django.urls.conf import include
4
+ from django.conf import settings
5
+ from django.conf.urls.static import static
6
 
7
+ urlpatterns = (
8
+ [
9
+ path("admin/", admin.site.urls),
10
+ path("api/", include("api.urls")),
11
+ path("notifications/", include("notification.urls")),
12
+ ]
13
+ + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
14
+ + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
15
+ )
notification/admin.py CHANGED
@@ -1,3 +1,3 @@
1
- from django.contrib import admin
2
-
3
- # Register your models here.
 
1
+ from django.contrib import admin
2
+
3
+ # Register your models here.
notification/apps.py CHANGED
@@ -1,6 +1,6 @@
1
- from django.apps import AppConfig
2
-
3
-
4
- class NotificationConfig(AppConfig):
5
- default_auto_field = 'django.db.models.BigAutoField'
6
- name = 'notification'
 
1
+ from django.apps import AppConfig
2
+
3
+
4
+ class NotificationConfig(AppConfig):
5
+ default_auto_field = 'django.db.models.BigAutoField'
6
+ name = 'notification'
notification/consumers.py CHANGED
@@ -1,33 +1,33 @@
1
- import json
2
- from channels.generic.websocket import AsyncWebsocketConsumer
3
-
4
- class NotificationConsumer(AsyncWebsocketConsumer):
5
-
6
- async def connect(self):
7
- self.group_name = 'Yuvak'
8
- await self.channel_layer.group_add(
9
- self.group_name,
10
- self.channel_name
11
- )
12
- await self.accept()
13
-
14
- async def disconnect(self, close_code):
15
- await self.channel_layer.group_discard(
16
- self.group_name,
17
- self.channel_name
18
- )
19
-
20
- async def receive(self, text_data):
21
- data = json.loads(text_data)
22
- message = data['data']
23
- await self.channel_layer.group_send(
24
- self.group_name,
25
- {
26
- 'type': 'send_notification',
27
- 'message': message
28
- }
29
- )
30
-
31
- async def send_notification(self, event):
32
- message = event['message']
33
  await self.send(text_data=json.dumps({'message': message}))
 
1
+ import json
2
+ from channels.generic.websocket import AsyncWebsocketConsumer
3
+
4
+ class NotificationConsumer(AsyncWebsocketConsumer):
5
+
6
+ async def connect(self):
7
+ self.group_name = 'Yuvak'
8
+ await self.channel_layer.group_add(
9
+ self.group_name,
10
+ self.channel_name
11
+ )
12
+ await self.accept()
13
+
14
+ async def disconnect(self, close_code):
15
+ await self.channel_layer.group_discard(
16
+ self.group_name,
17
+ self.channel_name
18
+ )
19
+
20
+ async def receive(self, text_data):
21
+ data = json.loads(text_data)
22
+ message = data['data']
23
+ await self.channel_layer.group_send(
24
+ self.group_name,
25
+ {
26
+ 'type': 'send_notification',
27
+ 'message': message
28
+ }
29
+ )
30
+
31
+ async def send_notification(self, event):
32
+ message = event['message']
33
  await self.send(text_data=json.dumps({'message': message}))
notification/models.py CHANGED
@@ -1,3 +1,3 @@
1
- from django.db import models
2
-
3
- # Create your models here.
 
1
+ from django.db import models
2
+
3
+ # Create your models here.
notification/routing.py CHANGED
@@ -1,6 +1,6 @@
1
- from django.urls import re_path
2
- from . import consumers
3
-
4
- websocket_urlpatterns = [
5
- re_path(r'ws/notification/$', consumers.NotificationConsumer.as_asgi()),
6
  ]
 
1
+ from django.urls import re_path
2
+ from . import consumers
3
+
4
+ websocket_urlpatterns = [
5
+ re_path(r'ws/notification/$', consumers.NotificationConsumer.as_asgi()),
6
  ]
notification/tests.py CHANGED
@@ -1,3 +1,3 @@
1
- from django.test import TestCase
2
-
3
- # Create your tests here.
 
1
+ from django.test import TestCase
2
+
3
+ # Create your tests here.
notification/urls.py CHANGED
@@ -1,7 +1,7 @@
1
- from django.urls import path
2
- from . import views
3
-
4
- urlpatterns = [
5
- # path('notifications/', views.notification_list, name='notification_list'),
6
- # path('notifications/<int:id>/', views.notification_detail, name='notification_detail'),
7
  ]
 
1
+ from django.urls import path
2
+ from . import views
3
+
4
+ urlpatterns = [
5
+ # path('notifications/', views.notification_list, name='notification_list'),
6
+ # path('notifications/<int:id>/', views.notification_detail, name='notification_detail'),
7
  ]
notification/views.py CHANGED
@@ -1,3 +1,3 @@
1
- from django.shortcuts import render
2
-
3
- # Create your views here.
 
1
+ from django.shortcuts import render
2
+
3
+ # Create your views here.
requirements.txt CHANGED
@@ -1,10 +1,10 @@
1
- django
2
- django-cors-headers
3
- djangorestframework
4
- djangorestframework-simplejwt
5
- psycopg2
6
- django-import-export
7
- requests
8
- channels[daphne]
9
- channels-redis
10
  pywebpush
 
1
+ django
2
+ django-cors-headers
3
+ djangorestframework
4
+ djangorestframework-simplejwt
5
+ psycopg2
6
+ django-import-export
7
+ requests
8
+ channels[daphne]
9
+ channels-redis
10
  pywebpush
static/CalendarData.csv ADDED
The diff for this file is too large to render. See raw diff
 
static/books/pdf/vachnamrut-gujarati.pdf ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:829aa21667ac0846e8a3faad5a9eb21e2b2c0d30efa403532a51936b2c72b7e8
3
+ size 2054421
static/books/posters/swami-ni-vato.jpg ADDED

Git LFS Details

  • SHA256: 15d314db1510bcf1927988186c23728f2d5e89c97f664df7729a29e8c3ac2a4d
  • Pointer size: 131 Bytes
  • Size of remote file: 180 kB
static/books/posters/swami-ni-vato_KrDvdpe.jpg ADDED

Git LFS Details

  • SHA256: 15d314db1510bcf1927988186c23728f2d5e89c97f664df7729a29e8c3ac2a4d
  • Pointer size: 131 Bytes
  • Size of remote file: 180 kB
static/books/posters/vachanamrut.jpg ADDED

Git LFS Details

  • SHA256: 89ad213974ba4594401f5274382b8b5c842c41ef991f62ef672097afd4e40959
  • Pointer size: 131 Bytes
  • Size of remote file: 177 kB
static/books/posters/vachanamrut_eP1PSm5.jpg ADDED

Git LFS Details

  • SHA256: 89ad213974ba4594401f5274382b8b5c842c41ef991f62ef672097afd4e40959
  • Pointer size: 131 Bytes
  • Size of remote file: 177 kB
static/data.json ADDED
@@ -0,0 +1,1666 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "2024": {
3
+ "January": {
4
+ "GujName": "VS-2079 - Posh-Maha",
5
+ "startEmpty": 6,
6
+ "endEmpty": 5,
7
+ "days": 31,
8
+ "1": {
9
+ "data": [
10
+ "Dasham"
11
+ ],
12
+ "events": [
13
+ {
14
+ "name": "1 - Posh Sud Dasham",
15
+ "color": "slate-500"
16
+ }
17
+ ],
18
+ "type": "normalDate"
19
+ },
20
+ "2": {
21
+ "data": [
22
+ "Ekadashi"
23
+ ],
24
+ "events": [
25
+ {
26
+ "name": "2 - Posh Sud Ekadashi",
27
+ "color": "#94a3b8"
28
+ },
29
+ {
30
+ "name": "Putrada Ekadashi",
31
+ "color": "#60a5fa"
32
+ }
33
+ ],
34
+ "type": "normalDate"
35
+ },
36
+ "3": {
37
+ "data": [
38
+ "Baras"
39
+ ],
40
+ "events": [
41
+ {
42
+ "name": "3 - Posh Sud Baras",
43
+ "color": "#94a3b8"
44
+ }
45
+ ],
46
+ "type": "normalDate"
47
+ },
48
+ "4": {
49
+ "data": [
50
+ "Teras"
51
+ ],
52
+ "events": [
53
+ {
54
+ "name": "4 - Posh Sud Teras",
55
+ "color": "#94a3b8"
56
+ }
57
+ ],
58
+ "type": "normalDate"
59
+ },
60
+ "5": {
61
+ "data": [
62
+ "Chaudas"
63
+ ],
64
+ "events": [
65
+ {
66
+ "name": "5 - Posh Sud Chaudas",
67
+ "color": "#94a3b8"
68
+ }
69
+ ],
70
+ "type": "normalDate"
71
+ },
72
+ "6": {
73
+ "data": [
74
+ "GunatitSwami.png"
75
+ ],
76
+ "events": [
77
+ {
78
+ "name": "6 - Posh Sud Poonam",
79
+ "color": "#94a3b8"
80
+ },
81
+ {
82
+ "name": "Shri Gunatitanand Swami Diksha Din",
83
+ "color": "#60a5fa"
84
+ },
85
+ {
86
+ "name": "Atmiya Sanskardham - Amadavad",
87
+ "color": "#60a5fa"
88
+ }
89
+ ],
90
+ "type": "imageDate"
91
+ },
92
+ "7": {
93
+ "data": [
94
+ "Padvo"
95
+ ],
96
+ "events": [
97
+ {
98
+ "name": "7 - Posh Sud Padvo",
99
+ "color": "#94a3b8"
100
+ }
101
+ ],
102
+ "type": "normalDate"
103
+ },
104
+ "8": {
105
+ "data": [
106
+ "AYMLogo.png"
107
+ ],
108
+ "events": [
109
+ {
110
+ "name": "5 - Posh Vad Bij",
111
+ "color": "#94a3b8"
112
+ },
113
+ {
114
+ "name": "Atmiya Yuva Mohotsav",
115
+ "color": "#60a5fa"
116
+ }
117
+ ],
118
+ "type": "imageDate"
119
+ },
120
+ "9": {
121
+ "data": [],
122
+ "events": [
123
+ {
124
+ "name": "9 - Posh Vad Bij",
125
+ "color": "#94a3b8"
126
+ },
127
+ {
128
+ "name": "Ode Mandir Patostav",
129
+ "color": "#60a5fa"
130
+ }
131
+ ],
132
+ "type": "templeDate"
133
+ },
134
+ "10": {
135
+ "data": [
136
+ "Trij"
137
+ ],
138
+ "events": [
139
+ {
140
+ "name": "10 - Posh Vad Trij",
141
+ "color": "#94a3b8"
142
+ }
143
+ ],
144
+ "type": "normalDate"
145
+ },
146
+ "11": {
147
+ "data": [
148
+ "Choth"
149
+ ],
150
+ "events": [
151
+ {
152
+ "name": "11 - Posh Vad Choth",
153
+ "color": "#94a3b8"
154
+ }
155
+ ],
156
+ "type": "normalDate"
157
+ },
158
+ "12": {
159
+ "data": [
160
+ "Pancham",
161
+ "Swami Vivekanand Jayanti"
162
+ ],
163
+ "events": [
164
+ {
165
+ "name": "12 - Posh Vad Pancham",
166
+ "color": "#94a3b8"
167
+ },
168
+ {
169
+ "name": "Swami Vivekanand Jayanti",
170
+ "color": "white"
171
+ }
172
+ ],
173
+ "type": "multipleDate"
174
+ },
175
+ "13": {
176
+ "data": [
177
+ "Chhath"
178
+ ],
179
+ "events": [
180
+ {
181
+ "name": "13 - Posh Vad Chhath",
182
+ "color": "#94a3b8"
183
+ }
184
+ ],
185
+ "type": "normalDate"
186
+ },
187
+ "14": {
188
+ "data": [
189
+ "kite.png"
190
+ ],
191
+ "events": [
192
+ {
193
+ "name": "14 - Posh Vad Satam",
194
+ "color": "#94a3b8"
195
+ },
196
+ {
197
+ "name": "Makar Sankranti",
198
+ "color": "#fb923c"
199
+ },
200
+ {
201
+ "name": "Dhanurmash Sampat",
202
+ "color": "#60a5fa"
203
+ }
204
+ ],
205
+ "type": "imageDate"
206
+ },
207
+ "15": {
208
+ "data": [
209
+ "Aatham"
210
+ ],
211
+ "events": [
212
+ {
213
+ "name": "15 - Posh Vad Aatham",
214
+ "color": "#94a3b8"
215
+ }
216
+ ],
217
+ "type": "normalDate"
218
+ },
219
+ "16": {
220
+ "data": [
221
+ "Nom"
222
+ ],
223
+ "events": [
224
+ {
225
+ "name": "16 - Posh Vad Nom",
226
+ "color": "#94a3b8"
227
+ }
228
+ ],
229
+ "type": "normalDate"
230
+ },
231
+ "17": {
232
+ "data": [
233
+ "Dasham"
234
+ ],
235
+ "events": [
236
+ {
237
+ "name": "17 - Posh Vad Dasham",
238
+ "color": "#94a3b8"
239
+ }
240
+ ],
241
+ "type": "normalDate"
242
+ },
243
+ "18": {
244
+ "data": [
245
+ "Ekadashi",
246
+ "Shattila Ekadashi"
247
+ ],
248
+ "events": [
249
+ {
250
+ "name": "18 - Posh Vad Ekadashi",
251
+ "color": "#94a3b8"
252
+ },
253
+ {
254
+ "name": "Shattila Ekadashi",
255
+ "color": "white"
256
+ },
257
+ {
258
+ "name": "Shri Yogiji Maharaj Swadhamgaman Din Tithi",
259
+ "color": "#60a5fa"
260
+ }
261
+ ],
262
+ "type": "multipleDate"
263
+ },
264
+ "19": {
265
+ "data": [
266
+ "Baras"
267
+ ],
268
+ "events": [
269
+ {
270
+ "name": "19 - Posh Vad Baras",
271
+ "color": "#94a3b8"
272
+ }
273
+ ],
274
+ "type": "normalDate"
275
+ },
276
+ "20": {
277
+ "data": [
278
+ "Teras"
279
+ ],
280
+ "events": [
281
+ {
282
+ "name": "20 - Posh Vad Teras",
283
+ "color": "#94a3b8"
284
+ }
285
+ ],
286
+ "type": "normalDate"
287
+ },
288
+ "21": {
289
+ "data": [
290
+ "Amas"
291
+ ],
292
+ "events": [
293
+ {
294
+ "name": "21 - Posh Vad Amas",
295
+ "color": "#94a3b8"
296
+ }
297
+ ],
298
+ "type": "normalDate"
299
+ },
300
+ "22": {
301
+ "data": [
302
+ "Padvo"
303
+ ],
304
+ "events": [
305
+ {
306
+ "name": "22 - Maha Sud Padvo",
307
+ "color": "#94a3b8"
308
+ }
309
+ ],
310
+ "type": "normalDate"
311
+ },
312
+ "23": {
313
+ "data": [
314
+ "yogijiMaharaj.png"
315
+ ],
316
+ "events": [
317
+ {
318
+ "name": "23 - Maha Sud Bij",
319
+ "color": "#94a3b8"
320
+ },
321
+ {
322
+ "name": "Shri Yogiji Maharaj Swadhamgaman Din",
323
+ "color": "#60a5fa"
324
+ },
325
+ {
326
+ "name": "Danti & Navapura Mandir Patosav",
327
+ "color": "#60a5fa"
328
+ }
329
+ ],
330
+ "type": "imageDate"
331
+ },
332
+ "24": {
333
+ "data": [
334
+ "Trij"
335
+ ],
336
+ "events": [
337
+ {
338
+ "name": "24 - Maha Sud Trij",
339
+ "color": "#94a3b8"
340
+ }
341
+ ],
342
+ "type": "normalDate"
343
+ },
344
+ "25": {
345
+ "data": [
346
+ "Choth"
347
+ ],
348
+ "events": [
349
+ {
350
+ "name": "25 - Maha Sud Choth",
351
+ "color": "#94a3b8"
352
+ }
353
+ ],
354
+ "type": "normalDate"
355
+ },
356
+ "26": {
357
+ "data": [
358
+ "shastrijiMaharaj.png"
359
+ ],
360
+ "events": [
361
+ {
362
+ "name": "26 - Maha Sud Pancham",
363
+ "color": "#94a3b8"
364
+ },
365
+ {
366
+ "name": "Republic Day",
367
+ "color": "#fb923c"
368
+ },
369
+ {
370
+ "name": "Shri Shastriji Maharaj Swadhamgaman Din",
371
+ "color": "#60a5fa"
372
+ },
373
+ {
374
+ "name": "Vasant Panchami, Shri Shishapatri Jayanti",
375
+ "color": "#60a5fa"
376
+ },
377
+ {
378
+ "name": "Ghodasar - Amadavad Harimandir Patostav",
379
+ "color": "#60a5fa"
380
+ }
381
+ ],
382
+ "type": "imageDate"
383
+ },
384
+ "27": {
385
+ "data": [
386
+ "Chhath"
387
+ ],
388
+ "events": [
389
+ {
390
+ "name": "27 - Maha Sud Chhath",
391
+ "color": "#94a3b8"
392
+ }
393
+ ],
394
+ "type": "normalDate"
395
+ },
396
+ "28": {
397
+ "data": [
398
+ "Satam"
399
+ ],
400
+ "events": [
401
+ {
402
+ "name": "28 - Maha Sud Satam",
403
+ "color": "#94a3b8"
404
+ }
405
+ ],
406
+ "type": "normalDate"
407
+ },
408
+ "29": {
409
+ "data": [
410
+ "gopalanadSwami.png"
411
+ ],
412
+ "events": [
413
+ {
414
+ "name": "29 - Maha Sud Aatham",
415
+ "color": "#94a3b8"
416
+ },
417
+ {
418
+ "name": "Shri Gopalanand Swami Pragatya Din",
419
+ "color": "#60a5fa"
420
+ }
421
+ ],
422
+ "type": "imageDate"
423
+ },
424
+ "30": {
425
+ "data": [
426
+ "Nom"
427
+ ],
428
+ "events": [
429
+ {
430
+ "name": "30 - Maha Sud Nom",
431
+ "color": "#94a3b8"
432
+ }
433
+ ],
434
+ "type": "normalDate"
435
+ },
436
+ "31": {
437
+ "data": [
438
+ "Dasham"
439
+ ],
440
+ "events": [
441
+ {
442
+ "name": "31 - Maha Sud Dasham",
443
+ "color": "#94a3b8"
444
+ }
445
+ ],
446
+ "type": "normalDate"
447
+ }
448
+ },
449
+ "February": {
450
+ "GujName": "VS-2079 - Maha-Fagan",
451
+ "startEmpty": 2,
452
+ "endEmpty": 5,
453
+ "days": 28,
454
+ "1": {
455
+ "data": [
456
+ "Ekadashi",
457
+ "Jaya Ekadashi"
458
+ ],
459
+ "events": [
460
+ {
461
+ "name": "1 - Maha Sud Ekadashi",
462
+ "color": "#94a3b8"
463
+ },
464
+ {
465
+ "name": "Jaya Ekadashi",
466
+ "color": "white"
467
+ }
468
+ ],
469
+ "type": "multipleDate"
470
+ },
471
+ "2": {
472
+ "data": [
473
+ "Baras"
474
+ ],
475
+ "events": [
476
+ {
477
+ "name": "2 - Maha Sud Baras",
478
+ "color": "#94a3b8"
479
+ }
480
+ ],
481
+ "type": "normalDate"
482
+ },
483
+ "3": {
484
+ "data": [
485
+ "Teras",
486
+ "Shri Vishwakarma Jayanti"
487
+ ],
488
+ "events": [
489
+ {
490
+ "name": "3 - Maha Sud Teras",
491
+ "color": "#94a3b8"
492
+ },
493
+ {
494
+ "name": "Shri Vishwakarma Jayanti",
495
+ "color": "white"
496
+ }
497
+ ],
498
+ "type": "multipleDate"
499
+ },
500
+ "4": {
501
+ "data": [
502
+ "Chaudas"
503
+ ],
504
+ "events": [
505
+ {
506
+ "name": "4 - Maha Sud Chaudas",
507
+ "color": "#94a3b8"
508
+ }
509
+ ],
510
+ "type": "normalDate"
511
+ },
512
+ "5": {
513
+ "data": [
514
+ "Poonam"
515
+ ],
516
+ "events": [
517
+ {
518
+ "name": "5 - Maha Sud Poonam",
519
+ "color": "#94a3b8"
520
+ }
521
+ ],
522
+ "type": "normalDate"
523
+ },
524
+ "6": {
525
+ "data": [
526
+ "Padvo"
527
+ ],
528
+ "events": [
529
+ {
530
+ "name": "6 - Maha Vas Padvo",
531
+ "color": "#94a3b8"
532
+ }
533
+ ],
534
+ "type": "normalDate"
535
+ },
536
+ "7": {
537
+ "data": [
538
+ "Bij"
539
+ ],
540
+ "events": [
541
+ {
542
+ "name": "7 - Maha Vad Bij",
543
+ "color": "#94a3b8"
544
+ }
545
+ ],
546
+ "type": "normalDate"
547
+ },
548
+ "8": {
549
+ "data": [
550
+ "Trij"
551
+ ],
552
+ "events": [
553
+ {
554
+ "name": "8 - Maha Vad Trij",
555
+ "color": "#94a3b8"
556
+ }
557
+ ],
558
+ "type": "normalDate"
559
+ },
560
+ "9": {
561
+ "data": [],
562
+ "events": [
563
+ {
564
+ "name": "9 - Maha Vad Choth",
565
+ "color": "#94a3b8"
566
+ },
567
+ {
568
+ "name": "Bhaktidham - Netrang Mandir Patostav",
569
+ "color": "#60a5fa"
570
+ }
571
+ ],
572
+ "type": "templeDate"
573
+ },
574
+ "10": {
575
+ "data": [
576
+ "Choth"
577
+ ],
578
+ "events": [
579
+ {
580
+ "name": "10 - Maha Vad Choth",
581
+ "color": "#94a3b8"
582
+ }
583
+ ],
584
+ "type": "normalDate"
585
+ },
586
+ "11": {
587
+ "data": [
588
+ "Pancham"
589
+ ],
590
+ "events": [
591
+ {
592
+ "name": "11 - Maha Vad Pancham",
593
+ "color": "#94a3b8"
594
+ }
595
+ ],
596
+ "type": "normalDate"
597
+ },
598
+ "12": {
599
+ "data": [
600
+ "Chhath"
601
+ ],
602
+ "events": [
603
+ {
604
+ "name": "12 - Maha Vad Chhath",
605
+ "color": "#94a3b8"
606
+ }
607
+ ],
608
+ "type": "normalDate"
609
+ },
610
+ "13": {
611
+ "data": [
612
+ "Satam"
613
+ ],
614
+ "events": [
615
+ {
616
+ "name": "13 - Maha Vad Satam",
617
+ "color": "#94a3b8"
618
+ }
619
+ ],
620
+ "type": "normalDate"
621
+ },
622
+ "14": {
623
+ "data": [
624
+ "Aatham"
625
+ ],
626
+ "events": [
627
+ {
628
+ "name": "14 - Maha Vad Aatham",
629
+ "color": "#94a3b8"
630
+ }
631
+ ],
632
+ "type": "normalDate"
633
+ },
634
+ "15": {
635
+ "data": [
636
+ "Nom",
637
+ "Shri Aksharvihari Swami Pragatya Din"
638
+ ],
639
+ "events": [
640
+ {
641
+ "name": "15 - Mah Vad Nom",
642
+ "color": "#94a3b8"
643
+ },
644
+ {
645
+ "name": "Shri Aksharvihari Swami Pragatya Din",
646
+ "color": "white"
647
+ }
648
+ ],
649
+ "type": "multipleDate"
650
+ },
651
+ "16": {
652
+ "data": [
653
+ "Ekadashi"
654
+ ],
655
+ "events": [
656
+ {
657
+ "name": "16 - Maha Vad Ekadashi",
658
+ "color": "#94a3b8"
659
+ },
660
+ {
661
+ "name": "Vijaya Ekadashi",
662
+ "color": "white"
663
+ }
664
+ ],
665
+ "type": "normalDate"
666
+ },
667
+ "17": {
668
+ "data": [],
669
+ "events": [
670
+ {
671
+ "name": "17 - Mah Vad Baras",
672
+ "color": "#94a3b8"
673
+ },
674
+ {
675
+ "name": "Machhivas",
676
+ "color": "#94a3b8"
677
+ }
678
+ ],
679
+ "type": "templeDate"
680
+ },
681
+ "18": {
682
+ "data": [
683
+ "shiv.png"
684
+ ],
685
+ "events": [
686
+ {
687
+ "name": "18 - Maha Vad Teras",
688
+ "color": "#94a3b8"
689
+ },
690
+ {
691
+ "name": "Maha Shivaratri",
692
+ "color": "#fb923c"
693
+ }
694
+ ],
695
+ "type": "imageDate"
696
+ },
697
+ "19": {
698
+ "data": [
699
+ "shastrijiMaharaj.png"
700
+ ],
701
+ "events": [
702
+ {
703
+ "name": "19 - Maha Vad Chaudash",
704
+ "color": "#94a3b8"
705
+ },
706
+ {
707
+ "name": "Shri Shastriji Maharaj Diksha Din",
708
+ "color": "#60a5fa"
709
+ }
710
+ ],
711
+ "type": "imageDate"
712
+ },
713
+ "20": {
714
+ "data": [
715
+ "Amas"
716
+ ],
717
+ "events": [
718
+ {
719
+ "name": "20 - Maha Vad Amas",
720
+ "color": "#94a3b8"
721
+ }
722
+ ],
723
+ "type": "normalDate"
724
+ },
725
+ "21": {
726
+ "data": [
727
+ "Padvo"
728
+ ],
729
+ "events": [
730
+ {
731
+ "name": "21 - Fagan Sud Padvo",
732
+ "color": "#94a3b8"
733
+ }
734
+ ],
735
+ "type": "normalDate"
736
+ },
737
+ "22": {
738
+ "data": [
739
+ "Trij"
740
+ ],
741
+ "events": [
742
+ {
743
+ "name": "22 - Fagan Sud Trij",
744
+ "color": "#94a3b8"
745
+ }
746
+ ],
747
+ "type": "normalDate"
748
+ },
749
+ "23": {
750
+ "data": [
751
+ "Choth"
752
+ ],
753
+ "events": [
754
+ {
755
+ "name": "22 - Fagan Sud Choth",
756
+ "color": "#94a3b8"
757
+ }
758
+ ],
759
+ "type": "normalDate"
760
+ },
761
+ "24": {
762
+ "data": [
763
+ "Pancham"
764
+ ],
765
+ "events": [
766
+ {
767
+ "name": "24 - Fagan Sud Pancham",
768
+ "color": "#94a3b8"
769
+ },
770
+ {
771
+ "name": "Rajkot Mandir Patostav",
772
+ "color": "blue-500"
773
+ }
774
+ ],
775
+ "type": "templeDate"
776
+ },
777
+ "25": {
778
+ "data": [
779
+ "Chhath"
780
+ ],
781
+ "events": [
782
+ {
783
+ "name": "25 - Fagan Sud Chhath",
784
+ "color": "#94a3b8"
785
+ }
786
+ ],
787
+ "type": "normalDate"
788
+ },
789
+ "26": {
790
+ "data": [
791
+ "Satam",
792
+ "Holashtak Betha"
793
+ ],
794
+ "events": [
795
+ {
796
+ "name": "26 - Fagan Sud Satam",
797
+ "color": "#94a3b8"
798
+ },
799
+ {
800
+ "name": "Holashtak Betha",
801
+ "color": "white"
802
+ }
803
+ ],
804
+ "type": "multipleDate"
805
+ },
806
+ "27": {
807
+ "data": [
808
+ "Aatham"
809
+ ],
810
+ "events": [
811
+ {
812
+ "name": "27 - Fagan Sud Aatham",
813
+ "color": "#94a3b8"
814
+ }
815
+ ],
816
+ "type": "normalDate"
817
+ },
818
+ "28": {
819
+ "data": [
820
+ "Nom"
821
+ ],
822
+ "events": [
823
+ {
824
+ "name": "28 - Fagan Sud Nom",
825
+ "color": "#94a3b8"
826
+ }
827
+ ],
828
+ "type": "normalDate"
829
+ }
830
+ },
831
+ "March": {
832
+ "GujName": "VS-2079 - Fagan-Chaitra",
833
+ "startEmpty": 2,
834
+ "endEmpty": 2,
835
+ "days": 31,
836
+ "1": {
837
+ "data": [
838
+ "Dasham"
839
+ ],
840
+ "events": [
841
+ {
842
+ "name": "1 - Fagan Sud Dasham",
843
+ "color": "#94a3b8"
844
+ }
845
+ ],
846
+ "type": "normalDate"
847
+ },
848
+ "2": {
849
+ "data": [
850
+ "Ekadashi "
851
+ ],
852
+ "events": [
853
+ {
854
+ "name": "2 - Fagan Sud Ekadashi",
855
+ "color": "#94a3b8"
856
+ }
857
+ ],
858
+ "type": "normalDate"
859
+ },
860
+ "3": {
861
+ "data": [
862
+ "Ekadashi",
863
+ "Amalki Ekadashi"
864
+ ],
865
+ "events": [
866
+ {
867
+ "name": "3 - Fagan Sud Ekadashi",
868
+ "color": "#94a3b8"
869
+ },
870
+ {
871
+ "name": "Amalki Ekadashi",
872
+ "color": "#94a3b8"
873
+ }
874
+ ],
875
+ "type": "multipleDate"
876
+ },
877
+ "4": {
878
+ "data": [
879
+ "Baras"
880
+ ],
881
+ "events": [
882
+ {
883
+ "name": "4 - Fagan Sud Baras",
884
+ "color": "#94a3b8"
885
+ }
886
+ ],
887
+ "type": "normalDate"
888
+ },
889
+ "5": {
890
+ "data": [
891
+ "Teras"
892
+ ],
893
+ "events": [
894
+ {
895
+ "name": "5 - Fagan Sud Teras",
896
+ "color": "#94a3b8"
897
+ }
898
+ ],
899
+ "type": "normalDate"
900
+ },
901
+ "6": {
902
+ "data": [
903
+ "bhagatji.png"
904
+ ],
905
+ "events": [
906
+ {
907
+ "name": "6 - Fagan Sud Poonam",
908
+ "color": "#94a3b8"
909
+ },
910
+ {
911
+ "name": "Shri Bhagataji Maharaj Pragatya Din",
912
+ "color": "#60a5fa"
913
+ }
914
+ ],
915
+ "type": "imageDate"
916
+ },
917
+ "7": {
918
+ "data": [
919
+ "Poonam",
920
+ "Dhuleti"
921
+ ],
922
+ "events": [
923
+ {
924
+ "name": "7 - Fagan Sud Poonam",
925
+ "color": "#94a3b8"
926
+ },
927
+ {
928
+ "name": "Dhuleti",
929
+ "color": "#fb923c"
930
+ }
931
+ ],
932
+ "type": "multipleDate"
933
+ },
934
+ "8": {
935
+ "data": [
936
+ "Padvo"
937
+ ],
938
+ "events": [
939
+ {
940
+ "name": "8 - Fagan Vad Padvo",
941
+ "color": "#94a3b8"
942
+ }
943
+ ],
944
+ "type": "normalDate"
945
+ },
946
+ "9": {
947
+ "data": [
948
+ "Bij"
949
+ ],
950
+ "events": [
951
+ {
952
+ "name": "9 - Fagan Vad Bij",
953
+ "color": "#94a3b8"
954
+ }
955
+ ],
956
+ "type": "normalDate"
957
+ },
958
+ "10": {
959
+ "data": [
960
+ "Trij"
961
+ ],
962
+ "events": [
963
+ {
964
+ "name": "10 - Fagan Vad Trij",
965
+ "color": "#94a3b8"
966
+ }
967
+ ],
968
+ "type": "normalDate"
969
+ },
970
+ "11": {
971
+ "data": [
972
+ "Choth"
973
+ ],
974
+ "events": [
975
+ {
976
+ "name": "11 - Fagan Vad Choth",
977
+ "color": "#94a3b8"
978
+ }
979
+ ],
980
+ "type": "normalDate"
981
+ },
982
+ "12": {
983
+ "data": [
984
+ "Pancham"
985
+ ],
986
+ "events": [
987
+ {
988
+ "name": "12 - Fagan Vad Pancham",
989
+ "color": "#94a3b8"
990
+ }
991
+ ],
992
+ "type": "normalDate"
993
+ },
994
+ "13": {
995
+ "data": [
996
+ "Chhath"
997
+ ],
998
+ "events": [
999
+ {
1000
+ "name": "13 - Fagan Vad Chhath",
1001
+ "color": "#94a3b8"
1002
+ }
1003
+ ],
1004
+ "type": "normalDate"
1005
+ },
1006
+ "14": {
1007
+ "data": [
1008
+ "Satam"
1009
+ ],
1010
+ "events": [
1011
+ {
1012
+ "name": "14 - Fagan Vad Satam",
1013
+ "color": "#94a3b8"
1014
+ }
1015
+ ],
1016
+ "type": "normalDate"
1017
+ },
1018
+ "15": {
1019
+ "data": [
1020
+ "Aatham"
1021
+ ],
1022
+ "events": [
1023
+ {
1024
+ "name": "15 - Fagan Vad Aatham",
1025
+ "color": "#94a3b8"
1026
+ }
1027
+ ],
1028
+ "type": "normalDate"
1029
+ },
1030
+ "16": {
1031
+ "data": [
1032
+ "Nom"
1033
+ ],
1034
+ "events": [
1035
+ {
1036
+ "name": "16 - Fagan Vad Nom",
1037
+ "color": "#94a3b8"
1038
+ }
1039
+ ],
1040
+ "type": "normalDate"
1041
+ },
1042
+ "17": {
1043
+ "data": [
1044
+ "Dasham"
1045
+ ],
1046
+ "events": [
1047
+ {
1048
+ "name": "17 - Fagan Vad Dasham",
1049
+ "color": "#94a3b8"
1050
+ }
1051
+ ],
1052
+ "type": "normalDate"
1053
+ },
1054
+ "18": {
1055
+ "data": [
1056
+ "Ekadashi",
1057
+ "Papmochani Ekadashi"
1058
+ ],
1059
+ "events": [
1060
+ {
1061
+ "name": "18 - Fagan Vad Ekadashi",
1062
+ "color": "#94a3b8"
1063
+ },
1064
+ {
1065
+ "name": "Papmochani Ekadashi",
1066
+ "color": "white"
1067
+ }
1068
+ ],
1069
+ "type": "multipleDate"
1070
+ },
1071
+ "19": {
1072
+ "data": [
1073
+ "Baras"
1074
+ ],
1075
+ "events": [
1076
+ {
1077
+ "name": "19 - Fagan Vad Baras",
1078
+ "color": "#94a3b8"
1079
+ }
1080
+ ],
1081
+ "type": "normalDate"
1082
+ },
1083
+ "20": {
1084
+ "data": [
1085
+ "Chaudas"
1086
+ ],
1087
+ "events": [
1088
+ {
1089
+ "name": "20 - Fagan Vad Chaudas",
1090
+ "color": "#94a3b8"
1091
+ }
1092
+ ],
1093
+ "type": "normalDate"
1094
+ },
1095
+ "21": {
1096
+ "data": [
1097
+ "Amas"
1098
+ ],
1099
+ "events": [
1100
+ {
1101
+ "name": "21 - Fagan Vad Amas",
1102
+ "color": "#94a3b8"
1103
+ }
1104
+ ],
1105
+ "type": "normalDate"
1106
+ },
1107
+ "22": {
1108
+ "data": [
1109
+ "Padvo",
1110
+ "Gudi Padvo"
1111
+ ],
1112
+ "events": [
1113
+ {
1114
+ "name": "22 - Chaitra Sud Padvo",
1115
+ "color": "#94a3b8"
1116
+ },
1117
+ {
1118
+ "name": "Gudi Padvo",
1119
+ "color": "#fb923c"
1120
+ }
1121
+ ],
1122
+ "type": "multipleDate"
1123
+ },
1124
+ "23": {
1125
+ "data": [
1126
+ "Bij",
1127
+ "Cheti Chand"
1128
+ ],
1129
+ "events": [
1130
+ {
1131
+ "name": "23 - Chaitra Sud Bij",
1132
+ "color": "#94a3b8"
1133
+ },
1134
+ {
1135
+ "name": "Cheti Chand",
1136
+ "color": "#fb923c"
1137
+ }
1138
+ ],
1139
+ "type": "multipleDate"
1140
+ },
1141
+ "24": {
1142
+ "data": [
1143
+ "Trij"
1144
+ ],
1145
+ "events": [
1146
+ {
1147
+ "name": "24 - Chaitra Sud Trij",
1148
+ "color": "#94a3b8"
1149
+ }
1150
+ ],
1151
+ "type": "normalDate"
1152
+ },
1153
+ "25": {
1154
+ "data": [
1155
+ "Choth"
1156
+ ],
1157
+ "events": [
1158
+ {
1159
+ "name": "25 - Chaitra Sud Choth",
1160
+ "color": "#94a3b8"
1161
+ }
1162
+ ],
1163
+ "type": "normalDate"
1164
+ },
1165
+ "26": {
1166
+ "data": [
1167
+ "Pancham"
1168
+ ],
1169
+ "events": [
1170
+ {
1171
+ "name": "26 - Chaitra Sud Pancham",
1172
+ "color": "#94a3b8"
1173
+ }
1174
+ ],
1175
+ "type": "normalDate"
1176
+ },
1177
+ "27": {
1178
+ "data": [],
1179
+ "events": [
1180
+ {
1181
+ "name": "5 - Chaitra Sud Chhath",
1182
+ "color": "#94a3b8"
1183
+ },
1184
+ {
1185
+ "name": "Bharuch Mandir Patostav",
1186
+ "color": "#94a3b8"
1187
+ }
1188
+ ],
1189
+ "type": "templeDate"
1190
+ },
1191
+ "28": {
1192
+ "data": [
1193
+ "Satam"
1194
+ ],
1195
+ "events": [
1196
+ {
1197
+ "name": "28 - Chaitra Sud Satam",
1198
+ "color": "#94a3b8"
1199
+ }
1200
+ ],
1201
+ "type": "normalDate"
1202
+ },
1203
+ "29": {
1204
+ "data": [
1205
+ "Atham"
1206
+ ],
1207
+ "events": [
1208
+ {
1209
+ "name": "29 - Chaitra Sud Atham",
1210
+ "color": "#94a3b8"
1211
+ }
1212
+ ],
1213
+ "type": "normalDate"
1214
+ },
1215
+ "30": {
1216
+ "data": [
1217
+ "maharaj.png"
1218
+ ],
1219
+ "events": [
1220
+ {
1221
+ "name": "30 - Chaitra Sud Nom",
1222
+ "color": "#94a3b8"
1223
+ },
1224
+ {
1225
+ "name": "Bhagwan Swaminarayan Pragatya Din",
1226
+ "color": "#fb923c"
1227
+ },
1228
+ {
1229
+ "name": "Haridham - Sokhda Mandir Patostav",
1230
+ "color": "#60a5fa"
1231
+ }
1232
+ ],
1233
+ "type": "imageDate"
1234
+ },
1235
+ "31": {
1236
+ "data": [
1237
+ "Dasham"
1238
+ ],
1239
+ "events": [
1240
+ {
1241
+ "name": "31 - Chaitra Sud Dasham",
1242
+ "color": "#94a3b8"
1243
+ }
1244
+ ],
1245
+ "type": "normalDate"
1246
+ }
1247
+ },
1248
+ "April": {
1249
+ "GujName": "VS-2079 - Fagan-Chaitra",
1250
+ "startEmpty": 2,
1251
+ "endEmpty": 2,
1252
+ "days": 31,
1253
+ "1": {
1254
+ "data": [
1255
+ "Dasham"
1256
+ ],
1257
+ "events": [
1258
+ {
1259
+ "name": "1 - Fagan Sud Dasham",
1260
+ "color": "#94a3b8"
1261
+ }
1262
+ ],
1263
+ "type": "normalDate"
1264
+ },
1265
+ "2": {
1266
+ "data": [
1267
+ "Ekadashi "
1268
+ ],
1269
+ "events": [
1270
+ {
1271
+ "name": "2 - Fagan Sud Ekadashi",
1272
+ "color": "#94a3b8"
1273
+ }
1274
+ ],
1275
+ "type": "normalDate"
1276
+ },
1277
+ "3": {
1278
+ "data": [
1279
+ "Ekadashi",
1280
+ "Amalki Ekadashi"
1281
+ ],
1282
+ "events": [
1283
+ {
1284
+ "name": "3 - Fagan Sud Ekadashi",
1285
+ "color": "#94a3b8"
1286
+ },
1287
+ {
1288
+ "name": "Amalki Ekadashi",
1289
+ "color": "#94a3b8"
1290
+ }
1291
+ ],
1292
+ "type": "multipleDate"
1293
+ },
1294
+ "4": {
1295
+ "data": [
1296
+ "Baras"
1297
+ ],
1298
+ "events": [
1299
+ {
1300
+ "name": "4 - Fagan Sud Baras",
1301
+ "color": "#94a3b8"
1302
+ }
1303
+ ],
1304
+ "type": "normalDate"
1305
+ },
1306
+ "5": {
1307
+ "data": [
1308
+ "Teras"
1309
+ ],
1310
+ "events": [
1311
+ {
1312
+ "name": "5 - Fagan Sud Teras",
1313
+ "color": "#94a3b8"
1314
+ }
1315
+ ],
1316
+ "type": "normalDate"
1317
+ },
1318
+ "6": {
1319
+ "data": [
1320
+ "bhagatji.png"
1321
+ ],
1322
+ "events": [
1323
+ {
1324
+ "name": "6 - Fagan Sud Poonam",
1325
+ "color": "#94a3b8"
1326
+ },
1327
+ {
1328
+ "name": "Shri Bhagataji Maharaj Pragatya Din",
1329
+ "color": "#60a5fa"
1330
+ }
1331
+ ],
1332
+ "type": "imageDate"
1333
+ },
1334
+ "7": {
1335
+ "data": [
1336
+ "Poonam",
1337
+ "Dhuleti"
1338
+ ],
1339
+ "events": [
1340
+ {
1341
+ "name": "7 - Fagan Sud Poonam",
1342
+ "color": "#94a3b8"
1343
+ },
1344
+ {
1345
+ "name": "Dhuleti",
1346
+ "color": "#fb923c"
1347
+ }
1348
+ ],
1349
+ "type": "multipleDate"
1350
+ },
1351
+ "8": {
1352
+ "data": [
1353
+ "Padvo"
1354
+ ],
1355
+ "events": [
1356
+ {
1357
+ "name": "8 - Fagan Vad Padvo",
1358
+ "color": "#94a3b8"
1359
+ }
1360
+ ],
1361
+ "type": "normalDate"
1362
+ },
1363
+ "9": {
1364
+ "data": [
1365
+ "Bij"
1366
+ ],
1367
+ "events": [
1368
+ {
1369
+ "name": "9 - Fagan Vad Bij",
1370
+ "color": "#94a3b8"
1371
+ }
1372
+ ],
1373
+ "type": "normalDate"
1374
+ },
1375
+ "10": {
1376
+ "data": [
1377
+ "Trij"
1378
+ ],
1379
+ "events": [
1380
+ {
1381
+ "name": "10 - Fagan Vad Trij",
1382
+ "color": "#94a3b8"
1383
+ }
1384
+ ],
1385
+ "type": "normalDate"
1386
+ },
1387
+ "11": {
1388
+ "data": [
1389
+ "Choth"
1390
+ ],
1391
+ "events": [
1392
+ {
1393
+ "name": "11 - Fagan Vad Choth",
1394
+ "color": "#94a3b8"
1395
+ }
1396
+ ],
1397
+ "type": "normalDate"
1398
+ },
1399
+ "12": {
1400
+ "data": [
1401
+ "Pancham"
1402
+ ],
1403
+ "events": [
1404
+ {
1405
+ "name": "12 - Fagan Vad Pancham",
1406
+ "color": "#94a3b8"
1407
+ }
1408
+ ],
1409
+ "type": "normalDate"
1410
+ },
1411
+ "13": {
1412
+ "data": [
1413
+ "Chhath"
1414
+ ],
1415
+ "events": [
1416
+ {
1417
+ "name": "13 - Fagan Vad Chhath",
1418
+ "color": "#94a3b8"
1419
+ }
1420
+ ],
1421
+ "type": "normalDate"
1422
+ },
1423
+ "14": {
1424
+ "data": [
1425
+ "Satam"
1426
+ ],
1427
+ "events": [
1428
+ {
1429
+ "name": "14 - Fagan Vad Satam",
1430
+ "color": "#94a3b8"
1431
+ }
1432
+ ],
1433
+ "type": "normalDate"
1434
+ },
1435
+ "15": {
1436
+ "data": [
1437
+ "Aatham"
1438
+ ],
1439
+ "events": [
1440
+ {
1441
+ "name": "15 - Fagan Vad Aatham",
1442
+ "color": "#94a3b8"
1443
+ }
1444
+ ],
1445
+ "type": "normalDate"
1446
+ },
1447
+ "16": {
1448
+ "data": [
1449
+ "Nom"
1450
+ ],
1451
+ "events": [
1452
+ {
1453
+ "name": "16 - Fagan Vad Nom",
1454
+ "color": "#94a3b8"
1455
+ }
1456
+ ],
1457
+ "type": "normalDate"
1458
+ },
1459
+ "17": {
1460
+ "data": [
1461
+ "Dasham"
1462
+ ],
1463
+ "events": [
1464
+ {
1465
+ "name": "17 - Fagan Vad Dasham",
1466
+ "color": "#94a3b8"
1467
+ }
1468
+ ],
1469
+ "type": "normalDate"
1470
+ },
1471
+ "18": {
1472
+ "data": [
1473
+ "Ekadashi",
1474
+ "Papmochani Ekadashi"
1475
+ ],
1476
+ "events": [
1477
+ {
1478
+ "name": "18 - Fagan Vad Ekadashi",
1479
+ "color": "#94a3b8"
1480
+ },
1481
+ {
1482
+ "name": "Papmochani Ekadashi",
1483
+ "color": "white"
1484
+ }
1485
+ ],
1486
+ "type": "multipleDate"
1487
+ },
1488
+ "19": {
1489
+ "data": [
1490
+ "Baras"
1491
+ ],
1492
+ "events": [
1493
+ {
1494
+ "name": "19 - Fagan Vad Baras",
1495
+ "color": "#94a3b8"
1496
+ }
1497
+ ],
1498
+ "type": "normalDate"
1499
+ },
1500
+ "20": {
1501
+ "data": [
1502
+ "Chaudas"
1503
+ ],
1504
+ "events": [
1505
+ {
1506
+ "name": "20 - Fagan Vad Chaudas",
1507
+ "color": "#94a3b8"
1508
+ }
1509
+ ],
1510
+ "type": "normalDate"
1511
+ },
1512
+ "21": {
1513
+ "data": [
1514
+ "Amas"
1515
+ ],
1516
+ "events": [
1517
+ {
1518
+ "name": "21 - Fagan Vad Amas",
1519
+ "color": "#94a3b8"
1520
+ }
1521
+ ],
1522
+ "type": "normalDate"
1523
+ },
1524
+ "22": {
1525
+ "data": [
1526
+ "Padvo",
1527
+ "Gudi Padvo"
1528
+ ],
1529
+ "events": [
1530
+ {
1531
+ "name": "22 - Chaitra Sud Padvo",
1532
+ "color": "#94a3b8"
1533
+ },
1534
+ {
1535
+ "name": "Gudi Padvo",
1536
+ "color": "#fb923c"
1537
+ }
1538
+ ],
1539
+ "type": "multipleDate"
1540
+ },
1541
+ "23": {
1542
+ "data": [
1543
+ "Bij",
1544
+ "Cheti Chand"
1545
+ ],
1546
+ "events": [
1547
+ {
1548
+ "name": "23 - Chaitra Sud Bij",
1549
+ "color": "#94a3b8"
1550
+ },
1551
+ {
1552
+ "name": "Cheti Chand",
1553
+ "color": "#fb923c"
1554
+ }
1555
+ ],
1556
+ "type": "multipleDate"
1557
+ },
1558
+ "24": {
1559
+ "data": [
1560
+ "Trij"
1561
+ ],
1562
+ "events": [
1563
+ {
1564
+ "name": "24 - Chaitra Sud Trij",
1565
+ "color": "#94a3b8"
1566
+ }
1567
+ ],
1568
+ "type": "normalDate"
1569
+ },
1570
+ "25": {
1571
+ "data": [
1572
+ "Choth"
1573
+ ],
1574
+ "events": [
1575
+ {
1576
+ "name": "25 - Chaitra Sud Choth",
1577
+ "color": "#94a3b8"
1578
+ }
1579
+ ],
1580
+ "type": "normalDate"
1581
+ },
1582
+ "26": {
1583
+ "data": [
1584
+ "Pancham"
1585
+ ],
1586
+ "events": [
1587
+ {
1588
+ "name": "26 - Chaitra Sud Pancham",
1589
+ "color": "#94a3b8"
1590
+ }
1591
+ ],
1592
+ "type": "normalDate"
1593
+ },
1594
+ "27": {
1595
+ "data": [],
1596
+ "events": [
1597
+ {
1598
+ "name": "5 - Chaitra Sud Chhath",
1599
+ "color": "#94a3b8"
1600
+ },
1601
+ {
1602
+ "name": "Bharuch Mandir Patostav",
1603
+ "color": "#94a3b8"
1604
+ }
1605
+ ],
1606
+ "type": "templeDate"
1607
+ },
1608
+ "28": {
1609
+ "data": [
1610
+ "Satam"
1611
+ ],
1612
+ "events": [
1613
+ {
1614
+ "name": "28 - Chaitra Sud Satam",
1615
+ "color": "#94a3b8"
1616
+ }
1617
+ ],
1618
+ "type": "normalDate"
1619
+ },
1620
+ "29": {
1621
+ "data": [
1622
+ "Atham"
1623
+ ],
1624
+ "events": [
1625
+ {
1626
+ "name": "29 - Chaitra Sud Atham",
1627
+ "color": "#94a3b8"
1628
+ }
1629
+ ],
1630
+ "type": "normalDate"
1631
+ },
1632
+ "30": {
1633
+ "data": [
1634
+ "maharaj.png"
1635
+ ],
1636
+ "events": [
1637
+ {
1638
+ "name": "30 - Chaitra Sud Nom",
1639
+ "color": "#94a3b8"
1640
+ },
1641
+ {
1642
+ "name": "Bhagwan Swaminarayan Pragatya Din",
1643
+ "color": "#fb923c"
1644
+ },
1645
+ {
1646
+ "name": "Haridham - Sokhda Mandir Patostav",
1647
+ "color": "#60a5fa"
1648
+ }
1649
+ ],
1650
+ "type": "imageDate"
1651
+ },
1652
+ "31": {
1653
+ "data": [
1654
+ "Dasham"
1655
+ ],
1656
+ "events": [
1657
+ {
1658
+ "name": "31 - Chaitra Sud Dasham",
1659
+ "color": "#94a3b8"
1660
+ }
1661
+ ],
1662
+ "type": "normalDate"
1663
+ }
1664
+ }
1665
+ }
1666
+ }
static/fonts/AestheticRomance-Regular.woff ADDED
Binary file (60.2 kB). View file
 
static/fonts/AestheticRomance-Regular.woff2 ADDED
Binary file (35.8 kB). View file
 
static/fonts/S0728810.TTF ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1171e671d1e7f2d3c008d22249b897c86b7435958d97ce626b17277021c40726
3
+ size 141440
static/fonts/S0728810.otf ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a6866f7806978850a449d99a8583adb0c964421c58524b3cbdd6848d2f816e66
3
+ size 148484
static/images/AYMLogo.png ADDED

Git LFS Details

  • SHA256: 4edf89c20c95850f9613fc0e9d2110f9e1f574ed8b02b2c017bafac9abd6180e
  • Pointer size: 131 Bytes
  • Size of remote file: 315 kB
static/images/GunatitSwami.png ADDED

Git LFS Details

  • SHA256: 36e09743e1a2d3173f84b0fd0f36bc816a1f636de28ee313038475c7dcd5edce
  • Pointer size: 131 Bytes
  • Size of remote file: 149 kB
static/images/SHA_logo.png ADDED

Git LFS Details

  • SHA256: 5cd67a07a8fa08605c625f3150ecd0867136a32b646112f827bd8671fc00aeee
  • Pointer size: 131 Bytes
  • Size of remote file: 126 kB