django-school-framework 0.2.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. apps/__init__.py +1 -0
  2. apps/admissions/__init__.py +0 -0
  3. apps/admissions/admin.py +28 -0
  4. apps/admissions/apps.py +6 -0
  5. apps/admissions/migrations/0001_initial.py +80 -0
  6. apps/admissions/migrations/__init__.py +0 -0
  7. apps/admissions/models.py +105 -0
  8. apps/admissions/serializers.py +28 -0
  9. apps/admissions/tests.py +29 -0
  10. apps/admissions/urls.py +16 -0
  11. apps/admissions/views.py +30 -0
  12. apps/core/__init__.py +0 -0
  13. apps/core/admin.py +17 -0
  14. apps/core/apps.py +6 -0
  15. apps/core/cli.py +1341 -0
  16. apps/core/compliance.py +236 -0
  17. apps/core/management/__init__.py +0 -0
  18. apps/core/management/commands/__init__.py +0 -0
  19. apps/core/management/commands/seed_school_data.py +281 -0
  20. apps/core/management/commands/wait_for_db.py +26 -0
  21. apps/core/migrations/0001_initial.py +55 -0
  22. apps/core/migrations/0002_alter_schoolprofile_options.py +17 -0
  23. apps/core/migrations/__init__.py +0 -0
  24. apps/core/models.py +134 -0
  25. apps/core/serializers.py +18 -0
  26. apps/core/templatetags/__init__.py +1 -0
  27. apps/core/templatetags/compliance_tags.py +13 -0
  28. apps/core/tests.py +123 -0
  29. apps/core/urls.py +14 -0
  30. apps/core/views.py +130 -0
  31. apps/gallery/__init__.py +0 -0
  32. apps/gallery/admin.py +18 -0
  33. apps/gallery/apps.py +6 -0
  34. apps/gallery/migrations/0001_initial.py +46 -0
  35. apps/gallery/migrations/__init__.py +0 -0
  36. apps/gallery/models.py +48 -0
  37. apps/gallery/serializers.py +14 -0
  38. apps/gallery/tests.py +31 -0
  39. apps/gallery/urls.py +11 -0
  40. apps/gallery/views.py +15 -0
  41. apps/legal/__init__.py +0 -0
  42. apps/legal/admin.py +31 -0
  43. apps/legal/apps.py +6 -0
  44. apps/legal/migrations/0001_initial.py +105 -0
  45. apps/legal/migrations/__init__.py +0 -0
  46. apps/legal/models.py +172 -0
  47. apps/legal/serializers.py +43 -0
  48. apps/legal/tests.py +42 -0
  49. apps/legal/urls.py +17 -0
  50. apps/legal/views.py +33 -0
  51. apps/news/__init__.py +0 -0
  52. apps/news/admin.py +13 -0
  53. apps/news/apps.py +6 -0
  54. apps/news/migrations/0001_initial.py +46 -0
  55. apps/news/migrations/__init__.py +0 -0
  56. apps/news/models.py +55 -0
  57. apps/news/serializers.py +14 -0
  58. apps/news/tests.py +37 -0
  59. apps/news/urls.py +11 -0
  60. apps/news/views.py +15 -0
  61. apps/nutrition/__init__.py +0 -0
  62. apps/nutrition/admin.py +12 -0
  63. apps/nutrition/apps.py +6 -0
  64. apps/nutrition/migrations/0001_initial.py +47 -0
  65. apps/nutrition/migrations/0002_alter_cateringprovider_options.py +17 -0
  66. apps/nutrition/migrations/__init__.py +0 -0
  67. apps/nutrition/models.py +53 -0
  68. apps/nutrition/serializers.py +17 -0
  69. apps/nutrition/tests.py +41 -0
  70. apps/nutrition/urls.py +13 -0
  71. apps/nutrition/views.py +13 -0
  72. apps/safety/__init__.py +0 -0
  73. apps/safety/admin.py +21 -0
  74. apps/safety/apps.py +6 -0
  75. apps/safety/migrations/0001_initial.py +48 -0
  76. apps/safety/migrations/__init__.py +0 -0
  77. apps/safety/models.py +70 -0
  78. apps/safety/serializers.py +17 -0
  79. apps/safety/tests.py +20 -0
  80. apps/safety/urls.py +11 -0
  81. apps/safety/views.py +17 -0
  82. apps/schedule/__init__.py +0 -0
  83. apps/schedule/admin.py +12 -0
  84. apps/schedule/apps.py +6 -0
  85. apps/schedule/migrations/0001_initial.py +49 -0
  86. apps/schedule/migrations/__init__.py +0 -0
  87. apps/schedule/models.py +60 -0
  88. apps/schedule/serializers.py +15 -0
  89. apps/schedule/tests.py +51 -0
  90. apps/schedule/urls.py +11 -0
  91. apps/schedule/views.py +15 -0
  92. django_school_framework-0.2.2.dist-info/METADATA +53 -0
  93. django_school_framework-0.2.2.dist-info/RECORD +96 -0
  94. django_school_framework-0.2.2.dist-info/WHEEL +5 -0
  95. django_school_framework-0.2.2.dist-info/entry_points.txt +2 -0
  96. django_school_framework-0.2.2.dist-info/top_level.txt +1 -0
apps/schedule/tests.py ADDED
@@ -0,0 +1,51 @@
1
+ from datetime import time
2
+ from django.test import TestCase
3
+ from django.db import IntegrityError
4
+ from rest_framework.test import APIClient
5
+ from rest_framework import status
6
+ from apps.admissions.models import ClassCapacity
7
+ from .models import BellSchedule, LessonSchedule
8
+
9
+ class ScheduleTests(TestCase):
10
+ def setUp(self):
11
+ self.client = APIClient()
12
+ self.grade = ClassCapacity.objects.create(
13
+ grade_name='5-А',
14
+ total_capacity=30,
15
+ enrolled_count=28
16
+ )
17
+ self.bell = BellSchedule.objects.create(
18
+ lesson_number=1,
19
+ start_time=time(8, 30),
20
+ end_time=time(9, 15),
21
+ break_duration=10
22
+ )
23
+ self.lesson = LessonSchedule.objects.create(
24
+ grade=self.grade,
25
+ day_of_week=1,
26
+ lesson_number=1,
27
+ subject='Українська мова',
28
+ classroom='Кабінет 204',
29
+ teacher_name='Осадча В.О.'
30
+ )
31
+
32
+ def test_str_representations(self):
33
+ self.assertIn('1 урок', str(self.bell))
34
+ self.assertIn('5-А', str(self.lesson))
35
+ self.assertIn('Українська мова', str(self.lesson))
36
+
37
+ def test_unique_lesson_slot(self):
38
+ with self.assertRaises(IntegrityError):
39
+ LessonSchedule.objects.create(
40
+ grade=self.grade,
41
+ day_of_week=1,
42
+ lesson_number=1,
43
+ subject='Математика'
44
+ )
45
+
46
+ def test_schedule_apis(self):
47
+ res_bell = self.client.get('/api/v1/schedule/bells/')
48
+ self.assertEqual(res_bell.status_code, status.HTTP_200_OK)
49
+
50
+ res_lessons = self.client.get('/api/v1/schedule/lessons/')
51
+ self.assertEqual(res_lessons.status_code, status.HTTP_200_OK)
apps/schedule/urls.py ADDED
@@ -0,0 +1,11 @@
1
+ from django.urls import path, include
2
+ from rest_framework.routers import DefaultRouter
3
+ from .views import BellScheduleViewSet, LessonScheduleViewSet
4
+
5
+ router = DefaultRouter()
6
+ router.register(r'bells', BellScheduleViewSet, basename='schedule-bells')
7
+ router.register(r'lessons', LessonScheduleViewSet, basename='schedule-lessons')
8
+
9
+ urlpatterns = [
10
+ path('', include(router.urls)),
11
+ ]
apps/schedule/views.py ADDED
@@ -0,0 +1,15 @@
1
+ from rest_framework import viewsets, permissions, filters
2
+ from .models import BellSchedule, LessonSchedule
3
+ from .serializers import BellScheduleSerializer, LessonScheduleSerializer
4
+
5
+ class BellScheduleViewSet(viewsets.ReadOnlyModelViewSet):
6
+ queryset = BellSchedule.objects.all()
7
+ serializer_class = BellScheduleSerializer
8
+ permission_classes = [permissions.AllowAny]
9
+
10
+ class LessonScheduleViewSet(viewsets.ReadOnlyModelViewSet):
11
+ queryset = LessonSchedule.objects.all().select_related('grade')
12
+ serializer_class = LessonScheduleSerializer
13
+ permission_classes = [permissions.AllowAny]
14
+ filter_backends = [filters.SearchFilter]
15
+ search_fields = ['grade__grade_name', 'subject', 'teacher_name']
@@ -0,0 +1,53 @@
1
+ Metadata-Version: 2.4
2
+ Name: django-school-framework
3
+ Version: 0.2.2
4
+ Summary: Відкритий веб-фреймворк для офіційних сайтів закладів загальної середньої освіти України (ст. 30 ЗУ «Про освіту»)
5
+ License: MIT
6
+ Classifier: Framework :: Django
7
+ Classifier: Framework :: Django :: 5.1
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3.12
10
+ Classifier: Intended Audience :: Education
11
+ Classifier: Topic :: Education
12
+ Requires-Python: >=3.11
13
+ Description-Content-Type: text/markdown
14
+ Requires-Dist: Django<5.2,>=5.1
15
+ Requires-Dist: djangorestframework>=3.15.2
16
+ Requires-Dist: django-cors-headers>=4.4.0
17
+ Requires-Dist: drf-spectacular>=0.27.2
18
+ Requires-Dist: django-filter>=24.3
19
+ Requires-Dist: pillow>=10.4.0
20
+ Provides-Extra: mysql
21
+ Requires-Dist: PyMySQL>=1.1.1; extra == "mysql"
22
+ Requires-Dist: mysqlclient>=2.2.4; extra == "mysql"
23
+ Provides-Extra: dev
24
+ Requires-Dist: pytest>=8.0.0; extra == "dev"
25
+ Requires-Dist: pytest-django>=4.8.0; extra == "dev"
26
+
27
+ # Django School Framework
28
+
29
+ Модульний веб-фреймворк для офіційних сайтів закладів загальної середньої освіти України відповідно до ст. 30 ЗУ «Про освіту».
30
+
31
+ ## Встановлення
32
+
33
+ ```bash
34
+ pip install django-school-framework
35
+ ```
36
+
37
+ ## Швидкий старт
38
+
39
+ Додайте необхідні додатки у ваш `settings.py`:
40
+
41
+ ```python
42
+ INSTALLED_APPS = [
43
+ # ...
44
+ 'apps.core',
45
+ 'apps.legal',
46
+ 'apps.admissions',
47
+ 'apps.nutrition',
48
+ 'apps.safety',
49
+ 'apps.news',
50
+ 'apps.schedule',
51
+ 'apps.gallery',
52
+ ]
53
+ ```
@@ -0,0 +1,96 @@
1
+ apps/__init__.py,sha256=uivYfztrQyGdpL3BEvRX0Ldi7pNoIkBn2201TIV8v_g,15
2
+ apps/admissions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ apps/admissions/admin.py,sha256=8O4v-nL96cMudhzZ-cNbXIrNE3Nmuzp4YwcAvSEH8-U,1198
4
+ apps/admissions/apps.py,sha256=TQBn4FwyFrF2Ay9ZH1vd0fDN_SZV5ZSXkiOuDEAnahs,260
5
+ apps/admissions/models.py,sha256=rFQ9lQXj2oxiHZcbDzzrssYBRJy94JaDQ-y0wD0o33M,5369
6
+ apps/admissions/serializers.py,sha256=-6W7_0VnbEqDrMdabOWVJ9jciSCGToHs8fbQLKPA9i8,1188
7
+ apps/admissions/tests.py,sha256=-QEXFevh9EaclNyg1lfmGOQ_WllC8D6NN1INJaHQp8Y,1159
8
+ apps/admissions/urls.py,sha256=JROY1zpPX5-tRu1MD5aBzj2sBhc6R5WxV2Wg5To_jTY,634
9
+ apps/admissions/views.py,sha256=5UuCto3M1VhTpUmvRgHpNTF6rU-jN0fgW_JsnSfemlk,1309
10
+ apps/admissions/migrations/0001_initial.py,sha256=075arV71RYT2-SDLVYfIpZyCThPfmZfX8mAcZ-Qq_Gk,5384
11
+ apps/admissions/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
+ apps/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
+ apps/core/admin.py,sha256=wHsEru1wxMTZLo2X457X__PEfMTEWxRtXUtXX8AzVoo,706
14
+ apps/core/apps.py,sha256=YIvl18gVDTSykRMdwE-LsH53N3W8YTbjLx2GvIINYaw,242
15
+ apps/core/cli.py,sha256=GTpsYRjSC-IotLPdQ4JonMh_-X5RnHNzp9kje_udetU,61201
16
+ apps/core/compliance.py,sha256=Tt2Ep2MCudOvTIx-AaxALY_5EEnP3AtkuAgncT_PIdQ,13580
17
+ apps/core/models.py,sha256=OXnsc6eA7QZuDjWiluW5isu8soHl7r5gP869EkNpAoQ,5007
18
+ apps/core/serializers.py,sha256=sb-Fy4oZl0g8NT2hkAluinBnyzKQoycY0fQVRHY267g,703
19
+ apps/core/tests.py,sha256=FhQQ5T2Omxtnz5XHcjpTvd9OfFhwnGd48L3LrhGb12E,5097
20
+ apps/core/urls.py,sha256=1i4XwbdZjfI-R_NyHanbVPQUmjhpWGCiCvgOrGRL2OI,665
21
+ apps/core/views.py,sha256=GKYr__ytDu1l1KUNLDWhESJUCmoCQnD3wuq5VVvwV2A,5480
22
+ apps/core/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
+ apps/core/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
+ apps/core/management/commands/seed_school_data.py,sha256=qlKEoAvcrQC14uuzCupAazyuTbVd24UP9bRjfG7NgOM,14643
25
+ apps/core/management/commands/wait_for_db.py,sha256=Bgem1dm-j5Sb1reMXlspZzK8fsugQ-2bDojuaifKPGo,1112
26
+ apps/core/migrations/0001_initial.py,sha256=6GjeYLOszy3cryEwtBReU-ss8s8ZMdjmvEQWNB4Wjcw,4142
27
+ apps/core/migrations/0002_alter_schoolprofile_options.py,sha256=a1n5K90NrKXFEm4k236j8GBoERu7LpwBj9VbE8_s_dA,468
28
+ apps/core/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
+ apps/core/templatetags/__init__.py,sha256=LhHkQ6X195E6LIrKSe6lOcm0OxyfTD9Eu9Kl_BdANys,29
30
+ apps/core/templatetags/compliance_tags.py,sha256=VPJL9UQbMPKRZOpF6QObcvKY5our_opfjsiXU-TDVHY,431
31
+ apps/gallery/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
+ apps/gallery/admin.py,sha256=QiMdcnOLRVXHVNmV7hUUV8Df9S2fiM7wHiy6CDzII1g,567
33
+ apps/gallery/apps.py,sha256=5Vjr4GDiWqqY4R_lWqyXxDieIiabB_qkiwk_G3Kzsio,211
34
+ apps/gallery/models.py,sha256=xR2iiiX1AlB-cWu4q_-TQHjrXvHh2Q04arLe0ZzSwW8,1929
35
+ apps/gallery/serializers.py,sha256=LSYTm9tCqEVgSKw5Ji3g3IDqUQCXrYaDfsone-Kzl1Y,494
36
+ apps/gallery/tests.py,sha256=vrLyWzZM5_pehhE8lOe-pV5BaZB6XPtcomLy-Lxk3bI,1299
37
+ apps/gallery/urls.py,sha256=9G4rVKzxDCtJmWc0Ex1UGZv9cWsZjFLFVLU-t50yRbI,374
38
+ apps/gallery/views.py,sha256=8QqxJoOZbWNgqpkQ_yXuLf6NobwByP7awnVLOIvVv9Y,674
39
+ apps/gallery/migrations/0001_initial.py,sha256=NrUuJfiUXY6ArdVFmcZ_Zen_buR08S1xlTVN5f5yQIU,2193
40
+ apps/gallery/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
+ apps/legal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
+ apps/legal/admin.py,sha256=CD-7K1zSCEvONlfvskcThvXDtX0BFAzvFBeLK4bIFnk,1423
43
+ apps/legal/apps.py,sha256=A1Br0QCtjUhM0Em50VPKlxBcfho_4aDmAvOgx90XbIA,276
44
+ apps/legal/models.py,sha256=Yc2qgwCXLRquqT9JlbQHbYUBAC4s-MbPD1ZPQjbbdYI,7905
45
+ apps/legal/serializers.py,sha256=Uz5re8KAIbVQKK-NNZ1meE-d3swTRIeX67HznnoDVvo,1618
46
+ apps/legal/tests.py,sha256=3sQDISQ26K8ADei94NrexEA_NwccSOTeqK0B42Abxc0,1677
47
+ apps/legal/urls.py,sha256=lvDcEyxj_i7S0VEbvwNmOIPw3S8DUmQcvvZA4qI7U-A,702
48
+ apps/legal/views.py,sha256=GVEL6XncbK1Nr_RJl0GUM41itc6cG1dihiRX4Y5p1Vg,1479
49
+ apps/legal/migrations/0001_initial.py,sha256=Evj4iF1EU0TeLg3K2naDLXd_-I2gL5S11JPyIqnt3-I,7941
50
+ apps/legal/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
+ apps/news/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
+ apps/news/admin.py,sha256=VYr33VuZ-5GE7i2Vz58wd3-MLUYF6ASRLzly3lMmsqw,505
53
+ apps/news/apps.py,sha256=5hCudOM_6YoLSUmRSk0bLm8DeC0T7CWHPdT410MUn0w,219
54
+ apps/news/models.py,sha256=Jq5fWv8MlAjQ8jGV2oPC-ziM9tepYxs-bZgbC6wwZBo,2113
55
+ apps/news/serializers.py,sha256=jTddcAP2fMqPHoZ44OZwNoRiVNnyqhvWCcc-SBc_JG4,538
56
+ apps/news/tests.py,sha256=QIfCM1w-englgDWKWETQS3cCcbSh0_Ivt_O5GgJ8FtM,1672
57
+ apps/news/urls.py,sha256=aX_vn67gpnwOxJO51LnllABycqDrv3KJR7aAPxl_u1k,382
58
+ apps/news/views.py,sha256=pC88hksx1WUshOQDCFAOxQ7gQ85bzvnUBwOrnBMUD3Q,706
59
+ apps/news/migrations/0001_initial.py,sha256=c9s_x3vThjl_mZVcHHm_AmAkUxIztEZPf2gqWKV__9U,2433
60
+ apps/news/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
+ apps/nutrition/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
+ apps/nutrition/admin.py,sha256=pp9BCOnbyGBF2IODkh2K3w7CPpKy45UkJcI7lxbeddg,447
63
+ apps/nutrition/apps.py,sha256=ivA7qrcIMNJcqHHCu34zZYkYxWZFM97rQSJ2YG38-jU,225
64
+ apps/nutrition/models.py,sha256=gOWCxyq10nVzBg8duZDp284zZc8D0lGV6l-vZ8SgjDA,2599
65
+ apps/nutrition/serializers.py,sha256=ccNrjHIPDU-4SC8SPSLBW1JGo2GmWa5MBZehiLpXdnA,635
66
+ apps/nutrition/tests.py,sha256=FG_CQfy8Day4BM1r8n8-rVoXVQ0DzRtF0N218nN2jN8,1576
67
+ apps/nutrition/urls.py,sha256=zvJX9KN9kbXB_9k-Fxuzp_qrgQk8rRRl0aBQrUv3UYg,555
68
+ apps/nutrition/views.py,sha256=UH1VY5sxXMZ_x47hNp6dD9pAlfUrc1bUJf-hbncG4F0,563
69
+ apps/nutrition/migrations/0001_initial.py,sha256=xsl3nJuRfy4Mg5GyB1I1lh-OcrCrDrRJbUsrmowmcsw,2794
70
+ apps/nutrition/migrations/0002_alter_cateringprovider_options.py,sha256=GFuZj7aTI7x_rRMq3laiApXFLszeFMj5q3L8McoqOtk,478
71
+ apps/nutrition/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
+ apps/safety/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
+ apps/safety/admin.py,sha256=MoRBDLIV17enAP-BaY87oGfqdAaoQxDuWHen7JD62pY,960
74
+ apps/safety/apps.py,sha256=EpYGMXtpWPerbfYZ0GAqWX0bBdMg0_C6KE5C6gnJuu4,221
75
+ apps/safety/models.py,sha256=WCgPzelHg3eaNyfmmb0JPTsIFJDLCBpSQP_If8a6ZQA,3596
76
+ apps/safety/serializers.py,sha256=Go5rqTEsuSD44_WBZ-Hdchv8GNFlQHnOA7bG6Ve4qdU,684
77
+ apps/safety/tests.py,sha256=L2npbuAOHds0xGVC-xcWKwq6JObukGjXLMKfvMqFXUs,951
78
+ apps/safety/urls.py,sha256=OiNF-QlpWK1S_sm1nwQZkRwEQJjrNstsGoZmEyQ0mz8,402
79
+ apps/safety/views.py,sha256=sJwB1KXHO75opLQOGGRuRO-ZVouqhxLDaApVqYCiFNM,976
80
+ apps/safety/migrations/0001_initial.py,sha256=H8tzEn8AcZGvs5-JZqHwaRZDCrSJutVIXIAA0H8JuFQ,3591
81
+ apps/safety/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
+ apps/schedule/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
+ apps/schedule/admin.py,sha256=ZAwDIC6TIFsGMjLPDPNJLjdQ1ghEWiqSIZH9AtWHv2U,520
84
+ apps/schedule/apps.py,sha256=glFTtOSAHi0aEjj0OYID3ql4RVhtd4NOu3kfsLXRMAs,223
85
+ apps/schedule/models.py,sha256=TiouH_o5LT-kaVWjFxL2qXU4FdgjJCZS9aQjk-bgdb8,2619
86
+ apps/schedule/serializers.py,sha256=VtXT246diRKixFNLyCiFoSACG6xfM38YHguuuG2dJBw,688
87
+ apps/schedule/tests.py,sha256=0LMCVYvTyzh58gvm5OBftKzzFYpbGEGQG1ZsGPPQ9Gg,1797
88
+ apps/schedule/urls.py,sha256=0yP8JQBoOHh1bDJ7Dg483HUQFCDDoXT02xa6Gx4SF_8,384
89
+ apps/schedule/views.py,sha256=rZh1r9R3dGY44v8kVmwgAxu668HwZvgxrITX805iVh4,715
90
+ apps/schedule/migrations/0001_initial.py,sha256=AGhP-ciS3jWzZE_AUfD1N1_QyuYPz_AdHo756rQYfAU,2582
91
+ apps/schedule/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
92
+ django_school_framework-0.2.2.dist-info/METADATA,sha256=-3zaHLeqP3rPXpU2quNhB8HV_2JujmzOBpAf5PWHGZ8,1710
93
+ django_school_framework-0.2.2.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
94
+ django_school_framework-0.2.2.dist-info/entry_points.txt,sha256=tWZoQfbWK5thGDh4avFbeiGIghUDMbplSWlJz1RV1z0,52
95
+ django_school_framework-0.2.2.dist-info/top_level.txt,sha256=tDgFUeDjw0_X74xMPXr2TmKPB7BjXkoRZOavLez_SgE,5
96
+ django_school_framework-0.2.2.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ school-admin = apps.core.cli:main