fnschool 20251013.81919.815__py3-none-any.whl → 20251014.81347.804__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.

Potentially problematic release.


This version of fnschool might be problematic. Click here for more details.

Files changed (22) hide show
  1. fnschoo1/__init__.py +1 -1
  2. fnschoo1/canteen/forms.py +10 -0
  3. fnschoo1/canteen/migrations/0014_category_priority.py +27 -0
  4. fnschoo1/canteen/models.py +29 -7
  5. fnschoo1/canteen/templates/canteen/category/delete.html +4 -0
  6. fnschoo1/canteen/templates/canteen/category/list.html +2 -0
  7. fnschoo1/canteen/templates/canteen/consumption/create.html +24 -13
  8. fnschoo1/canteen/views.py +1 -1
  9. fnschoo1/canteen/workbook/generate.py +13 -0
  10. fnschoo1/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  11. fnschoo1/static/js/fnschool.js +2 -4
  12. {fnschool-20251013.81919.815.dist-info → fnschool-20251014.81347.804.dist-info}/METADATA +1 -1
  13. {fnschool-20251013.81919.815.dist-info → fnschool-20251014.81347.804.dist-info}/RECORD +22 -21
  14. {fnschool-20251013.81919.815.dist-info → fnschool-20251014.81347.804.dist-info}/SOURCES.txt.py +0 -0
  15. {fnschool-20251013.81919.815.dist-info → fnschool-20251014.81347.804.dist-info}/WHEEL +0 -0
  16. {fnschool-20251013.81919.815.dist-info → fnschool-20251014.81347.804.dist-info}/dependency_links.txt.py +0 -0
  17. {fnschool-20251013.81919.815.dist-info → fnschool-20251014.81347.804.dist-info}/entry_points.txt +0 -0
  18. {fnschool-20251013.81919.815.dist-info → fnschool-20251014.81347.804.dist-info}/entry_points.txt.py +0 -0
  19. {fnschool-20251013.81919.815.dist-info → fnschool-20251014.81347.804.dist-info}/licenses/LICENSE +0 -0
  20. {fnschool-20251013.81919.815.dist-info → fnschool-20251014.81347.804.dist-info}/requires.txt.py +0 -0
  21. {fnschool-20251013.81919.815.dist-info → fnschool-20251014.81347.804.dist-info}/top_level.txt +0 -0
  22. {fnschool-20251013.81919.815.dist-info → fnschool-20251014.81347.804.dist-info}/top_level.txt.py +0 -0
fnschoo1/__init__.py CHANGED
@@ -6,4 +6,4 @@ import random
6
6
  import sys
7
7
  from pathlib import Path
8
8
 
9
- __version__ = "20251013.81919.815"
9
+ __version__ = "20251014.81347.804"
fnschoo1/canteen/forms.py CHANGED
@@ -70,9 +70,19 @@ class CategoryForm(forms.ModelForm):
70
70
  fields = [
71
71
  "name",
72
72
  "abbreviation",
73
+ "priority",
73
74
  "pin_to_consumptions_top",
74
75
  "is_disabled",
75
76
  ]
77
+ widgets = {
78
+ "priority": forms.NumberInput(
79
+ attrs={
80
+ "title": _(
81
+ "Numbers with smaller values have higher priority."
82
+ ),
83
+ },
84
+ ),
85
+ }
76
86
 
77
87
 
78
88
  class MealTypeForm(forms.ModelForm):
@@ -0,0 +1,27 @@
1
+ # Generated by Django 4.2.25 on 2025-10-14 04:46
2
+
3
+ import django.core.validators
4
+ from django.db import migrations, models
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+
9
+ dependencies = [
10
+ (
11
+ "canteen",
12
+ "0013_alter_consumption_options_alter_ingredient_options_and_more",
13
+ ),
14
+ ]
15
+
16
+ operations = [
17
+ migrations.AddField(
18
+ model_name="category",
19
+ name="priority",
20
+ field=models.IntegerField(
21
+ blank=True,
22
+ null=True,
23
+ validators=[django.core.validators.MinValueValidator(0)],
24
+ verbose_name="Category Priority",
25
+ ),
26
+ ),
27
+ ]
@@ -45,10 +45,22 @@ class Category(models.Model):
45
45
  is_disabled = models.BooleanField(
46
46
  default=False, verbose_name=_("Is Disabled")
47
47
  )
48
+ priority = models.IntegerField(
49
+ null=True,
50
+ blank=True,
51
+ validators=[
52
+ MinValueValidator(0),
53
+ ],
54
+ verbose_name=_("Category Priority"),
55
+ )
56
+
48
57
  pin_to_consumptions_top = models.BooleanField(
49
58
  default=False, verbose_name=_("Pin to Consumptions Top")
50
59
  )
51
60
 
61
+ class Meta:
62
+ ordering = ["priority"]
63
+
52
64
  def __str__(self):
53
65
  return self.name
54
66
 
@@ -110,12 +122,6 @@ class Ingredient(models.Model):
110
122
  @property
111
123
  def cleaned_consumptions(self):
112
124
  consumptions = self.consumptions.all()
113
- for c1 in consumptions:
114
- for c2 in consumptions:
115
- if c1.date_of_using == c2.date_of_using and c1.id != c2.id:
116
- c1.is_disabled = False
117
- c1.save()
118
- c2.delete()
119
125
  return consumptions
120
126
 
121
127
  @property
@@ -128,6 +134,22 @@ class Ingredient(models.Model):
128
134
  )
129
135
  return quantity
130
136
 
137
+ def get_consuming_quantity(self, date_end):
138
+ consumptions = self.cleaned_consumptions
139
+ if not consumptions:
140
+ return 0
141
+ quantity = sum(
142
+ [
143
+ c.amount_used
144
+ for c in consumptions
145
+ if not c.is_disabled and c.date_of_using <= date_end
146
+ ]
147
+ )
148
+ return quantity
149
+
150
+ def get_remaining_quantity(self, date_end):
151
+ return self.quantity - self.get_consuming_quantity(date_end)
152
+
131
153
  @property
132
154
  def remaining_quantity(self):
133
155
  consumptions = self.cleaned_consumptions
@@ -156,7 +178,7 @@ class Consumption(models.Model):
156
178
 
157
179
  date_of_using = models.DateField(verbose_name=_("Date"))
158
180
  amount_used = models.IntegerField(
159
- verbose_name="消耗数量",
181
+ verbose_name=_("Consuming Quantity"),
160
182
  validators=[MinValueValidator(0)],
161
183
  )
162
184
  is_disabled = models.BooleanField(
@@ -21,6 +21,10 @@
21
21
  <dd>
22
22
  {{ category.created_at }}
23
23
  </dd>
24
+ <dt>{% trans 'Priority' %}</dt>
25
+ <dd>
26
+ {{ category.priority }}
27
+ </dd>
24
28
  <dt>{% trans 'Pin to consumptions top' %}</dt>
25
29
  <dd>
26
30
  {% if category.pin_to_consumptions_top %}
@@ -18,6 +18,7 @@
18
18
  <th>{% trans "Abbreviation" %}</th>
19
19
  <th>{% trans "Created at" %}</th>
20
20
  <th>{% trans "Pin to consumptions top" %}</th>
21
+ <th>{% trans "Priority" %}</th>
21
22
  <th>{% trans "Is Disabled" %}</th>
22
23
  <th>#</th>
23
24
  </tr>
@@ -34,6 +35,7 @@
34
35
  {% trans "Yes" %}
35
36
  {% endif %}
36
37
  </td>
38
+ <td>{{ category.priority|default_if_none:'0' }}</td>
37
39
  <td>
38
40
  {% if category.is_disabled %}
39
41
  {% trans "Yes" %}
@@ -22,15 +22,15 @@
22
22
  <input class=" form-control"
23
23
  onkeydown="if(event.keyCode==13){list_consumptions();}"
24
24
  title="{% trans 'The starting date of storage.' %}"
25
- id="storage_date_start"
26
- value="{{ request.COOKIES.storage_date_start }}">
25
+ id="storage_date_start_input"
26
+ value="{{ storage_date_start|date:"Y/m/d" }}">
27
27
  </input>
28
28
  </div>
29
29
  <div class="col col-3 col-md-2 col-lg-2">
30
30
  <input class="form-control "
31
31
  onkeydown="if(event.keyCode==13){list_consumptions();}"
32
32
  title="{% trans 'The end date of storage.' %}"
33
- id="storage_date_end"
33
+ id="storage_date_end_input"
34
34
  value="{{ request.COOKIES.storage_date_end }}">
35
35
  </input>
36
36
  </div>
@@ -96,14 +96,18 @@
96
96
  {{ months|json_script:'months' }}
97
97
  {{ meal_types|json_script:'meal_types' }}
98
98
  {{ date_range|json_script:'date_range' }}
99
+ {{ storage_date_start|json_script:'storage_date_start' }}
99
100
  <script>
100
101
  var ingredient_ids = JSON.parse($("#ingredient_ids").text())
101
102
  var ingredient_ids_length = ingredient_ids.length
102
103
  var months = JSON.parse($("#months").text())
103
104
  var meal_types = JSON.parse($("#meal_types").text())
105
+ var date_range = JSON.parse($("#date_range").text())
106
+
107
+ var storage_date_start = $('#storage_date_start').text().replace(new RegExp('"', 'g'), "")
108
+
104
109
  var dont_submit = false
105
110
 
106
- date_range = JSON.parse($("#date_range").text())
107
111
 
108
112
  function list_consumptions_rapidly() {
109
113
  query = {
@@ -154,6 +158,13 @@
154
158
 
155
159
  });
156
160
 
161
+ $(document).ready(function() {
162
+ if (get_cookie('storage_date_start') === null) {
163
+ set_cookies({
164
+ "storage_date_start": storage_date_start
165
+ })
166
+ }
167
+ });
157
168
 
158
169
  $(document).ready(function() {
159
170
  var last_meal_type = ""
@@ -391,20 +402,20 @@
391
402
  });
392
403
 
393
404
  function list_consumptions() {
394
- var storage_date_start = $('#storage_date_start').val()
395
- var storage_date_end = $('#storage_date_end').val()
405
+ var new_storage_date_start = $('#storage_date_start_input').val()
406
+ var new_storage_date_end = $('#storage_date_end_input').val()
396
407
  query = {}
397
- if (storage_date_start) {
398
- query["storage_date_start"] = storage_date_start
399
- set_simple_cookie("storage_date_start", storage_date_start)
408
+ if (new_storage_date_start) {
409
+ query["storage_date_start"] = new_storage_date_start
410
+ set_simple_cookie("storage_date_start", new_storage_date_start)
400
411
  } else {
401
412
  query["storage_date_start"] = ""
402
413
  delete_cookie("storage_date_start")
403
414
  }
404
415
 
405
- if (storage_date_end) {
406
- query["storage_date_end"] = storage_date_end
407
- set_simple_cookie("storage_date_end", storage_date_end)
416
+ if (new_storage_date_end) {
417
+ query["storage_date_end"] = new_storage_date_end
418
+ set_simple_cookie("storage_date_end", new_storage_date_end)
408
419
  } else {
409
420
  query["storage_date_end"] = ""
410
421
  delete_cookie("storage_date_end")
@@ -420,7 +431,7 @@
420
431
  position: absolute;
421
432
  }
422
433
 
423
- #storage_date_start,
434
+ #storage_date_start_input,
424
435
  #storage_date_end {
425
436
  text-align: center;
426
437
  font-family: Mono;
fnschoo1/canteen/views.py CHANGED
@@ -297,6 +297,7 @@ def create_consumptions(request, ingredient_id=None):
297
297
  "meal_types": meal_types,
298
298
  "ingredient_ids": ingredient_ids,
299
299
  "months": months,
300
+ "storage_date_start": date_start,
300
301
  },
301
302
  )
302
303
 
@@ -783,7 +784,6 @@ class CategoryListView(LoginRequiredMixin, ListView):
783
784
  model = Category
784
785
  template_name = "canteen/category/list.html"
785
786
  context_object_name = "categories"
786
- ordering = ["-created_at"]
787
787
 
788
788
  paginate_by = 10
789
789
  paginate_orphans = 2
@@ -2106,6 +2106,19 @@ class CanteenWorkBook:
2106
2106
  ]:
2107
2107
  set_column_width_in_inches(sheet, col, width)
2108
2108
 
2109
+ def fill_in_food_sheets(self):
2110
+ user = self.request.user
2111
+ date_start = self.date_start
2112
+ date_end = self.date_end
2113
+ meal_type = self.meal_type
2114
+
2115
+ ingredients = Ingredient.objects.filter(
2116
+ Q(is_disabled=False)
2117
+ & Q(is_ignorable=False)
2118
+ & Q(user=user)
2119
+ & Q(meal_type=meal_type)
2120
+ ).all()
2121
+
2109
2122
  def fill_in(self):
2110
2123
  self.fill_in_cover_sheet()
2111
2124
  self.fill_in_storage_sheet()
@@ -9,9 +9,7 @@ function get_cookie(name) {
9
9
  return null
10
10
  }
11
11
  function delete_cookie(name) {
12
- document.cookie =
13
- name +
14
- `=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=${window.location.pathname}`
12
+ document.cookie = name + `=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`
15
13
  }
16
14
 
17
15
  function set_cookies(cookies) {
@@ -28,7 +26,7 @@ function set_simple_cookie(key, value) {
28
26
  }
29
27
  const expiryDate = new Date()
30
28
  expiryDate.setFullYear(expiryDate.getFullYear() + 20)
31
- document.cookie = `${key}=${value}; expires=${expiryDate.toUTCString()}; path=${window.location.pathname}`
29
+ document.cookie = `${key}=${value}; expires=${expiryDate.toUTCString()}; path=/`
32
30
  }
33
31
  function update_href(query) {
34
32
  query = new Map(Object.entries(query))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fnschool
3
- Version: 20251013.81919.815
3
+ Version: 20251014.81347.804
4
4
  Summary: Just some school related scripts, without any ambition.
5
5
  Author-email: larryw3i <larryw3i@163.com>, Larry Wei <larryw3i@126.com>, Larry W3i <larryw3i@yeah.net>
6
6
  Maintainer-email: larryw3i <larryw3i@163.com>, Larry Wei <larryw3i@126.com>
@@ -1,13 +1,13 @@
1
- fnschoo1/__init__.py,sha256=WSDGaE349YUVvVkCJW2Z7ZyVBVTTahlxerGH_D7vSY0,197
1
+ fnschoo1/__init__.py,sha256=Oo5lrB265t6WgO2VyARHhiCzSnqnPwPyQqwRCxQNeCk,197
2
2
  fnschoo1/manage.py,sha256=Cr5OtPrRWfEc7KEjW4yYnMKj_qlb0-qpwFRz3vFXvC0,1565
3
3
  fnschoo1/canteen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  fnschoo1/canteen/admin.py,sha256=suMo4x8I3JBxAFBVIdE-5qnqZ6JAZV0FESABHOSc-vg,63
5
5
  fnschoo1/canteen/apps.py,sha256=zUjM0ZJwHW4i72vOm87QewRlvFQORQo5yb053u4YIGs,146
6
- fnschoo1/canteen/forms.py,sha256=4Y75VHpnONdN5hM8aShyr7tbQSElLa-22PQK7fDRflw,2296
7
- fnschoo1/canteen/models.py,sha256=20r24iNJW0hmPwhY96pQLYaIgqf8kc_Tx76IqORR_LE,5219
6
+ fnschoo1/canteen/forms.py,sha256=PDPAzZZ_y533KtMxCixLXXsXok5gjUShCSXeonYgGqQ,2582
7
+ fnschoo1/canteen/models.py,sha256=a4dCdTAcWu84D6PP8CWCSsAF4Q6ZMo74eDluwOmH_R8,5710
8
8
  fnschoo1/canteen/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60
9
9
  fnschoo1/canteen/urls.py,sha256=4GtrqC9L59c8zopfjRgqhbcvA5iPnGcAUVuM6CrKWpk,2797
10
- fnschoo1/canteen/views.py,sha256=gY-dcBqIAxvZS5ToIHNijU-DDj2GAAaSnP31VTYHF_w,26269
10
+ fnschoo1/canteen/views.py,sha256=DGrbOZuU0XuMuTnldFrHpRsm-spYuBHZMzBQq3z_iC0,26284
11
11
  fnschoo1/canteen/migrations/0001_initial.py,sha256=IHlyfT9sNc-kRQZy7NyjgWzp4EGus405QCAUw4oNdAQ,3943
12
12
  fnschoo1/canteen/migrations/0002_ingredient_is_disabled.py,sha256=j8oGWb2b99YwsEk-uwESLA_JRITEcz6b35ekoYOUGGc,444
13
13
  fnschoo1/canteen/migrations/0003_consumption_is_disabled_alter_ingredient_is_disabled.py,sha256=9RB5SHjINgrrqtDpcVIUXEBa3C_MTcR_keXLGG_PcOs,619
@@ -21,14 +21,15 @@ fnschoo1/canteen/migrations/0010_alter_consumption_options_alter_ingredient_opti
21
21
  fnschoo1/canteen/migrations/0011_category_pin_to_consumptions_top.py,sha256=gonvx7T23KlesYUGFx-WTvkz1BLZSnq0n62qKvtWnUo,553
22
22
  fnschoo1/canteen/migrations/0012_alter_ingredient_storage_date.py,sha256=JvU9xrAbGN8uoKHQw00wq6U4CaR_6WojQo-8VwmID3I,436
23
23
  fnschoo1/canteen/migrations/0013_alter_consumption_options_alter_ingredient_options_and_more.py,sha256=hKwsEJ_a1ezANJSrQoca2wEy22AZESwhqH9eonNfOm8,6735
24
+ fnschoo1/canteen/migrations/0014_category_priority.py,sha256=AywjPQhwtwm8xttEEOGQ3yyQ8j890hL5J-wCUNEwbkE,677
24
25
  fnschoo1/canteen/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
26
  fnschoo1/canteen/templates/canteen/close.html,sha256=pLYeJmGaOEJKMUJdZmYzz_n--l28IRDQ4fXvetP_Vsc,200
26
27
  fnschoo1/canteen/templates/canteen/category/create.html,sha256=7Hq62BqEpamDt52_Ut7DTO74_3yEn8_CqXH4e4va6dY,593
27
- fnschoo1/canteen/templates/canteen/category/delete.html,sha256=MnPyFzjO3HonOljwxGf6r1UzmbFjow7VT6h7YGkxxfk,1709
28
- fnschoo1/canteen/templates/canteen/category/list.html,sha256=aj81uoA-jmdv8mZT-Y9DxjOHVGrSfI1z0DB1YnJWb4w,2045
28
+ fnschoo1/canteen/templates/canteen/category/delete.html,sha256=gkEg3oiIbjVsZMKEywkAeXtb21oHTofi8cOER4dW6cc,1802
29
+ fnschoo1/canteen/templates/canteen/category/list.html,sha256=QLO2GA13Co48Ijd0DCCN4lcMm1fgJqT2CprH5VdLZPw,2148
29
30
  fnschoo1/canteen/templates/canteen/category/update.html,sha256=8Nzdbe8UorrJHzElkrdqvLaPnUvcvGhrViZB4D86wqo,815
30
31
  fnschoo1/canteen/templates/canteen/consumption/_create.html,sha256=lpST1R0vL1PEI1YE9d0-bcWWpCMH-INjIF-7pweAHuU,1008
31
- fnschoo1/canteen/templates/canteen/consumption/create.html,sha256=UQOwZ5yS5g98LSxzSdRxUCzzR5R_RID0DGkbq9M_HFc,15568
32
+ fnschoo1/canteen/templates/canteen/consumption/create.html,sha256=k7E3SH9B605WlrJ7_ylncfoOe51qhHgIXKr_TYLukEs,15960
32
33
  fnschoo1/canteen/templates/canteen/ingredient/close.html,sha256=pLYeJmGaOEJKMUJdZmYzz_n--l28IRDQ4fXvetP_Vsc,200
33
34
  fnschoo1/canteen/templates/canteen/ingredient/create.html,sha256=xZvh0tP_cv2HPQ96JSHChO6Ni23tzHc5YJCUhE2yEqM,807
34
35
  fnschoo1/canteen/templates/canteen/ingredient/create_one.html,sha256=O8EPSvAnEZ-4VJiwFdoyxJrMOoMpRkH6CyfvWwHaVgc,599
@@ -40,7 +41,7 @@ fnschoo1/canteen/templates/canteen/meal_type/delete.html,sha256=1UmCyXD-6lbYl-IE
40
41
  fnschoo1/canteen/templates/canteen/meal_type/list.html,sha256=c5kJUE1OgpRtSrMV4wFwL_gbRSaX_XMM4Zt1JTx34_g,1907
41
42
  fnschoo1/canteen/templates/canteen/meal_type/update.html,sha256=Rfv1TamSFIKHzvUNlgnmrPmfmzrehPpuo5Hv8VF0yek,818
42
43
  fnschoo1/canteen/workbook/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
43
- fnschoo1/canteen/workbook/generate.py,sha256=1UUXdeGLdHFzZDGzMFOcoD6rsZtjRAzYFfKLpiRpVps,84102
44
+ fnschoo1/canteen/workbook/generate.py,sha256=iCVe844tDqFZXn8eVwpgR7udZRfQJNoTalU-8jJH4x0,84475
44
45
  fnschoo1/fnschool/__init__.py,sha256=TmHhzykpKNMoMf6eD-EKvbvmnlzs1XGHtvD55ae1sXs,287
45
46
  fnschoo1/fnschool/asgi.py,sha256=kzkqosS10uBlyBX53EXcsATcvEZmac6nsPzyOHCuucE,393
46
47
  fnschoo1/fnschool/settings.py,sha256=l9Y1iQCivSfmsNfnHltfXLzxP6gG4VMIL4GEZgAp8YM,4357
@@ -50,7 +51,7 @@ fnschoo1/fnschool/wsgi.py,sha256=dQq4S0vZWCz8w5R9KooJeLYTVFXvEgJRYe7NFZwVxU8,393
50
51
  fnschoo1/fnschool/templatetags/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
51
52
  fnschoo1/fnschool/templatetags/fnschool_tags.py,sha256=l5Zov4VlQKpz-69SFftP4kXyMymz-a0D5F_ss_eiFc4,568
52
53
  fnschoo1/locale/en/LC_MESSAGES/django.mo,sha256=M8AB6fmjwlEd761iFlasNWdiEYfE-2nIwBoioGtEVUo,404
53
- fnschoo1/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=LMXr4V7PzsK1AkSxnQmV1a6mDIdXRTJv3H-Om092BHc,19994
54
+ fnschoo1/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=3Ipol-cSR0HI3vvp7gbK1jxLGR7ZzeKncXX__rzyJCw,20121
54
55
  fnschoo1/profiles/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
56
  fnschoo1/profiles/admin.py,sha256=93UCvdODI63KzCDfFFnKmfvCMGCp6FCG9WErE91i79Y,522
56
57
  fnschoo1/profiles/apps.py,sha256=WDu6eceFnDkBFMqquAolMZMo7XPb0ah6l2q2AruTrl4,215
@@ -76,7 +77,7 @@ fnschoo1/static/css/fnschool.css,sha256=nPjOh0vWuuFnZWrXcT2E3j3adL77v_PRyeml65Mv
76
77
  fnschoo1/static/images/favicon.ico,sha256=S8Tf0NsUdHnoYO0SEn-sig6YjB0atIpEtSlm7p1HxjY,5014
77
78
  fnschoo1/static/js/bootstrap.bundle.min.js,sha256=6kw84LCFc4QJzifgkle0FsvQrpt2NVRNPNjSSc9caiM,125881
78
79
  fnschoo1/static/js/bootstrap.min.js,sha256=0SHpZTHghUOz_BNedMzuH00z5lgwOSRKP_KI9G5Ogbk,88597
79
- fnschoo1/static/js/fnschool.js,sha256=A_IsEK7F_X83P-maARL5jDaQm90e1K48zAIv5r-34Vw,3019
80
+ fnschoo1/static/js/fnschool.js,sha256=tq9QzYsq8S3CvCqLk2U9tQuwQTcE-hYpf5YanqIHi4g,2959
80
81
  fnschoo1/static/js/jquery.min.js,sha256=np_WnfpAmUmEO_iheFAJKf6mbm0_laW3Ns4x7kjSlt4,162505
81
82
  fnschoo1/static/js/jquery.slim.min.js,sha256=p5YkbOjgHxX3hTadKlGuDW58NvJ1ldjjokDuDQ_5yXs,129962
82
83
  fnschoo1/static/js/popper.min.js,sha256=O2xdmtEow7gq3I7-0lKjshvxHkBe0hTWrMkbX2fy0XQ,36887
@@ -93,14 +94,14 @@ fnschoo1/templates/includes/_navigation.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
93
94
  fnschoo1/templates/includes/_paginator.html,sha256=Z-Hxcdmun4SJ1YcHnWTDLfW8wrngROiBTwr4NZWaPP4,1246
94
95
  fnschoo1/templates/registration/logged_out.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
96
  fnschoo1/templates/registration/login.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
- fnschool-20251013.81919.815.dist-info/licenses/LICENSE,sha256=2n6rt7r999OuXp8iOqW9we7ORaxWncIbOwN1ILRGR2g,7651
97
- fnschool-20251013.81919.815.dist-info/METADATA,sha256=yixkF9j3Fzj8y4Qz2QpRMoMB9rQwEV3_vJvgLfl7KZU,4752
98
- fnschool-20251013.81919.815.dist-info/SOURCES.txt.py,sha256=2LY2mshgNtxI3ICB-oBjyMYgJk2bQqeGFM5J5ay5TQs,4954
99
- fnschool-20251013.81919.815.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
100
- fnschool-20251013.81919.815.dist-info/dependency_links.txt.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
101
- fnschool-20251013.81919.815.dist-info/entry_points.txt,sha256=Ow5nChVFJY3O4TJAIE1ZydMev1MUtgRsT1b8eFP6728,54
102
- fnschool-20251013.81919.815.dist-info/entry_points.txt.py,sha256=7iOwIx_m9Y6xJt___BZHWJh27LV5hqWnUjmj77MoRys,47
103
- fnschool-20251013.81919.815.dist-info/requires.txt.py,sha256=PqRcHIQSMPUb271hacYrlSDHwB1WDZmlWUkh6RnBz_g,113
104
- fnschool-20251013.81919.815.dist-info/top_level.txt,sha256=s6ZKnNm94Q0-247a50eI7jDK98uPF6P2kC9Ovd3LUlM,9
105
- fnschool-20251013.81919.815.dist-info/top_level.txt.py,sha256=_7CbrSihm0dzBn_tTy2ass_Y2VlkVNT2eylE8mcfwHY,9
106
- fnschool-20251013.81919.815.dist-info/RECORD,,
97
+ fnschool-20251014.81347.804.dist-info/licenses/LICENSE,sha256=2n6rt7r999OuXp8iOqW9we7ORaxWncIbOwN1ILRGR2g,7651
98
+ fnschool-20251014.81347.804.dist-info/METADATA,sha256=OK9Y8pUH8pBnQF7_lFDDckxCnj-zUsXvco38oP1x7eI,4752
99
+ fnschool-20251014.81347.804.dist-info/SOURCES.txt.py,sha256=2LY2mshgNtxI3ICB-oBjyMYgJk2bQqeGFM5J5ay5TQs,4954
100
+ fnschool-20251014.81347.804.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
101
+ fnschool-20251014.81347.804.dist-info/dependency_links.txt.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
102
+ fnschool-20251014.81347.804.dist-info/entry_points.txt,sha256=Ow5nChVFJY3O4TJAIE1ZydMev1MUtgRsT1b8eFP6728,54
103
+ fnschool-20251014.81347.804.dist-info/entry_points.txt.py,sha256=7iOwIx_m9Y6xJt___BZHWJh27LV5hqWnUjmj77MoRys,47
104
+ fnschool-20251014.81347.804.dist-info/requires.txt.py,sha256=PqRcHIQSMPUb271hacYrlSDHwB1WDZmlWUkh6RnBz_g,113
105
+ fnschool-20251014.81347.804.dist-info/top_level.txt,sha256=s6ZKnNm94Q0-247a50eI7jDK98uPF6P2kC9Ovd3LUlM,9
106
+ fnschool-20251014.81347.804.dist-info/top_level.txt.py,sha256=_7CbrSihm0dzBn_tTy2ass_Y2VlkVNT2eylE8mcfwHY,9
107
+ fnschool-20251014.81347.804.dist-info/RECORD,,