fnschool 20251018.81021.825__py3-none-any.whl → 20251019.81526.808__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.
- fnschoo1/__init__.py +1 -1
- fnschoo1/canteen/forms.py +1 -1
- fnschoo1/canteen/migrations/0017_ingredient_updated_at_alter_category_created_at_and_more.py +30 -0
- fnschoo1/canteen/models.py +9 -2
- fnschoo1/canteen/templates/canteen/consumption/create.html +5 -4
- fnschoo1/canteen/templates/canteen/ingredient/list.html +101 -69
- fnschoo1/canteen/views.py +51 -2
- fnschoo1/canteen/workbook/generate.py +4 -4
- fnschoo1/fnschool/settings.py +2 -1
- fnschoo1/static/css/fnschool.css +6 -0
- fnschoo1/static/js/fnschool.js +24 -0
- {fnschool-20251018.81021.825.dist-info → fnschool-20251019.81526.808.dist-info}/METADATA +1 -1
- {fnschool-20251018.81021.825.dist-info → fnschool-20251019.81526.808.dist-info}/RECORD +22 -21
- {fnschool-20251018.81021.825.dist-info → fnschool-20251019.81526.808.dist-info}/SOURCES.txt.py +0 -0
- {fnschool-20251018.81021.825.dist-info → fnschool-20251019.81526.808.dist-info}/WHEEL +0 -0
- {fnschool-20251018.81021.825.dist-info → fnschool-20251019.81526.808.dist-info}/dependency_links.txt.py +0 -0
- {fnschool-20251018.81021.825.dist-info → fnschool-20251019.81526.808.dist-info}/entry_points.txt +0 -0
- {fnschool-20251018.81021.825.dist-info → fnschool-20251019.81526.808.dist-info}/entry_points.txt.py +0 -0
- {fnschool-20251018.81021.825.dist-info → fnschool-20251019.81526.808.dist-info}/licenses/LICENSE +0 -0
- {fnschool-20251018.81021.825.dist-info → fnschool-20251019.81526.808.dist-info}/requires.txt.py +0 -0
- {fnschool-20251018.81021.825.dist-info → fnschool-20251019.81526.808.dist-info}/top_level.txt +0 -0
- {fnschool-20251018.81021.825.dist-info → fnschool-20251019.81526.808.dist-info}/top_level.txt.py +0 -0
fnschoo1/__init__.py
CHANGED
fnschoo1/canteen/forms.py
CHANGED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Generated by Django 4.2.25 on 2025-10-19 02:03
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
("canteen", "0016_consumption_unique_ingredient_date_of_using"),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.AddField(
|
|
14
|
+
model_name="ingredient",
|
|
15
|
+
name="updated_at",
|
|
16
|
+
field=models.DateTimeField(
|
|
17
|
+
auto_now=True, null=True, verbose_name="Time of updating"
|
|
18
|
+
),
|
|
19
|
+
),
|
|
20
|
+
migrations.AlterField(
|
|
21
|
+
model_name="category",
|
|
22
|
+
name="created_at",
|
|
23
|
+
field=models.DateTimeField(null=True, verbose_name="创建日期"),
|
|
24
|
+
),
|
|
25
|
+
migrations.AlterField(
|
|
26
|
+
model_name="mealtype",
|
|
27
|
+
name="created_at",
|
|
28
|
+
field=models.DateTimeField(null=True, verbose_name="创建日期"),
|
|
29
|
+
),
|
|
30
|
+
]
|
fnschoo1/canteen/models.py
CHANGED
|
@@ -21,7 +21,9 @@ class MealType(models.Model):
|
|
|
21
21
|
abbreviation = models.CharField(
|
|
22
22
|
null=True, blank=True, max_length=100, verbose_name=_("Abbreviation")
|
|
23
23
|
)
|
|
24
|
-
created_at = models.
|
|
24
|
+
created_at = models.DateTimeField(
|
|
25
|
+
null=True, verbose_name=_("Creating Date")
|
|
26
|
+
)
|
|
25
27
|
is_disabled = models.BooleanField(
|
|
26
28
|
default=False, verbose_name=_("Is Disabled")
|
|
27
29
|
)
|
|
@@ -41,7 +43,9 @@ class Category(models.Model):
|
|
|
41
43
|
abbreviation = models.CharField(
|
|
42
44
|
null=True, blank=True, max_length=100, verbose_name=_("abbreviation")
|
|
43
45
|
)
|
|
44
|
-
created_at = models.
|
|
46
|
+
created_at = models.DateTimeField(
|
|
47
|
+
null=True, verbose_name=_("Creating Date")
|
|
48
|
+
)
|
|
45
49
|
is_disabled = models.BooleanField(
|
|
46
50
|
default=False, verbose_name=_("Is Disabled")
|
|
47
51
|
)
|
|
@@ -74,6 +78,9 @@ class Ingredient(models.Model):
|
|
|
74
78
|
verbose_name=_("User"),
|
|
75
79
|
)
|
|
76
80
|
storage_date = models.DateField(verbose_name=_("Storage Date"))
|
|
81
|
+
updated_at = models.DateTimeField(
|
|
82
|
+
null=True, auto_now=True, verbose_name=_("Time of updating")
|
|
83
|
+
)
|
|
77
84
|
name = models.CharField(max_length=100, verbose_name=_("Ingredient Name"))
|
|
78
85
|
meal_type = models.ForeignKey(
|
|
79
86
|
MealType,
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
onclick="list_consumptions();">{% trans "Refresh" %}</button>
|
|
43
43
|
</div>
|
|
44
44
|
</div>
|
|
45
|
-
<div class="table
|
|
45
|
+
<div class="table-responsive table-container">
|
|
46
46
|
<table class="table table-consumptions cotable-bordered table-striped table-hover table-condensed scroll-vertical ">
|
|
47
47
|
<thead>
|
|
48
48
|
<tr>
|
|
@@ -97,7 +97,8 @@
|
|
|
97
97
|
</table>
|
|
98
98
|
</div>
|
|
99
99
|
<div class="">
|
|
100
|
-
<button
|
|
100
|
+
<button id="generate_spreadsheet_btn"
|
|
101
|
+
onclick="generate_spreadsheet();"
|
|
101
102
|
class="btn btn-submit-consumptions btn-success float-end">
|
|
102
103
|
{% trans "Generate Spreadsheet" %}
|
|
103
104
|
</button>
|
|
@@ -405,11 +406,11 @@
|
|
|
405
406
|
}
|
|
406
407
|
|
|
407
408
|
function set_consumptions_table_size() {
|
|
408
|
-
const
|
|
409
|
+
const generate_spreadsheet_btn = $("#generate_spreadsheet_btn")
|
|
409
410
|
const consumptions_table = $(".table-consumptions")
|
|
410
411
|
const header = $("header")
|
|
411
412
|
const footer = $("footer")
|
|
412
|
-
const height = Math.round((footer.offset().top -
|
|
413
|
+
const height = Math.round((footer.offset().top - generate_spreadsheet_btn.height() - consumptions_table.offset().top) * 0.95)
|
|
413
414
|
consumptions_table.parent().height(height)
|
|
414
415
|
}
|
|
415
416
|
$(window).resize(function() {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
{% extends "base/header_content_footer.html" %}
|
|
2
|
+
{% load tz %}
|
|
2
3
|
{% load crispy_forms_tags %}
|
|
3
4
|
{% block title %}
|
|
4
5
|
{% trans "Ingredient List" %}
|
|
@@ -34,77 +35,97 @@
|
|
|
34
35
|
onclick="open_small_window('{% url 'canteen:create_ingredient' %}')">{% trans "Add one" %}</a>
|
|
35
36
|
</div>
|
|
36
37
|
<hr />
|
|
37
|
-
<
|
|
38
|
-
<
|
|
39
|
-
<
|
|
40
|
-
<
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
<
|
|
59
|
-
|
|
60
|
-
<
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
{
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
38
|
+
<div class="container">
|
|
39
|
+
<div class="table-responsive-lg table-container">
|
|
40
|
+
<table class="table table-bordered table-ingredient table-striped table-hover table-condensed">
|
|
41
|
+
<thead>
|
|
42
|
+
<tr>
|
|
43
|
+
<th scope="col">#</th>
|
|
44
|
+
{% for name,sort, header in headers %}
|
|
45
|
+
<th scope="col"
|
|
46
|
+
data-sort="sort_{{ name }} {{ sort }}"
|
|
47
|
+
onclick="sort_ingredients(this.dataset.sort);">
|
|
48
|
+
{{ header }}
|
|
49
|
+
{% if sort == "+" %}
|
|
50
|
+
↑
|
|
51
|
+
{% elif sort == "-" %}
|
|
52
|
+
↓
|
|
53
|
+
{% endif %}
|
|
54
|
+
</th>
|
|
55
|
+
{% endfor %}
|
|
56
|
+
<th scope="col"></th>
|
|
57
|
+
</tr>
|
|
58
|
+
</thead>
|
|
59
|
+
<tbody>
|
|
60
|
+
{% for ingredient in page_obj %}
|
|
61
|
+
<tr class="tr-ingredient"
|
|
62
|
+
data-ingredient_updated_at="{{ ingredient.updated_at|localtime|date:'Y/m/d H:i:s' }}"
|
|
63
|
+
data-ingredient_storage_date="{{ ingredient.storage_date|localtime|date:'Y/m/d' }}">
|
|
64
|
+
<th scope="row">
|
|
65
|
+
<div class="form-check"
|
|
66
|
+
title="{% trans 'It helps you check the ingredients.' %}">
|
|
67
|
+
<input type="checkbox"
|
|
68
|
+
class="form-check-input"
|
|
69
|
+
id="ingredient_free_nark_{{ ingredient.id }}" />
|
|
70
|
+
<label class="form-check-label"
|
|
71
|
+
for="ingredient_free_nark_{{ ingredient.id }}">
|
|
72
|
+
{{ forloop.counter }}
|
|
73
|
+
</label>
|
|
74
|
+
</div>
|
|
75
|
+
</th>
|
|
76
|
+
<td>{{ ingredient.storage_date }}</td>
|
|
77
|
+
<td>{{ ingredient.name }}</td>
|
|
78
|
+
<td>{{ ingredient.meal_type }}</td>
|
|
79
|
+
<td>{{ ingredient.category }}</td>
|
|
80
|
+
<td>{{ ingredient.quantity }}</td>
|
|
81
|
+
<td>{{ ingredient.quantity_unit_name }}</td>
|
|
82
|
+
<td>{{ ingredient.total_price }}</td>
|
|
83
|
+
<td>
|
|
84
|
+
{% if ingredient.is_ignorable %}
|
|
85
|
+
{% trans "Yes" %}
|
|
86
|
+
{% endif %}
|
|
87
|
+
</td>
|
|
88
|
+
<td>
|
|
89
|
+
{% if ingredient.is_disabled %}
|
|
90
|
+
{% trans "Yes" %}
|
|
91
|
+
{% endif %}
|
|
92
|
+
</td>
|
|
93
|
+
<td class="">
|
|
94
|
+
<a class=""
|
|
95
|
+
target="_blank"
|
|
96
|
+
onclick="open_small_window('{% url 'canteen:edit_ingredient' ingredient.id %}'); return false;">
|
|
97
|
+
{% trans "Edit" %}
|
|
98
|
+
</a>
|
|
99
|
+
|
|
|
100
|
+
<a class="text-danger"
|
|
101
|
+
target="_blank"
|
|
102
|
+
onclick="open_small_window('{% url 'canteen:delete_ingredient' ingredient.id %}'); return false;">
|
|
103
|
+
{% trans "Delete" %}
|
|
104
|
+
</a>
|
|
105
|
+
</td>
|
|
106
|
+
</tr>
|
|
107
|
+
{% empty %}
|
|
108
|
+
{% endfor %}
|
|
109
|
+
</tbody>
|
|
110
|
+
</table>
|
|
111
|
+
</div>
|
|
112
|
+
</div>
|
|
106
113
|
{% include 'includes/_paginator.html' %}
|
|
107
114
|
<script>
|
|
115
|
+
$(document).ready(function() {
|
|
116
|
+
var ingredient_table = $('.table-ingredient')
|
|
117
|
+
var pagination = $('.pagination')
|
|
118
|
+
var footer = $("footer")
|
|
119
|
+
var height = Math.round((footer.offset().top - pagination.height() - ingredient_table.offset().top) * 0.98)
|
|
120
|
+
ingredient_table.parent().height(
|
|
121
|
+
height
|
|
122
|
+
);
|
|
123
|
+
});
|
|
124
|
+
$(document).ready(
|
|
125
|
+
function() {
|
|
126
|
+
make_highlight(".tr-ingredient", "ingredient_updated_at")
|
|
127
|
+
});
|
|
128
|
+
|
|
108
129
|
function clear_q() {
|
|
109
130
|
update_href({
|
|
110
131
|
"q": ""
|
|
@@ -136,4 +157,15 @@
|
|
|
136
157
|
update_href(i_sort);
|
|
137
158
|
}
|
|
138
159
|
</script>
|
|
160
|
+
<style>
|
|
161
|
+
.table-container {
|
|
162
|
+
overflow: auto;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.table-container thead th {
|
|
166
|
+
position: sticky;
|
|
167
|
+
top: 0;
|
|
168
|
+
}
|
|
169
|
+
</style>
|
|
170
|
+
|
|
139
171
|
{% endblock %}
|
fnschoo1/canteen/views.py
CHANGED
|
@@ -395,7 +395,31 @@ def edit_ingredient(request, ingredient_id):
|
|
|
395
395
|
ingredient = get_object_or_404(Ingredient, pk=ingredient_id)
|
|
396
396
|
|
|
397
397
|
if request.method == "POST":
|
|
398
|
+
|
|
398
399
|
form = IngredientForm(request.POST, instance=ingredient)
|
|
400
|
+
|
|
401
|
+
total_price = form.instance.total_price
|
|
402
|
+
quantity = form.instance.quantity
|
|
403
|
+
|
|
404
|
+
[total_price0, quantity0], [total_price1, quantity1] = split_price(
|
|
405
|
+
total_price, quantity
|
|
406
|
+
)
|
|
407
|
+
|
|
408
|
+
if total_price1:
|
|
409
|
+
unit_price_error_msg = _(
|
|
410
|
+
"The unit pricei ({unit_price}) has more than 3 decimal places and cannot be saved. Please modify it again."
|
|
411
|
+
).format(
|
|
412
|
+
unit_price=(
|
|
413
|
+
Decimal(str(total_price)) / Decimal(str(float(quantity)))
|
|
414
|
+
).normalize()
|
|
415
|
+
)
|
|
416
|
+
form.add_error("total_price", unit_price_error_msg)
|
|
417
|
+
form.add_error("quantity", unit_price_error_msg)
|
|
418
|
+
return render(
|
|
419
|
+
request, "canteen/ingredient/update.html", {"form": form}
|
|
420
|
+
)
|
|
421
|
+
|
|
422
|
+
form.instance.user = request.user
|
|
399
423
|
if form.is_valid():
|
|
400
424
|
form.save()
|
|
401
425
|
return render(
|
|
@@ -413,9 +437,10 @@ def list_ingredients(request):
|
|
|
413
437
|
search_query = request.GET.get("q", "")
|
|
414
438
|
search_query_cp = search_query
|
|
415
439
|
fields = [
|
|
416
|
-
f
|
|
440
|
+
f
|
|
441
|
+
for f in Ingredient._meta.fields
|
|
442
|
+
if f.name in IngredientForm._meta.fields
|
|
417
443
|
]
|
|
418
|
-
|
|
419
444
|
if search_query:
|
|
420
445
|
queries = Q(user=request.user)
|
|
421
446
|
|
|
@@ -846,6 +871,30 @@ class IngredientCreateView(LoginRequiredMixin, CreateView):
|
|
|
846
871
|
|
|
847
872
|
def form_valid(self, form):
|
|
848
873
|
form.instance.user = self.request.user
|
|
874
|
+
total_price = form.instance.total_price
|
|
875
|
+
quantity = form.instance.quantity
|
|
876
|
+
|
|
877
|
+
[total_price0, quantity0], [total_price1, quantity1] = split_price(
|
|
878
|
+
total_price, quantity
|
|
879
|
+
)
|
|
880
|
+
|
|
881
|
+
if form.is_valid() and total_price1:
|
|
882
|
+
Ingredient.objects.create(
|
|
883
|
+
user=form.instance.user,
|
|
884
|
+
storage_date=form.instance.storage_date,
|
|
885
|
+
name=form.instance.name + _("(2)"),
|
|
886
|
+
meal_type=form.instance.meal_type,
|
|
887
|
+
category=form.instance.category,
|
|
888
|
+
quantity=quantity1,
|
|
889
|
+
total_price=total_price1,
|
|
890
|
+
quantity_unit_name=form.instance.quantity_unit_name,
|
|
891
|
+
is_ignorable=form.instance.is_ignorable,
|
|
892
|
+
)
|
|
893
|
+
form.instance.name = form.instance.name + _("(1)")
|
|
894
|
+
|
|
895
|
+
form.instance.total_price = total_price0
|
|
896
|
+
form.instance.quantity = quantity0
|
|
897
|
+
|
|
849
898
|
return super().form_valid(form)
|
|
850
899
|
|
|
851
900
|
|
|
@@ -2417,16 +2417,16 @@ class CanteenWorkBook:
|
|
|
2417
2417
|
|
|
2418
2418
|
sheet.cell(
|
|
2419
2419
|
month_surplus_header_row_num,
|
|
2420
|
-
|
|
2420
|
+
10,
|
|
2421
2421
|
remaining_quantity_last_month,
|
|
2422
2422
|
)
|
|
2423
2423
|
sheet.cell(
|
|
2424
2424
|
month_surplus_header_row_num,
|
|
2425
|
-
|
|
2425
|
+
12,
|
|
2426
2426
|
remaining_total_price_last_month,
|
|
2427
2427
|
)
|
|
2428
2428
|
sheet.cell(
|
|
2429
|
-
month_surplus_header_row_num,
|
|
2429
|
+
month_surplus_header_row_num, 11, unit_price.normalize()
|
|
2430
2430
|
)
|
|
2431
2431
|
|
|
2432
2432
|
month_ingredients = []
|
|
@@ -2680,7 +2680,7 @@ class CanteenWorkBook:
|
|
|
2680
2680
|
self.fill_in_consumption_sheet()
|
|
2681
2681
|
self.fill_in_consumption_list_sheet()
|
|
2682
2682
|
self.fill_in_surplus_sheet()
|
|
2683
|
-
if self.request.GET.get("include_food_sheets","") == "true":
|
|
2683
|
+
if self.request.GET.get("include_food_sheets", "") == "true":
|
|
2684
2684
|
self.fill_in_food_sheets()
|
|
2685
2685
|
|
|
2686
2686
|
return self.wb
|
fnschoo1/fnschool/settings.py
CHANGED
fnschoo1/static/css/fnschool.css
CHANGED
fnschoo1/static/js/fnschool.js
CHANGED
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
function make_highlight(query, time_data) {
|
|
2
|
+
var highlight_elements = $(query)
|
|
3
|
+
var highlight_elements_toggled = []
|
|
4
|
+
highlight_elements.each(function (index, element) {
|
|
5
|
+
var element = $(element)
|
|
6
|
+
var time_value = element.data(time_data)
|
|
7
|
+
var seconds_diff = Math.floor((new Date() - new Date(time_value)) / 1000)
|
|
8
|
+
if (seconds_diff < 46) {
|
|
9
|
+
highlight_elements_toggled.push(element)
|
|
10
|
+
element.toggleClass('fn-highlight')
|
|
11
|
+
$('html,body').animate({ scrollTop: element.offset().top }, 1)
|
|
12
|
+
}
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
setTimeout(function () {
|
|
16
|
+
$(highlight_elements_toggled).each(function (index, element) {
|
|
17
|
+
element = $(element)
|
|
18
|
+
element.toggleClass('fn-highlight')
|
|
19
|
+
})
|
|
20
|
+
}, 10 * 1000)
|
|
21
|
+
}
|
|
22
|
+
|
|
1
23
|
function get_cookie(name) {
|
|
2
24
|
const cookies = document.cookie.split(';')
|
|
3
25
|
for (const cookie of cookies) {
|
|
@@ -89,3 +111,5 @@ $(document).ready(function () {
|
|
|
89
111
|
function set_page(num) {
|
|
90
112
|
update_href({ page: num })
|
|
91
113
|
}
|
|
114
|
+
|
|
115
|
+
// The end.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fnschool
|
|
3
|
-
Version:
|
|
3
|
+
Version: 20251019.81526.808
|
|
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=
|
|
1
|
+
fnschoo1/__init__.py,sha256=3uZNnXdN943uWbtfJhdf4iLpV-akwekm2ysAMBUoD-0,197
|
|
2
2
|
fnschoo1/manage.py,sha256=VZIol9q_Dhg81_KJ9Jfq-L5O8ubQelShkA-cZVJ1S6E,1539
|
|
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=
|
|
7
|
-
fnschoo1/canteen/models.py,sha256=
|
|
6
|
+
fnschoo1/canteen/forms.py,sha256=JaN6SX9KIrJeUKRfTMf6bA0Op3mEGCc6xqUE6yWC8TU,2596
|
|
7
|
+
fnschoo1/canteen/models.py,sha256=gk3Lk8Li6P7YlYU2yAQeI7WVG8Jm8jxRgI2uyYJwbBA,6206
|
|
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=
|
|
10
|
+
fnschoo1/canteen/views.py,sha256=9qsNiCM4sUEUpV_8g874msSamrp-dqTb5mdUtyWvZmQ,29171
|
|
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
|
|
@@ -24,6 +24,7 @@ fnschoo1/canteen/migrations/0013_alter_consumption_options_alter_ingredient_opti
|
|
|
24
24
|
fnschoo1/canteen/migrations/0014_category_priority.py,sha256=AywjPQhwtwm8xttEEOGQ3yyQ8j890hL5J-wCUNEwbkE,677
|
|
25
25
|
fnschoo1/canteen/migrations/0015_alter_category_options_alter_category_priority.py,sha256=l8WVVTaDDbB3-xBMdU402gsQo3mhfeUUEcIp_hYVEPk,720
|
|
26
26
|
fnschoo1/canteen/migrations/0016_consumption_unique_ingredient_date_of_using.py,sha256=kiNr4ISVoy99U7LuJMItJYtNyE4BPYR_jSdnKoXxWt4,520
|
|
27
|
+
fnschoo1/canteen/migrations/0017_ingredient_updated_at_alter_category_created_at_and_more.py,sha256=fvbJV9uf8lUrqASwPO2EsyW3ApXkFk4zBE1vlT2UV0o,872
|
|
27
28
|
fnschoo1/canteen/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
29
|
fnschoo1/canteen/templates/canteen/close.html,sha256=pLYeJmGaOEJKMUJdZmYzz_n--l28IRDQ4fXvetP_Vsc,200
|
|
29
30
|
fnschoo1/canteen/templates/canteen/category/create.html,sha256=T33zbHRYUrWlLYSLAYZ14Y03Gw2tGMoYzBWUVv-I8pk,609
|
|
@@ -31,22 +32,22 @@ fnschoo1/canteen/templates/canteen/category/delete.html,sha256=iPmGAB2r8K9DqBTp9
|
|
|
31
32
|
fnschoo1/canteen/templates/canteen/category/list.html,sha256=QLO2GA13Co48Ijd0DCCN4lcMm1fgJqT2CprH5VdLZPw,2148
|
|
32
33
|
fnschoo1/canteen/templates/canteen/category/update.html,sha256=UnCI95eqsQXfdUMdJXWUf1qNVWM9ZgsP03ayZ_Nrak8,831
|
|
33
34
|
fnschoo1/canteen/templates/canteen/consumption/_create.html,sha256=tXlJcd566D9sYbsnj5KN-m0lyobT2AwwYt9oxUHbn4M,1026
|
|
34
|
-
fnschoo1/canteen/templates/canteen/consumption/create.html,sha256=
|
|
35
|
+
fnschoo1/canteen/templates/canteen/consumption/create.html,sha256=LSxyYQZfQLAekD84AQaJp_JRYge8I4IBF7DkTGLIGEI,16744
|
|
35
36
|
fnschoo1/canteen/templates/canteen/ingredient/close.html,sha256=pLYeJmGaOEJKMUJdZmYzz_n--l28IRDQ4fXvetP_Vsc,200
|
|
36
37
|
fnschoo1/canteen/templates/canteen/ingredient/create.html,sha256=i4ajPDpXBTUp08lIiwn0wZoNEohyXlX3G64zG1lmIcs,839
|
|
37
38
|
fnschoo1/canteen/templates/canteen/ingredient/create_one.html,sha256=y9EAKXmyIrlp5-DxHd86l1rMtB16KuOjPMbPiLAN_ag,615
|
|
38
39
|
fnschoo1/canteen/templates/canteen/ingredient/delete.html,sha256=npUtDGV7KK2jvc2AkiNlK6F2wUsKwLB5DQuBULm1pW8,1227
|
|
39
|
-
fnschoo1/canteen/templates/canteen/ingredient/list.html,sha256=
|
|
40
|
+
fnschoo1/canteen/templates/canteen/ingredient/list.html,sha256=QqPvNbfQCv74jOWpgMX9I-m-Omg3HR_k51XlDFMv3YE,5900
|
|
40
41
|
fnschoo1/canteen/templates/canteen/ingredient/update.html,sha256=JwW8dVQ1fzvxjA32RvRSSqrYzPPaajObvy7D45gz5pc,835
|
|
41
42
|
fnschoo1/canteen/templates/canteen/meal_type/create.html,sha256=OIxOcAa3Pp3OPT-Z0PRLINfZ08CO61ulNDU-YJA6EKI,612
|
|
42
43
|
fnschoo1/canteen/templates/canteen/meal_type/delete.html,sha256=i9PBX3ShXU4Az62MEawAuDWM5jwOmKByywizhdvuSTI,1567
|
|
43
44
|
fnschoo1/canteen/templates/canteen/meal_type/list.html,sha256=c5kJUE1OgpRtSrMV4wFwL_gbRSaX_XMM4Zt1JTx34_g,1907
|
|
44
45
|
fnschoo1/canteen/templates/canteen/meal_type/update.html,sha256=vqqyuC1m2CnPd3KrcjA8t4hbJslT001s4XvcYpkQmO0,834
|
|
45
46
|
fnschoo1/canteen/workbook/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
46
|
-
fnschoo1/canteen/workbook/generate.py,sha256=
|
|
47
|
+
fnschoo1/canteen/workbook/generate.py,sha256=sRJ_r6DLh0DiUr1FTBST17YUqB7G6P_XUCpw2YQn0BA,109434
|
|
47
48
|
fnschoo1/fnschool/__init__.py,sha256=TmHhzykpKNMoMf6eD-EKvbvmnlzs1XGHtvD55ae1sXs,287
|
|
48
49
|
fnschoo1/fnschool/asgi.py,sha256=kzkqosS10uBlyBX53EXcsATcvEZmac6nsPzyOHCuucE,393
|
|
49
|
-
fnschoo1/fnschool/settings.py,sha256=
|
|
50
|
+
fnschoo1/fnschool/settings.py,sha256=VJJFsbLReFDbOqhqC1zWX_xZSw9hcboXQD2oJaXrPqE,4381
|
|
50
51
|
fnschoo1/fnschool/urls.py,sha256=8WPemtCUuStd0R9gDP70c-NRQ5k7G4ksq6dYGH6xCDM,1036
|
|
51
52
|
fnschoo1/fnschool/views.py,sha256=MfujMhFkRLxT-saID1xTU16v0khzIl6ceDl7_JgrgFs,152
|
|
52
53
|
fnschoo1/fnschool/wsgi.py,sha256=dQq4S0vZWCz8w5R9KooJeLYTVFXvEgJRYe7NFZwVxU8,393
|
|
@@ -75,11 +76,11 @@ fnschoo1/profiles/templates/profiles/edit.html,sha256=49afyNH7OsqEKfD9TFrDKbRZ7r
|
|
|
75
76
|
fnschoo1/profiles/templates/profiles/log_in.html,sha256=9hcuxdxAUHdFBxrJTJ_X6IVwKC_Jw6mfA5Sqx9a4bZA,736
|
|
76
77
|
fnschoo1/profiles/templates/profiles/log_out.html,sha256=RRb6K-0G1Jm4RhfY9VwftJgNwgI8jsKb_N5Gvp5XtiE,320
|
|
77
78
|
fnschoo1/static/css/bootstrap.min.css,sha256=eGY1FwN6FhXUvbmXraT1t_q2vcNlQa8g5xQDwg8mG6w,280591
|
|
78
|
-
fnschoo1/static/css/fnschool.css,sha256=
|
|
79
|
+
fnschoo1/static/css/fnschool.css,sha256=k71DBJi4EwUQSOPyXX6G-15m8HN_z4_Ac72Du0Zf9Co,476
|
|
79
80
|
fnschoo1/static/images/favicon.ico,sha256=S8Tf0NsUdHnoYO0SEn-sig6YjB0atIpEtSlm7p1HxjY,5014
|
|
80
81
|
fnschoo1/static/js/bootstrap.bundle.min.js,sha256=6kw84LCFc4QJzifgkle0FsvQrpt2NVRNPNjSSc9caiM,125881
|
|
81
82
|
fnschoo1/static/js/bootstrap.min.js,sha256=0SHpZTHghUOz_BNedMzuH00z5lgwOSRKP_KI9G5Ogbk,88597
|
|
82
|
-
fnschoo1/static/js/fnschool.js,sha256=
|
|
83
|
+
fnschoo1/static/js/fnschool.js,sha256=M2hdpT_g6f77bDLzN3zWxjPybcfrWHRSpo6deNSxkH4,3684
|
|
83
84
|
fnschoo1/static/js/jquery.min.js,sha256=np_WnfpAmUmEO_iheFAJKf6mbm0_laW3Ns4x7kjSlt4,162505
|
|
84
85
|
fnschoo1/static/js/jquery.slim.min.js,sha256=p5YkbOjgHxX3hTadKlGuDW58NvJ1ldjjokDuDQ_5yXs,129962
|
|
85
86
|
fnschoo1/static/js/popper.min.js,sha256=O2xdmtEow7gq3I7-0lKjshvxHkBe0hTWrMkbX2fy0XQ,36887
|
|
@@ -96,14 +97,14 @@ fnschoo1/templates/includes/_navigation.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
|
|
|
96
97
|
fnschoo1/templates/includes/_paginator.html,sha256=Q-FRCODFNlETjn2yX18IfhctRWfqEgEnIc5LcdHzKSo,1262
|
|
97
98
|
fnschoo1/templates/registration/logged_out.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
98
99
|
fnschoo1/templates/registration/login.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
99
|
-
fnschool-
|
|
100
|
-
fnschool-
|
|
101
|
-
fnschool-
|
|
102
|
-
fnschool-
|
|
103
|
-
fnschool-
|
|
104
|
-
fnschool-
|
|
105
|
-
fnschool-
|
|
106
|
-
fnschool-
|
|
107
|
-
fnschool-
|
|
108
|
-
fnschool-
|
|
109
|
-
fnschool-
|
|
100
|
+
fnschool-20251019.81526.808.dist-info/licenses/LICENSE,sha256=2n6rt7r999OuXp8iOqW9we7ORaxWncIbOwN1ILRGR2g,7651
|
|
101
|
+
fnschool-20251019.81526.808.dist-info/METADATA,sha256=YmFIFr7SUfIaw_itWuS1Ob4vM70tpTj4N2wsFt5-4fk,4752
|
|
102
|
+
fnschool-20251019.81526.808.dist-info/SOURCES.txt.py,sha256=2LY2mshgNtxI3ICB-oBjyMYgJk2bQqeGFM5J5ay5TQs,4954
|
|
103
|
+
fnschool-20251019.81526.808.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
104
|
+
fnschool-20251019.81526.808.dist-info/dependency_links.txt.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
105
|
+
fnschool-20251019.81526.808.dist-info/entry_points.txt,sha256=Ow5nChVFJY3O4TJAIE1ZydMev1MUtgRsT1b8eFP6728,54
|
|
106
|
+
fnschool-20251019.81526.808.dist-info/entry_points.txt.py,sha256=7iOwIx_m9Y6xJt___BZHWJh27LV5hqWnUjmj77MoRys,47
|
|
107
|
+
fnschool-20251019.81526.808.dist-info/requires.txt.py,sha256=PqRcHIQSMPUb271hacYrlSDHwB1WDZmlWUkh6RnBz_g,113
|
|
108
|
+
fnschool-20251019.81526.808.dist-info/top_level.txt,sha256=s6ZKnNm94Q0-247a50eI7jDK98uPF6P2kC9Ovd3LUlM,9
|
|
109
|
+
fnschool-20251019.81526.808.dist-info/top_level.txt.py,sha256=_7CbrSihm0dzBn_tTy2ass_Y2VlkVNT2eylE8mcfwHY,9
|
|
110
|
+
fnschool-20251019.81526.808.dist-info/RECORD,,
|
{fnschool-20251018.81021.825.dist-info → fnschool-20251019.81526.808.dist-info}/SOURCES.txt.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fnschool-20251018.81021.825.dist-info → fnschool-20251019.81526.808.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{fnschool-20251018.81021.825.dist-info → fnschool-20251019.81526.808.dist-info}/entry_points.txt.py
RENAMED
|
File without changes
|
{fnschool-20251018.81021.825.dist-info → fnschool-20251019.81526.808.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
{fnschool-20251018.81021.825.dist-info → fnschool-20251019.81526.808.dist-info}/requires.txt.py
RENAMED
|
File without changes
|
{fnschool-20251018.81021.825.dist-info → fnschool-20251019.81526.808.dist-info}/top_level.txt
RENAMED
|
File without changes
|
{fnschool-20251018.81021.825.dist-info → fnschool-20251019.81526.808.dist-info}/top_level.txt.py
RENAMED
|
File without changes
|