django-fast-treenode 1.1.2__py3-none-any.whl → 1.1.3__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: django-fast-treenode
3
- Version: 1.1.2
3
+ Version: 1.1.3
4
4
  Summary: Application for supporting tree (hierarchical) data structure in Django projects
5
5
  Home-page: https://github.com/TimurKady/fast-treenode
6
6
  Author: Timur Kady
@@ -12,11 +12,13 @@ Classifier: Framework :: Django :: 3.0
12
12
  Classifier: Intended Audience :: Developers
13
13
  Classifier: License :: OSI Approved :: MIT License
14
14
  Classifier: Operating System :: OS Independent
15
- Classifier: Programming Language :: Python
16
15
  Classifier: Programming Language :: Python :: 3
17
- Classifier: Programming Language :: Python :: 3 :: Only
18
- Classifier: Programming Language :: Python :: 3.8
19
16
  Classifier: Programming Language :: Python :: 3.9
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Framework :: Django
20
+ Classifier: Framework :: Django :: 3.0
21
+ Classifier: Framework :: Django :: 4.0
20
22
  Requires-Python: >=3.8
21
23
  Description-Content-Type: text/markdown
22
24
  License-File: LICENSE
@@ -5,7 +5,7 @@ treenode/compat.py,sha256=ujFPQL0j5qXC0clEDXU4EKRN0sgXNKeZrRBYnQ-qgCc,193
5
5
  treenode/factory.py,sha256=jSKgWDDEyTfhr4042VIzmeeUZ4UuhAyeO-2j7BK4wCI,1942
6
6
  treenode/forms.py,sha256=16XkxtVVxNCqLlLvankPVuFoWpOvFPW4UnRsQEjldso,939
7
7
  treenode/managers.py,sha256=yqPHozxK-P9kUQ98xVVmc-rkNf9ON8ROAIJm_rUDOwk,2210
8
- treenode/models.py,sha256=ovaEsYOweeZxaQmoZ--gwhSVrNDvs2WEKJPXuhU-tPo,20799
8
+ treenode/models.py,sha256=TwAJgFAT61slbGqXWjGyKGyU2j9kQhapIe185wm-2lE,20769
9
9
  treenode/tests.py,sha256=2uDafv3Ns6f7Vy1ekUtgYxCZEi1KRyesZDTAFhYcX-E,63
10
10
  treenode/version.py,sha256=9d8boLVLA0TTCu5doEbpgUL3T-FjcNU-fvLyhw_CJyk,50
11
11
  treenode/views.py,sha256=u0FhL7RT5byf5IlcnZEMrcH2TOnQkdfRQU2SjtA26m0,66
@@ -15,7 +15,7 @@ treenode/docs/Documentation,sha256=R3ZVxs_3MRqZDKLsXgxValiTHAYyNATI_1l0_hUdR3Y,1
15
15
  treenode/static/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  treenode/static/select2tree/.gitkeep,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
17
17
  treenode/static/select2tree/select2tree.css,sha256=HnKj-gTghI_GqdfEQNzPrEAaQvOJRlH1ScS7AGR-AHY,4234
18
- treenode/static/select2tree/select2tree.js,sha256=pvDiaxL6V9cs00Q9LUSLZxy2EJGcIimq_5s0JYE5fuM,5948
18
+ treenode/static/select2tree/select2tree.js,sha256=-6uneUO7L1QQ2GUL0MlqZfahP-P89Dy3tLc-kpeCdyg,6295
19
19
  treenode/static/treenode/.gitkeep,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
20
20
  treenode/static/treenode/css/.gitkeep,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
21
21
  treenode/static/treenode/css/treenode.css,sha256=a7PYJGVBz5tbMqHDRnWDvQisDB5q5PKMOup4AIaG2h0,1721
@@ -26,8 +26,8 @@ treenode/templates/widgets/.gitkeep,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLC
26
26
  treenode/templates/widgets/attrs.html,sha256=hsfr8ZOSQS0zrH13AdPa79d1xer3FFw_IrMl0nf_NRQ,217
27
27
  treenode/templates/widgets/options.html,sha256=_17HCTTTQfsu4fiONflDnbLCB-XICN491at_g-diXyU,288
28
28
  treenode/templates/widgets/select2tree.html,sha256=oNiHiYaJpfHBRcQxHt7rIaoKlAYifoIzoMeN0VZHPjo,675
29
- django_fast_treenode-1.1.2.dist-info/LICENSE,sha256=GiiEe4Y9oOCbn9eGuNew1mMYHU_bJWaCK9zOusnKvvU,1091
30
- django_fast_treenode-1.1.2.dist-info/METADATA,sha256=lvPmiceyb5eKp8lA5U_hO3JlkhMOGXeWoRamsMrwsFk,17335
31
- django_fast_treenode-1.1.2.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
32
- django_fast_treenode-1.1.2.dist-info/top_level.txt,sha256=fmgxHbXyx1O2MPi_9kjx8aL9L-8TmV0gre4Go8XgqFk,9
33
- django_fast_treenode-1.1.2.dist-info/RECORD,,
29
+ django_fast_treenode-1.1.3.dist-info/LICENSE,sha256=GiiEe4Y9oOCbn9eGuNew1mMYHU_bJWaCK9zOusnKvvU,1091
30
+ django_fast_treenode-1.1.3.dist-info/METADATA,sha256=56VD71x6zNwlj8mnLFvDWCe9sz_NA9evISCs8YArSPQ,17400
31
+ django_fast_treenode-1.1.3.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
32
+ django_fast_treenode-1.1.3.dist-info/top_level.txt,sha256=fmgxHbXyx1O2MPi_9kjx8aL9L-8TmV0gre4Go8XgqFk,9
33
+ django_fast_treenode-1.1.3.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.42.0)
2
+ Generator: bdist_wheel (0.43.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
treenode/models.py CHANGED
@@ -143,7 +143,6 @@ class TreeNodeModel(with_metaclass(TreeFactory, models.Model)):
143
143
  for c in children
144
144
  ]
145
145
  cls.closure_model.objects.bulk_create(objects)
146
- cls._update_orders()
147
146
 
148
147
  @classmethod
149
148
  def delete_tree(cls):
@@ -141,31 +141,41 @@ window.addEventListener("load", function() {
141
141
  showHideSub(target.parentNode);
142
142
  }
143
143
 
144
- function showHideSub(ele) {
145
- var curEle = ele;
146
- var $options = $(ele).parent(".select2-results__options");
147
- var shouldShow = true;
148
- do {
149
- var pup = ($(curEle).attr("data-pup") || "").replace(/'/g, "\\'");
150
- curEle = null;
151
- if (pup) {
152
- var pupEle = $options.find(".select2-results__option[data-val='" + pup + "']");
153
- if (pupEle.length > 0) {
154
- if (!pupEle.eq(0).hasClass("opened")) { // hide current node if any parent node is collapsed
155
- $(ele).removeClass("showme");
156
- shouldShow = false;
157
- break;
158
- }
159
- curEle = pupEle[0];
160
- }
161
- }
162
- } while (curEle);
163
- if (shouldShow) $(ele).addClass("showme");
144
+ function escapeAttributeValue(value) {
145
+ if (!value.includes("\\'") && !value.includes('\\\\')) {
146
+ value = value.replace(/'/g, "\\'").replace(/\\/g, '\\\\');
147
+ }
148
+ return value;
149
+ }
164
150
 
165
- var val = ($(ele).attr("data-val") || "").replace(/'/g, "\\'");
166
- $options.find(".select2-results__option[data-pup='" + val + "']").each(function () {
167
- showHideSub(this);
168
- });
151
+
152
+
153
+ function showHideSub(ele) {
154
+ var curEle = ele;
155
+ var $options = $(ele).parent(".select2-results__options");
156
+ var shouldShow = true;
157
+ do {
158
+ var pup = escapeAttributeValue($(curEle).attr("data-pup") || "");
159
+ curEle = null;
160
+ if (pup) {
161
+ var pupEle = $options.find(".select2-results__option[data-val='" + pup + "']");
162
+ if (pupEle.length > 0) {
163
+ if (!pupEle.eq(0).hasClass("opened")) {
164
+ $(ele).removeClass("showme");
165
+ shouldShow = false;
166
+ break;
167
+ }
168
+ curEle = pupEle[0];
169
+ }
170
+ }
171
+ } while (curEle);
172
+ if (shouldShow) $(ele).addClass("showme");
173
+
174
+ var val = escapeAttributeValue($(ele).attr("data-val") || "");
175
+ $options.find(".select2-results__option[data-pup='" + val + "']").each(function () {
176
+ showHideSub(this);
177
+ });
169
178
  }
179
+
170
180
  })(django.jQuery);
171
181
  });