django-fast-treenode 3.0.7__py3-none-any.whl → 3.2.0__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.
- {django_fast_treenode-3.0.7.dist-info → django_fast_treenode-3.2.0.dist-info}/METADATA +3 -1
- django_fast_treenode-3.2.0.dist-info/RECORD +97 -0
- treenode/admin/admin.py +109 -131
- treenode/admin/mixin.py +6 -6
- treenode/managers/managers.py +1 -1
- treenode/managers/queries.py +1 -1
- treenode/managers/tasks.py +1 -1
- treenode/models/mixins/node.py +4 -4
- treenode/models/models.py +14 -9
- treenode/settings.py +4 -1
- treenode/static/treenode/.gitkeep +0 -0
- treenode/static/{css → treenode/css}/treenode_admin.css +21 -0
- treenode/static/treenode/js/treenode_admin.js +322 -0
- treenode/static/treenode/vendors/.gitkeep +0 -0
- treenode/static/treenode/vendors/jquery-ui/.gitkeep +0 -0
- treenode/templates/treenode/admin/treenode_changelist.html +61 -15
- treenode/templates/treenode/admin/treenode_import_export.html +3 -2
- treenode/templates/treenode/admin/treenode_rows.html +37 -40
- treenode/templatetags/treenode_admin.py +57 -14
- treenode/utils/jwt_auth.py +25 -0
- treenode/version.py +2 -2
- treenode/views/autoapi.py +5 -1
- treenode/views/autocomplete.py +52 -52
- treenode/views/children.py +41 -41
- treenode/views/common.py +23 -23
- treenode/widgets.py +2 -2
- django_fast_treenode-3.0.7.dist-info/RECORD +0 -93
- treenode/static/js/treenode_admin.js +0 -531
- {django_fast_treenode-3.0.7.dist-info → django_fast_treenode-3.2.0.dist-info}/WHEEL +0 -0
- {django_fast_treenode-3.0.7.dist-info → django_fast_treenode-3.2.0.dist-info}/licenses/LICENSE +0 -0
- {django_fast_treenode-3.0.7.dist-info → django_fast_treenode-3.2.0.dist-info}/top_level.txt +0 -0
- /treenode/static/{css → treenode/css}/.gitkeep +0 -0
- /treenode/static/{css → treenode/css}/tree_widget.css +0 -0
- /treenode/static/{css → treenode/css}/treenode_tabs.css +0 -0
- /treenode/static/{js → treenode/js}/.gitkeep +0 -0
- /treenode/static/{js → treenode/js}/lz-string.min.js +0 -0
- /treenode/static/{js → treenode/js}/tree_widget.js +0 -0
- /treenode/static/{vendors → treenode/vendors}/jquery-ui/AUTHORS.txt +0 -0
- /treenode/static/{vendors → treenode/vendors}/jquery-ui/LICENSE.txt +0 -0
- /treenode/static/{vendors → treenode/vendors}/jquery-ui/external/jquery/jquery.js +0 -0
- /treenode/static/{vendors → treenode/vendors}/jquery-ui/images/ui-icons_444444_256x240.png +0 -0
- /treenode/static/{vendors → treenode/vendors}/jquery-ui/images/ui-icons_555555_256x240.png +0 -0
- /treenode/static/{vendors → treenode/vendors}/jquery-ui/images/ui-icons_777620_256x240.png +0 -0
- /treenode/static/{vendors → treenode/vendors}/jquery-ui/images/ui-icons_777777_256x240.png +0 -0
- /treenode/static/{vendors → treenode/vendors}/jquery-ui/images/ui-icons_cc0000_256x240.png +0 -0
- /treenode/static/{vendors → treenode/vendors}/jquery-ui/images/ui-icons_ffffff_256x240.png +0 -0
- /treenode/static/{vendors → treenode/vendors}/jquery-ui/index.html +0 -0
- /treenode/static/{vendors → treenode/vendors}/jquery-ui/jquery-ui.css +0 -0
- /treenode/static/{vendors → treenode/vendors}/jquery-ui/jquery-ui.js +0 -0
- /treenode/static/{vendors → treenode/vendors}/jquery-ui/jquery-ui.min.css +0 -0
- /treenode/static/{vendors → treenode/vendors}/jquery-ui/jquery-ui.min.js +0 -0
- /treenode/static/{vendors → treenode/vendors}/jquery-ui/jquery-ui.structure.css +0 -0
- /treenode/static/{vendors → treenode/vendors}/jquery-ui/jquery-ui.structure.min.css +0 -0
- /treenode/static/{vendors → treenode/vendors}/jquery-ui/jquery-ui.theme.css +0 -0
- /treenode/static/{vendors → treenode/vendors}/jquery-ui/jquery-ui.theme.min.css +0 -0
- /treenode/static/{vendors → treenode/vendors}/jquery-ui/package.json +0 -0
treenode/views/autocomplete.py
CHANGED
@@ -1,52 +1,52 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
"""
|
3
|
-
|
4
|
-
|
5
|
-
Handles autocomplete suggestions for TreeNode models.
|
6
|
-
|
7
|
-
Version: 3.0.0
|
8
|
-
Author: Timur Kady
|
9
|
-
Email: timurkady@yandex.com
|
10
|
-
"""
|
11
|
-
|
12
|
-
# autocomplete.py
|
13
|
-
from django.http import JsonResponse
|
14
|
-
from django.views import View
|
15
|
-
from django.contrib.admin.views.decorators import staff_member_required
|
16
|
-
from django.utils.decorators import method_decorator
|
17
|
-
|
18
|
-
from .common import get_model_from_request
|
19
|
-
|
20
|
-
|
21
|
-
@method_decorator(staff_member_required, name='dispatch')
|
22
|
-
class TreeNodeAutocompleteView(View):
|
23
|
-
"""Widget Autocomplete View."""
|
24
|
-
|
25
|
-
def get(self, request, *args, **kwargs):
|
26
|
-
"""Get request."""
|
27
|
-
select_id = request.GET.get("select_id", "").strip()
|
28
|
-
q = request.GET.get("q", "").strip()
|
29
|
-
|
30
|
-
model = get_model_from_request(request)
|
31
|
-
results = []
|
32
|
-
|
33
|
-
if q:
|
34
|
-
field = getattr(model, "display_field", "id")
|
35
|
-
queryset = model.objects.filter(**{f"{field}__icontains": q})
|
36
|
-
elif select_id:
|
37
|
-
pk = int(select_id)
|
38
|
-
queryset = model.objects.filter(pk=pk)
|
39
|
-
else:
|
40
|
-
queryset = model.objects.filter(parent__isnull=True)
|
41
|
-
|
42
|
-
results = [
|
43
|
-
{
|
44
|
-
"id": obj.pk,
|
45
|
-
"text": str(obj),
|
46
|
-
"level": obj.get_depth(),
|
47
|
-
"is_leaf": obj.is_leaf(),
|
48
|
-
}
|
49
|
-
for obj in queryset[:20]
|
50
|
-
]
|
51
|
-
|
52
|
-
return JsonResponse({"results": results})
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""
|
3
|
+
|
4
|
+
|
5
|
+
Handles autocomplete suggestions for TreeNode models.
|
6
|
+
|
7
|
+
Version: 3.0.0
|
8
|
+
Author: Timur Kady
|
9
|
+
Email: timurkady@yandex.com
|
10
|
+
"""
|
11
|
+
|
12
|
+
# autocomplete.py
|
13
|
+
from django.http import JsonResponse
|
14
|
+
from django.views import View
|
15
|
+
from django.contrib.admin.views.decorators import staff_member_required
|
16
|
+
from django.utils.decorators import method_decorator
|
17
|
+
|
18
|
+
from .common import get_model_from_request
|
19
|
+
|
20
|
+
|
21
|
+
@method_decorator(staff_member_required, name='dispatch')
|
22
|
+
class TreeNodeAutocompleteView(View):
|
23
|
+
"""Widget Autocomplete View."""
|
24
|
+
|
25
|
+
def get(self, request, *args, **kwargs):
|
26
|
+
"""Get request."""
|
27
|
+
select_id = request.GET.get("select_id", "").strip()
|
28
|
+
q = request.GET.get("q", "").strip()
|
29
|
+
|
30
|
+
model = get_model_from_request(request)
|
31
|
+
results = []
|
32
|
+
|
33
|
+
if q:
|
34
|
+
field = getattr(model, "display_field", "id")
|
35
|
+
queryset = model.objects.filter(**{f"{field}__icontains": q})
|
36
|
+
elif select_id:
|
37
|
+
pk = int(select_id)
|
38
|
+
queryset = model.objects.filter(pk=pk)
|
39
|
+
else:
|
40
|
+
queryset = model.objects.filter(parent__isnull=True)
|
41
|
+
|
42
|
+
results = [
|
43
|
+
{
|
44
|
+
"id": obj.pk,
|
45
|
+
"text": str(obj),
|
46
|
+
"level": obj.get_depth(),
|
47
|
+
"is_leaf": obj.is_leaf(),
|
48
|
+
}
|
49
|
+
for obj in queryset[:20]
|
50
|
+
]
|
51
|
+
|
52
|
+
return JsonResponse({"results": results})
|
treenode/views/children.py
CHANGED
@@ -1,41 +1,41 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
"""
|
3
|
-
|
4
|
-
Version: 3.0.0
|
5
|
-
Author: Timur Kady
|
6
|
-
Email: timurkady@yandex.com
|
7
|
-
"""
|
8
|
-
|
9
|
-
from django.http import JsonResponse
|
10
|
-
from django.views import View
|
11
|
-
from django.contrib.admin.views.decorators import staff_member_required
|
12
|
-
from django.utils.decorators import method_decorator
|
13
|
-
|
14
|
-
from .common import get_model_from_request
|
15
|
-
|
16
|
-
|
17
|
-
@method_decorator(staff_member_required, name='dispatch')
|
18
|
-
class TreeChildrenView(View):
|
19
|
-
def get(self, request, *args, **kwargs):
|
20
|
-
model = get_model_from_request(request)
|
21
|
-
reference_id = request.GET.get("reference_id")
|
22
|
-
if not reference_id:
|
23
|
-
return JsonResponse({"results": []})
|
24
|
-
|
25
|
-
obj = model.objects.filter(pk=reference_id).first()
|
26
|
-
if not obj or obj.is_leaf():
|
27
|
-
return JsonResponse({"results": []})
|
28
|
-
|
29
|
-
results = [
|
30
|
-
{
|
31
|
-
"id": node.pk,
|
32
|
-
"text": str(node),
|
33
|
-
"level": node.get_depth(),
|
34
|
-
"is_leaf": node.is_leaf(),
|
35
|
-
}
|
36
|
-
for node in obj.get_children()
|
37
|
-
]
|
38
|
-
return JsonResponse({"results": results})
|
39
|
-
|
40
|
-
|
41
|
-
# The End
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""
|
3
|
+
|
4
|
+
Version: 3.0.0
|
5
|
+
Author: Timur Kady
|
6
|
+
Email: timurkady@yandex.com
|
7
|
+
"""
|
8
|
+
|
9
|
+
from django.http import JsonResponse
|
10
|
+
from django.views import View
|
11
|
+
from django.contrib.admin.views.decorators import staff_member_required
|
12
|
+
from django.utils.decorators import method_decorator
|
13
|
+
|
14
|
+
from .common import get_model_from_request
|
15
|
+
|
16
|
+
|
17
|
+
@method_decorator(staff_member_required, name='dispatch')
|
18
|
+
class TreeChildrenView(View):
|
19
|
+
def get(self, request, *args, **kwargs):
|
20
|
+
model = get_model_from_request(request)
|
21
|
+
reference_id = request.GET.get("reference_id")
|
22
|
+
if not reference_id:
|
23
|
+
return JsonResponse({"results": []})
|
24
|
+
|
25
|
+
obj = model.objects.filter(pk=reference_id).first()
|
26
|
+
if not obj or obj.is_leaf():
|
27
|
+
return JsonResponse({"results": []})
|
28
|
+
|
29
|
+
results = [
|
30
|
+
{
|
31
|
+
"id": node.pk,
|
32
|
+
"text": str(node),
|
33
|
+
"level": node.get_depth(),
|
34
|
+
"is_leaf": node.is_leaf(),
|
35
|
+
}
|
36
|
+
for node in obj.get_children()
|
37
|
+
]
|
38
|
+
return JsonResponse({"results": results})
|
39
|
+
|
40
|
+
|
41
|
+
# The End
|
treenode/views/common.py
CHANGED
@@ -1,23 +1,23 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
"""
|
3
|
-
Created on Thu Apr 10 19:50:23 2025
|
4
|
-
|
5
|
-
Version: 3.0.0
|
6
|
-
Author: Timur Kady
|
7
|
-
Email: timurkady@yandex.com
|
8
|
-
"""
|
9
|
-
|
10
|
-
from django.apps import apps
|
11
|
-
from django.http import Http404
|
12
|
-
|
13
|
-
|
14
|
-
def get_model_from_request(request):
|
15
|
-
"""Get model from request."""
|
16
|
-
model_label = request.GET.get("model")
|
17
|
-
if not model_label:
|
18
|
-
raise Http404("Missing 'model' parameter.")
|
19
|
-
try:
|
20
|
-
app_label, model_name = model_label.lower().split(".")
|
21
|
-
return apps.get_model(app_label, model_name)
|
22
|
-
except Exception:
|
23
|
-
raise Http404(f"Invalid model format: {model_label}")
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""
|
3
|
+
Created on Thu Apr 10 19:50:23 2025
|
4
|
+
|
5
|
+
Version: 3.0.0
|
6
|
+
Author: Timur Kady
|
7
|
+
Email: timurkady@yandex.com
|
8
|
+
"""
|
9
|
+
|
10
|
+
from django.apps import apps
|
11
|
+
from django.http import Http404
|
12
|
+
|
13
|
+
|
14
|
+
def get_model_from_request(request):
|
15
|
+
"""Get model from request."""
|
16
|
+
model_label = request.GET.get("model")
|
17
|
+
if not model_label:
|
18
|
+
raise Http404("Missing 'model' parameter.")
|
19
|
+
try:
|
20
|
+
app_label, model_name = model_label.lower().split(".")
|
21
|
+
return apps.get_model(app_label, model_name)
|
22
|
+
except Exception:
|
23
|
+
raise Http404(f"Invalid model format: {model_label}")
|
treenode/widgets.py
CHANGED
@@ -24,8 +24,8 @@ class TreeWidget(forms.Widget):
|
|
24
24
|
class Media:
|
25
25
|
"""Meta class to define required CSS and JS files."""
|
26
26
|
|
27
|
-
css = {"all": ("css/tree_widget.css",)}
|
28
|
-
js = ("js/tree_widget.js",)
|
27
|
+
css = {"all": ("treenode/css/tree_widget.css",)}
|
28
|
+
js = ("treenode/js/tree_widget.js",)
|
29
29
|
|
30
30
|
def build_attrs(self, base_attrs, extra_attrs=None):
|
31
31
|
"""Build attributes for the widget."""
|
@@ -1,93 +0,0 @@
|
|
1
|
-
django_fast_treenode-3.0.7.dist-info/licenses/LICENSE,sha256=SSYqS84FCnAW7tAxmjBKU8qAa8Jv4VGPuSSGeHwWtJE,1095
|
2
|
-
treenode/__init__.py,sha256=3z1hWpHyy4wg6uz7HCmRi9FaXYeN5CfANVpa77UIoPw,53
|
3
|
-
treenode/apps.py,sha256=QlwjNDM9rkUoWB8Vm8-OkS6lNx0-aTByuGZlu9wrQMs,1832
|
4
|
-
treenode/cache.py,sha256=2jUiiecfFxwB7QFukpU4u0FnDzGH6hNRfo6KAYvs6vM,8447
|
5
|
-
treenode/forms.py,sha256=V-upmbYSW1BbuXdSBGExHxw_j5TTUheaHvreK9tSGTE,3155
|
6
|
-
treenode/settings.py,sha256=oSkcKXNVd28HXrlWZIH2VYinCMq-UdCDlX4KD0Qc_Xk,631
|
7
|
-
treenode/signals.py,sha256=ERrlKjGqhYaPYVKKRk1JBBlPFOmJKpJ6bXsJavcTlo0,518
|
8
|
-
treenode/tests.py,sha256=2uDafv3Ns6f7Vy1ekUtgYxCZEi1KRyesZDTAFhYcX-E,63
|
9
|
-
treenode/urls.py,sha256=krHvVigc_dxC0z5hEd2rgeH6th8jW7qJY3Qbia-419Y,240
|
10
|
-
treenode/version.py,sha256=-I7mgQs7Zf31bXpDTd5OymDS52Y_ye4ZPw9yQjKTS9E,220
|
11
|
-
treenode/widgets.py,sha256=VItPvN9XgaSRI_MZjKEmtaHDJcn2bDIQIppwKjXmYQM,4017
|
12
|
-
treenode/admin/__init__.py,sha256=XNEYHdF5lKb0vpdlVxdR2fxj5oUgzyx1YyCwsv0gxHw,100
|
13
|
-
treenode/admin/admin.py,sha256=2-74ESGEZ7s6wfPzep6OQlz1uD_80WFExemtwbQiD3M,8289
|
14
|
-
treenode/admin/changelist.py,sha256=KUYS9MaR8Ck_1xmMqupobxWKarrJEqmHuEG32CL01Bo,1662
|
15
|
-
treenode/admin/exporter.py,sha256=QE74V6W3tvwA5kCvBt1MmVlLOaWh-o8EU63cgmiwD5Q,5724
|
16
|
-
treenode/admin/importer.py,sha256=hK3D-1DZcoowGblRluGzng3n5Bf__hMsbNaIGXRpRdg,6263
|
17
|
-
treenode/admin/mixin.py,sha256=jOkKKt0CpknGokluW8T1YB7VhkCkaAAMYBuptbYDXAw,10648
|
18
|
-
treenode/managers/__init__.py,sha256=c7F9Ku9489Hv6lTpUY2nbyBlWFCXBWAkNBm4xTKcjL8,186
|
19
|
-
treenode/managers/managers.py,sha256=8OaFxtajyR1d7-UHyiUbifMBEF9cjfHTIEYPkYUWmt0,7166
|
20
|
-
treenode/managers/queries.py,sha256=pmZ07QZQbTTJN0ur6-pQGua2vGXVCVisylL1LWNXMmo,10655
|
21
|
-
treenode/managers/tasks.py,sha256=b8deUAbCpD1Yov-PpjKNAx49rL4fejkGf64ih5JziF0,7138
|
22
|
-
treenode/models/__init__.py,sha256=iR4ksCKoayvkIWWgGk6OUGHZC3D0mzAtgdBcS2vQPBw,188
|
23
|
-
treenode/models/decorators.py,sha256=N2dcnWqSCiEXDcYCf0zVijrbGUC8kYlqOLi_GKFmECU,1457
|
24
|
-
treenode/models/factory.py,sha256=sPUSrvo1za-r6ny3B8ptwevyjO8-iUpPNrT0eSD2kvI,1786
|
25
|
-
treenode/models/models.py,sha256=n_2nCJzBOEcmh3r-GCoHV3ZiTX8Xe1ewK9SPptvI_M0,12273
|
26
|
-
treenode/models/mixins/__init__.py,sha256=aALVKMGAWbgMAeKWS6s-NF3L5FmRX96mQxtpthOX-Ec,805
|
27
|
-
treenode/models/mixins/ancestors.py,sha256=9g-0nPHoiF_SX2kN4uDLdbWyw-TDCz1YqxLJngwTZOQ,1971
|
28
|
-
treenode/models/mixins/children.py,sha256=H9iMqgucSmwLX-3O3QUj1a2PUQTmmWZ4GPPjRZ9a5E4,2399
|
29
|
-
treenode/models/mixins/descendants.py,sha256=RKowr29JUUO3E_UDvbLbMLhbn5IUkY2eh3AXfU8XSE8,2165
|
30
|
-
treenode/models/mixins/family.py,sha256=MB5kWRVvxU_xmSgCekveTP5Vhj4wJki8bU7hzn9RNLE,1673
|
31
|
-
treenode/models/mixins/logical.py,sha256=gh5wv5XZDs5GWarU6g9zKXWNwji7SE3zSVNIpywDWjw,2190
|
32
|
-
treenode/models/mixins/node.py,sha256=8kqYdFTyZK5WsSxguuX3jBo1nZehDmwIBjm38S6QJw4,8576
|
33
|
-
treenode/models/mixins/properties.py,sha256=1O6p2tfvOesBooZeOeuXi8yfEO_o-5gn_agtKqMxU-s,3945
|
34
|
-
treenode/models/mixins/roots.py,sha256=2lDjUH22NZFUMVbVZgsdtEqDoUyHhGTiaoeo9h3KRfk,4102
|
35
|
-
treenode/models/mixins/siblings.py,sha256=4XvQS7WkgolzEZdnURhIClo-VUcpuqQ-Sc7PDYKGmFw,3069
|
36
|
-
treenode/models/mixins/tree.py,sha256=5Cew5c-NtTmz15S_ueDZ-fojHtQKZEKNxmp3W6qlC-8,14512
|
37
|
-
treenode/models/mixins/update.py,sha256=oCZkMnfT23n2n3_mnokDrtTLS_jO_lJRwG3ENkH_DE4,4948
|
38
|
-
treenode/static/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
39
|
-
treenode/static/css/.gitkeep,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
|
40
|
-
treenode/static/css/tree_widget.css,sha256=YVIHuZT_E5ck5N7wvYvuwgV_m-4Ta_uGFiNUoTw-zbk,4861
|
41
|
-
treenode/static/css/treenode_admin.css,sha256=_AVEO52atudOVBspgH4ecubbgGUeKhcC13WSxo7QQAw,3021
|
42
|
-
treenode/static/css/treenode_tabs.css,sha256=pbulaUEhNMQFNWXFQrRN1zMyKjoSqLAnjNygpouPUfE,879
|
43
|
-
treenode/static/js/.gitkeep,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
|
44
|
-
treenode/static/js/lz-string.min.js,sha256=TAnTJQd2AlLqT9M2TU7GFjnoj9SIfwLeZnpEtLkP624,4718
|
45
|
-
treenode/static/js/tree_widget.js,sha256=2LU8IIJD5TXbWVGjCEgrj5aYnUYtwBZECzj25XLtxNc,9633
|
46
|
-
treenode/static/js/treenode_admin.js,sha256=fkxAj50QxwpPVdQxDNxQZ5vR0goUt53h8FzOv_fjxBQ,15945
|
47
|
-
treenode/static/vendors/jquery-ui/AUTHORS.txt,sha256=geZ7JfVsTJq8Wgjrcm1p56Zqjxx7PL9FkxhKiN8dQg8,14848
|
48
|
-
treenode/static/vendors/jquery-ui/LICENSE.txt,sha256=9kkCXPZcjc2FiLCTeIO6elK9ttNRKUZKNqFgLrACUPE,1818
|
49
|
-
treenode/static/vendors/jquery-ui/index.html,sha256=RSv8cA662qJdc02OX-UmpaBJoZrngoQqnNWVZNn9GQQ,24229
|
50
|
-
treenode/static/vendors/jquery-ui/jquery-ui.css,sha256=O8mmheetXPeKUa-iDk8fdxDhs096eWIi10qLJb6OXyw,17171
|
51
|
-
treenode/static/vendors/jquery-ui/jquery-ui.js,sha256=XtnlPiKuVzMh-cef76mBCNCTPqk2cIlKBgmTHfRBDog,146430
|
52
|
-
treenode/static/vendors/jquery-ui/jquery-ui.min.css,sha256=Yv2MureLOGZicbgEv28X9ft9o0SRBZ84PWIgg6h_V2E,15003
|
53
|
-
treenode/static/vendors/jquery-ui/jquery-ui.min.js,sha256=FT6F7DDm5J1Qz6B5fv3e8jnmx9QyyfR2qUeTptb73bA,70364
|
54
|
-
treenode/static/vendors/jquery-ui/jquery-ui.structure.css,sha256=392jP1trXFqS1OVv2X50px0F8w1DeTyIvvHL9wxNXi0,328
|
55
|
-
treenode/static/vendors/jquery-ui/jquery-ui.structure.min.css,sha256=cXLe7UDVCN5SvPpbb3HJdndQIk1hlWMrzyRRYO9rcLs,208
|
56
|
-
treenode/static/vendors/jquery-ui/jquery-ui.theme.css,sha256=grsB4hVvwiBxnNsG1c_ocH1YK76CExOav_dn_BsxepU,17140
|
57
|
-
treenode/static/vendors/jquery-ui/jquery-ui.theme.min.css,sha256=oW6e3DmGiKSNLzo3HCUnjes9ykGZ6gXEtl3LjiQIkMs,13708
|
58
|
-
treenode/static/vendors/jquery-ui/package.json,sha256=AvCATruWzbwY7NsfzcUR2WqPjslGO8M7hHzTj1AYDQY,2122
|
59
|
-
treenode/static/vendors/jquery-ui/external/jquery/jquery.js,sha256=eKhayi8LEQwp4NKxN-CfCh-3qOVUtJn3QNZ0TciWLP4,285314
|
60
|
-
treenode/static/vendors/jquery-ui/images/ui-icons_444444_256x240.png,sha256=YW09ms2dyfoVEOT_NEpaWXMMRLJxVIqu8hku63SoCEA,7107
|
61
|
-
treenode/static/vendors/jquery-ui/images/ui-icons_555555_256x240.png,sha256=HP6KoU5aOllbVtaudhmNOLhBIzi_0oCuxBjwyhDATOo,7105
|
62
|
-
treenode/static/vendors/jquery-ui/images/ui-icons_777620_256x240.png,sha256=NxKGIMNmb6YYZor0RuijQ7PTK5BoA9b5qXLjYTMFvXo,4615
|
63
|
-
treenode/static/vendors/jquery-ui/images/ui-icons_777777_256x240.png,sha256=TLerPghEHzRXKPUuwr0VPT1PusnYFUe1-k1QIyeXe7g,7115
|
64
|
-
treenode/static/vendors/jquery-ui/images/ui-icons_cc0000_256x240.png,sha256=S36ETnNcCxoWxmxAkVl0P3LYEDInjxi9GnG_g5uho1c,4615
|
65
|
-
treenode/static/vendors/jquery-ui/images/ui-icons_ffffff_256x240.png,sha256=SBgnaQEkoyko7AbSFy0lDoDzAup6bkVQ74XyenFleUM,6395
|
66
|
-
treenode/templates/.gitkeep,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
|
67
|
-
treenode/templates/treenode/.gitkeep,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
|
68
|
-
treenode/templates/treenode/admin/.gitkeep,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
|
69
|
-
treenode/templates/treenode/admin/treenode_ajax_rows.html,sha256=zFyPaTbSyxRjOqQ85SMv__qTIYDjEna6chYODBypDZA,224
|
70
|
-
treenode/templates/treenode/admin/treenode_changelist.html,sha256=ALU8iZLCOIiiGIf5RTdv3Bb694pG_YyQ-wcbz1CkBKc,654
|
71
|
-
treenode/templates/treenode/admin/treenode_import_export.html,sha256=K6L_JnhGpWgQdduXSfAJ0UuTBfSN4ylFw9w_e5tPDDE,2926
|
72
|
-
treenode/templates/treenode/admin/treenode_rows.html,sha256=S1XtZXWMUdfgjDoKG7OJwZg81a_5IKPp7tyrrHhJbBk,1695
|
73
|
-
treenode/templates/treenode/widgets/tree_widget.html,sha256=GKcCU-B2FkkJ2BSOuXOw9e_PdYTtADcvyITEXqOlZ9Y,723
|
74
|
-
treenode/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
75
|
-
treenode/templatetags/treenode_admin.py,sha256=0Xz5tS_Etf2FU69Ww7GfQ6u2_jh97jymD1Gc4XCpHbc,1204
|
76
|
-
treenode/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
77
|
-
treenode/utils/db/__init__.py,sha256=RwicAcJSI1nhIPWLdT7j9TFsgOc9834VDn9lVn54GlY,247
|
78
|
-
treenode/utils/db/compiler.py,sha256=PgD9ybS5H8OUHw1gkFBQHhnrf5HiCx8QXUMRhydwh7o,3824
|
79
|
-
treenode/utils/db/db_vendor.py,sha256=4SyEHl51jVCDB3is4omHCf2bTB_QV3RvemUQYxJP5m0,930
|
80
|
-
treenode/utils/db/service.py,sha256=PF85Yhz2xUWFFCzpLYotmiNTZXXEH61rhswslSxEUds,2640
|
81
|
-
treenode/utils/db/sqlcompat.py,sha256=K71ggkKIvpdTtHQ6Y4qcbo6cj2eYiEfy6DlVBr8Po1E,4460
|
82
|
-
treenode/utils/db/sqlquery.py,sha256=KXcfKbbaBF-D134H_2DiPQtjedR79SJNXPJc0msZYEc,1938
|
83
|
-
treenode/views/__init__.py,sha256=ppxbBx51TUaKstJFpAd_DTmbKjbZGmVMLNYSpgUKnd0,111
|
84
|
-
treenode/views/autoapi.py,sha256=o75e8IFsogbhZN_rbx3BKVnoruD96nWelnC5UzOqUDw,3628
|
85
|
-
treenode/views/autocomplete.py,sha256=Z7cBnC4Ihdyxm8zlbnG6CkZdVkM3TOTWRpw5mdhaIVA,1469
|
86
|
-
treenode/views/children.py,sha256=bygXaEBExxG3zIPL34_PYHLFFIqlQU2naqPIlyQ6e-s,1152
|
87
|
-
treenode/views/common.py,sha256=mrmr40R91XVbMWcz5GZT-OjpnQ87F7XQZxu1W6rqpqI,617
|
88
|
-
treenode/views/crud.py,sha256=RI5rdyD4hZTszjZFThByxi_lkAeJlqbDCXFkD8iyzKE,7424
|
89
|
-
treenode/views/search.py,sha256=c_GyooT3jyoNa96bBxfoWruRN1wIw-ZGYvwGKkGojTs,1501
|
90
|
-
django_fast_treenode-3.0.7.dist-info/METADATA,sha256=7scCSnoGv6UFkQHQV1yLuZBtXr3PSU1Lii3qQi43r_o,10249
|
91
|
-
django_fast_treenode-3.0.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
92
|
-
django_fast_treenode-3.0.7.dist-info/top_level.txt,sha256=fmgxHbXyx1O2MPi_9kjx8aL9L-8TmV0gre4Go8XgqFk,9
|
93
|
-
django_fast_treenode-3.0.7.dist-info/RECORD,,
|