lino 25.2.1__py3-none-any.whl → 25.2.3__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 (43) hide show
  1. lino/__init__.py +8 -3
  2. lino/api/dd.py +13 -0
  3. lino/api/doctest.py +49 -17
  4. lino/api/selenium.py +1 -1
  5. lino/core/actors.py +16 -7
  6. lino/core/boundaction.py +1 -1
  7. lino/core/choicelists.py +1 -1
  8. lino/core/dbtables.py +15 -15
  9. lino/core/elems.py +1 -1
  10. lino/core/renderer.py +2 -2
  11. lino/core/requests.py +49 -13
  12. lino/core/site.py +5 -5
  13. lino/help_texts.py +8 -3
  14. lino/modlib/comments/models.py +1 -1
  15. lino/modlib/comments/ui.py +1 -1
  16. lino/modlib/extjs/__init__.py +2 -2
  17. lino/modlib/extjs/views.py +75 -29
  18. lino/modlib/help/config/makehelp/conf.tpl.py +1 -1
  19. lino/modlib/jinja/mixins.py +62 -0
  20. lino/modlib/jinja/models.py +6 -0
  21. lino/modlib/linod/fixtures/__init__.py +0 -0
  22. lino/modlib/linod/fixtures/linod.py +32 -0
  23. lino/modlib/linod/mixins.py +15 -1
  24. lino/modlib/memo/mixins.py +11 -3
  25. lino/modlib/memo/parser.py +1 -1
  26. lino/modlib/notify/models.py +1 -1
  27. lino/modlib/printing/actions.py +6 -12
  28. lino/modlib/printing/choicelists.py +7 -7
  29. lino/modlib/uploads/__init__.py +9 -6
  30. lino/modlib/uploads/models.py +3 -3
  31. lino/modlib/uploads/ui.py +5 -2
  32. lino/modlib/users/mixins.py +4 -0
  33. lino/utils/__init__.py +0 -1
  34. lino/utils/jscompressor.py +4 -4
  35. lino/utils/restify.py +2 -2
  36. lino/utils/soup.py +4 -4
  37. lino/utils/xml.py +19 -5
  38. {lino-25.2.1.dist-info → lino-25.2.3.dist-info}/METADATA +1 -1
  39. {lino-25.2.1.dist-info → lino-25.2.3.dist-info}/RECORD +42 -39
  40. lino/utils/requests.py +0 -55
  41. {lino-25.2.1.dist-info → lino-25.2.3.dist-info}/WHEEL +0 -0
  42. {lino-25.2.1.dist-info → lino-25.2.3.dist-info}/licenses/AUTHORS.rst +0 -0
  43. {lino-25.2.1.dist-info → lino-25.2.3.dist-info}/licenses/COPYING +0 -0
lino/utils/xml.py CHANGED
@@ -2,14 +2,19 @@
2
2
  # Copyright 2013-2024 Rumma & Ko Ltd
3
3
  # License: GNU Affero General Public License v3 (see file COPYING for details)
4
4
 
5
+ import subprocess
6
+
5
7
  from lxml import etree
6
8
  from lxml import isoschematron
7
9
 
8
10
 
11
+ # def validate_xml(doc, xsdfile):
9
12
  def validate_xml(xmlfile, xsdfile):
10
13
  """
11
14
 
12
15
  Validate the given :attr:`xmlfile` using the given :attr:`xsdfile`.
16
+ Validate the given XML document `doc` using the given :attr:`xsdfile`.
17
+ The document must be an ElementTree root element.
13
18
 
14
19
  When :attr:`xsdfile` ends with :file:`.xsd`, the generated :attr:`xmlfile`
15
20
  file is validated using :class:`lxml.etree.XMLSchema`. When it ends with
@@ -19,11 +24,20 @@ def validate_xml(xmlfile, xsdfile):
19
24
 
20
25
  """
21
26
  doc = etree.parse(xmlfile)
22
- if xsdfile.endswith(".xsd"):
27
+ if xsdfile.suffix == ".xsd":
23
28
  # xsd = etree.XMLSchema(etree.parse(xsdfile))
24
29
  xsd = etree.XMLSchema(file=xsdfile)
25
30
  xsd.assertValid(doc)
26
- elif xsdfile.endswith(".sch"):
27
- # schematron = isoschematron.Schematron(etree.parse(xsdfile))
28
- schematron = isoschematron.Schematron(file=xsdfile)
29
- schematron.assertValid(doc)
31
+ elif xsdfile.suffix == ".sch":
32
+ if False:
33
+ jarfile = "/home/luc/Downloads/saxon/saxon-he-12.5.jar"
34
+ # cmd = ["/usr/bin/java", "-jar", jarfile, "-xsl:", xsdfile, "-s:", xmlfile]
35
+ cmd = ["/usr/bin/java", "-jar", jarfile, f"-xsd:{xsdfile}", f"-s:{xmlfile}"]
36
+ cp = subprocess.run(cmd)
37
+
38
+ if False:
39
+ # # sch = etree.parse(xsdfile)
40
+ # # schematron = isoschematron.Schematron(sch, store_report=True)
41
+ schematron = isoschematron.Schematron(file=xsdfile, store_report=True)
42
+ schematron.assertValid(doc)
43
+ # schematron.validation_report
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lino
3
- Version: 25.2.1
3
+ Version: 25.2.3
4
4
  Summary: A framework for writing desktop-like web applications using Django and ExtJS or React
5
5
  Project-URL: Homepage, https://www.lino-framework.org
6
6
  Project-URL: Repository, https://gitlab.com/lino-framework/lino
@@ -1,16 +1,16 @@
1
1
  lino/.cvsignore,sha256=1vrrWoP-WD8hPfCszHHIiJEi8KUMRCt5WvoKB9TSB1k,28
2
2
  lino/SciTEDirectory.properties,sha256=rCYi_e-6h8Yx5DwXhAa6MBPlVINcl6Vv9BQDYZV2_go,28
3
- lino/__init__.py,sha256=MM2wocDgfKwyG9CmCGFQ2IxrCzVWmRLSCJzGuv2hCgg,5584
3
+ lino/__init__.py,sha256=ZmFiwiiQpJsV0ud-WYVwRBcTY9Ar96t9l7ab9drrkwo,5916
4
4
  lino/ad.py,sha256=AQ-vJ4scac1mx3xegXezxnxyOQpV-a0q3VFMJSDbj2s,142
5
5
  lino/apps.py,sha256=ECq-dPARDkuhngwNrcipse3b4Irj70HxJs44uWEZFc4,27
6
6
  lino/hello.py,sha256=7-PJg7PnEiznyETqGjOwXcKh8rda0qLetpbS2gvRYy0,532
7
- lino/help_texts.py,sha256=WgZHe3ntyEtZ0LiKSIMMEH6OYHq4bFDKj-noKw7LYVQ,91195
7
+ lino/help_texts.py,sha256=eLDOaWsgFLiJWc-ThRXR9pP85TaRSIi4y1lEpluS7yE,91831
8
8
  lino/api/__init__.py,sha256=WmzHU-rHdZ68se_nI0SmepQTGE8-cd9tPpovHRH9aag,512
9
9
  lino/api/ad.py,sha256=F6SrcKPRRalHKOZ7QLwsRWGq9hhykQIeo0b85cEk9NQ,314
10
- lino/api/dd.py,sha256=-mjuoflZilnFM97we-N1H_sEf1TQiNs62JwZ5m4XV1s,7813
11
- lino/api/doctest.py,sha256=cDnnkvci-6K2evlaJ6ih6BopiSEYhchN7Y2UhmyIdNE,25575
10
+ lino/api/dd.py,sha256=pN-c6si_5iEzDq8o5z6i3KszlWky6_HJtKFPF8V6BPc,8398
11
+ lino/api/doctest.py,sha256=PrmUSTT7AsUjjN0TjvVlzuCJ8ViUUeOq9wz8QXgDhG0,26349
12
12
  lino/api/rt.py,sha256=WX0I7oOJIFtqN1JXK1sVC_OmByY5hct4lDIaELDFkgs,1378
13
- lino/api/selenium.py,sha256=07BQuC6KW2tBUlIUcPGeCQHIfogz-wuHJqPshSzLDp0,9384
13
+ lino/api/selenium.py,sha256=bOu8UaNz3Q7lGVvxjmvrtYtSWn1xfI1f5MN5sVcdYr8,9383
14
14
  lino/api/shell.py,sha256=epyjwEZ396TiJ0AHqhVIvzX8TBIXU8xR4UHJlYOrRhc,536
15
15
  lino/config/about.html.tmpl,sha256=Vt3drpxP5f26wb1meXq_Kc8ZUAl_TGfr1bcuWuz-7L4,705
16
16
  lino/config/admin_main.html,sha256=uq179bSDST-ACy0iuOFqMfs501mdwnR7Zw9ICDFZfsc,37
@@ -29,18 +29,18 @@ lino/config/unused/404.html,sha256=GOJrAyF6NcM69ETdSHgjff_-lvYs_-bOYhyZBem7x3I,2
29
29
  lino/config/unused/500.html,sha256=aWmP37uPoMS-PJgPuBloxdx0nEreU7AvkXxsex3yVYs,544
30
30
  lino/core/__init__.py,sha256=T7106QxQpa3jXAouGTIer6AXEwpkJ0NAQ9B7Q3-K6qE,686
31
31
  lino/core/actions.py,sha256=2QGQYpjQ_Fyvb3wb4TBGj8GO4f857aQ3YX3Uz6u15dw,46622
32
- lino/core/actors.py,sha256=0MhLLWf3uXzO5nEV5D8Bc12dedlgLCWVBo4WcJyLQCc,73865
33
- lino/core/boundaction.py,sha256=tb0C4WwbJpAP3yKbR6OaibzcAkwVs3nfeuD0RjXTjIg,6665
32
+ lino/core/actors.py,sha256=n0g1QIg7TWs-Ze8iDBPh6l2vSzcClxIWrSGy_pBUVVk,74121
33
+ lino/core/boundaction.py,sha256=9LgEsN3pM2DzG28_WZ7DgXKRRMdGW2E5yTVB1uWcsww,6674
34
34
  lino/core/callbacks.py,sha256=uu1-znzxVDD-JETUebw-hYsNg_9ExQb1vfwbc7Psjro,7549
35
- lino/core/choicelists.py,sha256=8FpmfEREj0jITkx3qihjPfg8pPMBHWXprNfuje4b7N4,36525
35
+ lino/core/choicelists.py,sha256=rR1FutDfYRRJUtBPJPl_aMuy6r6vqmZGkatcCe2wSUg,36519
36
36
  lino/core/classproperty.py,sha256=_E95WPAs7BWbAuFpPvoYM2ZwW_mbq3rvF7o43WsMq_8,4316
37
37
  lino/core/constants.py,sha256=chvG1TrwD2gVMmL4nTOZtO8NcffcclcUv3zBE8mMoiQ,4503
38
38
  lino/core/dashboard.py,sha256=p7EevOgKfyq4I_xs5ToXK_MhoivE-tky9YU4-zzGNMg,6514
39
- lino/core/dbtables.py,sha256=bydsaCkQgUg3KlmHajcbZ2oUQdxcSp82nwbvE5uYPDQ,29067
39
+ lino/core/dbtables.py,sha256=nSZgFOar2-XuDX3U5_BLJb7Im7ZvFcyP2iMQCxSTTaA,29134
40
40
  lino/core/dbutils.py,sha256=_QHcWd-ajLUwt5G8uOp8d47lZQKD3VseHnqKJke18rA,263
41
41
  lino/core/ddh.py,sha256=dYScxWKTOCDEgow7wJNJe812ESasmmITPK2ovraBQno,3172
42
42
  lino/core/diff.py,sha256=XQ-oQQDS_v3kXd4eRP9Hwr5UCgp-TPZIPVav9ZblUno,5882
43
- lino/core/elems.py,sha256=CsYl9fLn5Jlt1HWrOEamcAC8xtMKeulhS3R2uRg4XcE,108453
43
+ lino/core/elems.py,sha256=H2MOrEUAIa9Plkvw5ZSSHfZd0KYDG84-R0B1JPXbpI0,108453
44
44
  lino/core/exceptions.py,sha256=QDxDo5cllSyXQ8VWet9hGXzNadxCOmwMVrFXc6V-vpE,665
45
45
  lino/core/fields.py,sha256=C14cCHHJclk0z6NlJFRPyXPJaVS1DhngQLTE6gPR0BE,57407
46
46
  lino/core/frames.py,sha256=ISxgq9zyZfqW3tDZMWdKi9Ij455lT_81qBH0xex0bfE,1161
@@ -55,11 +55,11 @@ lino/core/merge.py,sha256=sKtTeZtHdoDKerdHj4NXuXXNzpKDsfdPaiq-CY0NqQc,9094
55
55
  lino/core/model.py,sha256=wKxb0bWi_5FgcZn8Pz-bjDGo-5Y1cwOVTZPrJbv5ljQ,36408
56
56
  lino/core/permissions.py,sha256=Fnemz3NwWz21X0YATI9Q7ba2FcAdg-EMLHjIcbt_AVU,6840
57
57
  lino/core/plugin.py,sha256=oVvTsGoBBYmjvRgtyiFPIiHZQErH0ZlNjiUFtOk2dOM,6834
58
- lino/core/renderer.py,sha256=jIXxNSpljZhb9tBMhUfDNbZD3XmxYzaS6SlipHx29L4,47291
59
- lino/core/requests.py,sha256=kOPN8Eaz55hG9W7lgNh2lN2HBGXlP19GEmHUtq0nR8U,93211
58
+ lino/core/renderer.py,sha256=y79wQnoQ9cdnBmNXWnvPPWiTIrRs5ozyLI6j3T6oPr0,47251
59
+ lino/core/requests.py,sha256=NGs1uAF0zPkFOtnd3wDvHmfINdAvHbmLEGARdmC3I1w,94529
60
60
  lino/core/roles.py,sha256=PXwk436xUupxdbJcygRSYFu7ixfKjAJPQRUQ8sy0lB0,4425
61
61
  lino/core/signals.py,sha256=0JT89mkjSbRm57QZcSI9DoThoKUGkyi-egNhuLUKEds,948
62
- lino/core/site.py,sha256=s_kisoL35ZcbFbF18eyvARu7OcNA_61GPE3-_6rNJIc,83136
62
+ lino/core/site.py,sha256=kUp5hjW_tLdDugmstIPyk8FEmbxCWBHsVOXQiQBEw-4,83163
63
63
  lino/core/store.py,sha256=eQyahBvsMvX2K_lJvJGSATLV0SGOOCfqpf0JDJprNNw,51351
64
64
  lino/core/tables.py,sha256=VXfUDENJ-Zl6M3tRvEdLr1LGjmJcAmwXUWSG4EWLFDE,24413
65
65
  lino/core/urls.py,sha256=06QlmN1vpxjmb5snO3SPpP6lX1pMdE60bTiBiC77_vQ,2677
@@ -175,9 +175,9 @@ lino/modlib/checkdata/management/commands/checkdata.py,sha256=CjtGm26qPxIWgkn5a9
175
175
  lino/modlib/comments/__init__.py,sha256=XoRLIB-pSsz4EfA2FhsbKQ27fsW_AAvS7SyA0_vhHv8,1678
176
176
  lino/modlib/comments/choicelists.py,sha256=SIA7P_KwtaayqOJxCkwyZouK0Z23-2v4ZFV9a0Zexnk,3314
177
177
  lino/modlib/comments/mixins.py,sha256=h1VvM4h-6rEixziz0r7vJCptM7T7K6i4r50Scz5riws,4413
178
- lino/modlib/comments/models.py,sha256=RiAkvHu8wlDqoVJ4ueeIsZBhMj3LpWxVGQvXKeJSua0,15858
178
+ lino/modlib/comments/models.py,sha256=hS8Q1zLHt4WvlNnlhY8T5eRY14j-iKMDI061uAcAKMw,15893
179
179
  lino/modlib/comments/roles.py,sha256=z3gctvlTa_5PAs-D4pounyzNyuEc31jTFq9g33r6Z1w,751
180
- lino/modlib/comments/ui.py,sha256=w72vOmK8fn6H13t2aPS7ydYU1fCsbbMH2-TSNWt3pwA,9799
180
+ lino/modlib/comments/ui.py,sha256=2FY5e1Mki1l4QX8d7LOskZ4b_b2_JON9hJQccjWWaKM,9846
181
181
  lino/modlib/comments/config/comments/comments.js,sha256=7oAnNyx_MKM1iWPu-QSp6iKfnOVdgq7EciQPpxTvYU8,242
182
182
  lino/modlib/comments/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
183
183
  lino/modlib/comments/fixtures/demo2.py,sha256=FGsX1_r9h2Zz11wbemkqx_AcFIRmYKMx9TineWs_ic0,25328
@@ -188,9 +188,9 @@ lino/modlib/dupable/mixins.py,sha256=B7JRVDRszf7ojFBAeb-Md_fJMc9Sp5u-emLEAtR6s2g
188
188
  lino/modlib/dupable/models.py,sha256=0watviKwTiVwlArC54V3IxVVfcB1Yg5kO6ed2xCM9a0,4595
189
189
  lino/modlib/export_excel/__init__.py,sha256=k11dEbh1VgA7cMaUdMhiJvHNboX4BqN0Z5Wj9fV7rWw,469
190
190
  lino/modlib/export_excel/models.py,sha256=OaAkt__l-GaqGLMWQiwXHPJOYABkXHUZ7j9DC7uFE08,5078
191
- lino/modlib/extjs/__init__.py,sha256=-TfGa8YR8SWuCHkZ2_pFNVBfOhvVfL5ec4zz6_TWeo4,10170
191
+ lino/modlib/extjs/__init__.py,sha256=6UBWAWSROwy3DfTXQmVUVJTF6eZ_e2k3BEfE4wtqVhU,10172
192
192
  lino/modlib/extjs/ext_renderer.py,sha256=SwfikRmAi1FbDXQLsWNgzgkGqIePwL0UTLgQbb05pOE,60600
193
- lino/modlib/extjs/views.py,sha256=hR5h3bcKEjDjSgFj5-gpkfAhnYccy0J9INdqegyBeVQ,22644
193
+ lino/modlib/extjs/views.py,sha256=44sT3PZXXeLy3M7ODtv3ICA2apkR-MZO1LHVPTwagiY,25290
194
194
  lino/modlib/extjs/config/extjs/index.html,sha256=jO5hdNpFSkm9t0xhHD5hc8Hw1fSr6xb3zYq9aMyOI7Q,8603
195
195
  lino/modlib/extjs/config/extjs/linoweb.js,sha256=I4VYGmkK4htqZvHM9g-6psJF3pp7SvgHEI0I02Sxpvo,175127
196
196
  lino/modlib/extjs/config/extjs/service-worker.js,sha256=KEKWeehTlfBHk3r8NbsP9C5av_DukHORybxFOwbjYaQ,1767
@@ -3500,7 +3500,7 @@ lino/modlib/help/models.py,sha256=Ik-fkUH8KHiPajar-SYCbuaQGfIbbgfI6-9rMkr1Np8,34
3500
3500
  lino/modlib/help/utils.py,sha256=dWmz0huCw7N4ENIsCUoGiXyn3AbkE96jVR4YwyzPjjo,3944
3501
3501
  lino/modlib/help/config/makehelp/actor.tpl.rst,sha256=Yl-ZAWvI93cVFLd7GG-qpn_vkGFvKe3iR0eWBJpHgMc,346
3502
3502
  lino/modlib/help/config/makehelp/actors.tpl.rst,sha256=wXMKYQnlhLi432QggVgRUWGuHRDiSX9NyXSdnSar7Io,249
3503
- lino/modlib/help/config/makehelp/conf.tpl.py,sha256=pTTQyP0F7ETvghtI2VcAflctnw-UYIDg3kOO9G4Jlrk,1113
3503
+ lino/modlib/help/config/makehelp/conf.tpl.py,sha256=865N8cgHCOsJk-9wJVHNL1A2zDilfFDxx9yd997jZKA,1114
3504
3504
  lino/modlib/help/config/makehelp/copyright.tpl.rst,sha256=0fcF2Mf83HJc50iMbiN_qgx-BgrO1wBOC5bWHKPE0No,138
3505
3505
  lino/modlib/help/config/makehelp/index.tpl.rst,sha256=q3SwIW70McQl5PmRniQvkj8ZaWQnEog9en8EDrE7qBw,281
3506
3506
  lino/modlib/help/config/makehelp/model.tpl.rst,sha256=2wyLT9h5llvm4xwZ5vu6fQoKMNcnNAjHi8Wp6l3-6zE,279
@@ -3519,6 +3519,8 @@ lino/modlib/ipdict/models.py,sha256=9-pjj_xXdndhQaQI8sgXcmODxurST_aFcShGwomiYKk,
3519
3519
  lino/modlib/jinja/__init__.py,sha256=XSa-e1qZGabl8EmRDKPRtmzgBRole5ZbxAUBR_m-ds0,3418
3520
3520
  lino/modlib/jinja/choicelists.py,sha256=QHjWQWLnJCKSGnLIKeGqnCw41JYvcbTkCeXjBpWh23w,1466
3521
3521
  lino/modlib/jinja/loader.py,sha256=MX027X_UuQPqq0wOUr06QnOkdTzGpksNv0Om1CGp61I,1765
3522
+ lino/modlib/jinja/mixins.py,sha256=EgRzp7oN_uTD2hYJhb9vXflu5B5AsO-UKu7V61v92fk,2057
3523
+ lino/modlib/jinja/models.py,sha256=vXNFS78qP-qIzeSmnXJNOpvW_IfH1h6hhPgYjfkvvD0,207
3522
3524
  lino/modlib/jinja/renderer.py,sha256=yywxocrNYSPvUcMjuYw9guiPoq50lfaIKkJOP_PHg5o,6142
3523
3525
  lino/modlib/jinja/config/jinja/status.jinja.rst,sha256=XEsfXd82B0fLsBfds5-pXdeDWVr4ccTv7WyGa9ayigk,312
3524
3526
  lino/modlib/jinja/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -3534,17 +3536,19 @@ lino/modlib/languages/fixtures/iso-639-3_20100707.tab,sha256=u8PwI2s8shy0_Val5-s
3534
3536
  lino/modlib/linod/__init__.py,sha256=u2XCoHtoGwEpMDLfRnGYxj49s4DWng7vOjRrkS57F00,2607
3535
3537
  lino/modlib/linod/choicelists.py,sha256=Tq3hoK7wHZXR8QruaSkAo1e8vE5qEy1bh5xrb8cPkyw,2147
3536
3538
  lino/modlib/linod/consumers.py,sha256=NMzuLwNDPFyWNtqXXEyDQ3lyoUWniyoVWbRr7URazCM,6451
3537
- lino/modlib/linod/mixins.py,sha256=Nv7eAkWWaCaHmQc2GRYyCkFaLJ2qX8YpcRFvRhbRTxw,9995
3539
+ lino/modlib/linod/mixins.py,sha256=4ID1zhhXbNGB0JRqlStD6qc-mp0SyIQywohcHDZ29Wo,10729
3538
3540
  lino/modlib/linod/models.py,sha256=n3HhwDJr3fLdD3PHLZyeF4wBrfC2CWY_UdsC3Acuv7U,2295
3539
3541
  lino/modlib/linod/routing.py,sha256=FiG0JVqp9TWWkNpl9Y_50UCAJ7ZEImDXkQUhlg4aGL4,2094
3540
3542
  lino/modlib/linod/utils.py,sha256=dE973Xib6Be1DvNsZ0M5wzY_jpkk35R21WKs-jQPorM,339
3543
+ lino/modlib/linod/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3544
+ lino/modlib/linod/fixtures/linod.py,sha256=qCFU2IktRVEdt1lChwu6kZLLnd4Ppfq_x9_2qGYelTY,1173
3541
3545
  lino/modlib/linod/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3542
3546
  lino/modlib/linod/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3543
3547
  lino/modlib/linod/management/commands/linod.py,sha256=9-zRm-Xgp3uWj6AlDZpjtzo_TqSPyxIkKIrI_jshxVI,3457
3544
3548
  lino/modlib/memo/__init__.py,sha256=Kghjmlz0y1km6SFq5m9nbDqD3CKfSplj57rso3IevLk,5247
3545
- lino/modlib/memo/mixins.py,sha256=Wv844JL6WyvYI56QqcCdiHq8nocs8xcIM_eNzaWu3So,10919
3549
+ lino/modlib/memo/mixins.py,sha256=Ij_bFcBY_ivo5t2HWArEeRkxIQhg61iP0sTNnhZpRac,11246
3546
3550
  lino/modlib/memo/models.py,sha256=2UbKaixPWCnP1ZkoJx_DDTtltpfYVbU3uJ1hmsZDU8A,3146
3547
- lino/modlib/memo/parser.py,sha256=lOSoXY5nj_CaM3jdd2e2s7-MbXCGRQu3SxQ3d1CMkEE,12994
3551
+ lino/modlib/memo/parser.py,sha256=YbGf1EdJqTI4rqM05ZPTdufN_-aWeV_Z85Nh47HH8Pw,12996
3548
3552
  lino/modlib/memo/views.py,sha256=H3g_nuiMzguptXLSWaWLJClU7BefXPFn9Rh8UIVVBeg,555
3549
3553
  lino/modlib/notify/__init__.py,sha256=suo7EMVdyTPTPFwuU2KZL25PwIEstTvvR4Turgdz7UE,6926
3550
3554
  lino/modlib/notify/actions.py,sha256=ClRKDjmgx3m43IZ5cx0TdxXN_pU6hLIlo_jCwEW2LhY,2468
@@ -3552,7 +3556,7 @@ lino/modlib/notify/api.py,sha256=dIuyn7uRF1dDgoGAqvFQvuJImLl1Q0g79skBJvnXMYs,333
3552
3556
  lino/modlib/notify/choicelists.py,sha256=7ZkYNMOXNDfyTvdx8Sn-Gsma9f31o-6G1CtivXmQDmA,1324
3553
3557
  lino/modlib/notify/consumers.py,sha256=YaEAhAi_Oq5ovakuP5DI21YIAMvRqQcf4K8MBilcN2w,1529
3554
3558
  lino/modlib/notify/mixins.py,sha256=oRArn5ZCJ3Ot4OAYXleyDEEkpe-y50qKdJTGmWq8ZHs,3495
3555
- lino/modlib/notify/models.py,sha256=2ujOilTVqvlxF1mW2aiO5rDLP1HH4OGcFVeCLPha1CA,18735
3559
+ lino/modlib/notify/models.py,sha256=6aZ4gCT-03Szqs-eLLi9UlkCvE2ca8ij-v8qG5OFauI,18731
3556
3560
  lino/modlib/notify/utils.py,sha256=e4TAJr8mgicwEjgyuP-bOiw1VGNA6tVo_hab1q-oSNc,328
3557
3561
  lino/modlib/notify/views.py,sha256=Ar2L_Tv1qqU5giHu2b0h_AKc3utvgfZwda4qncqoBsk,957
3558
3562
  lino/modlib/notify/config/notify/individual.eml,sha256=Ct8fLx7dz_adE_ua8S87dYFSNESCHRbRGx9Ven1MlLI,307
@@ -3578,8 +3582,8 @@ lino/modlib/periods/mixins.py,sha256=QQXtu1Z6HjqDlL_xMM98FR7PQGKhYgjslhusOiWwPDA
3578
3582
  lino/modlib/periods/models.py,sha256=hu1myxDqrBMIiORNYWBpAIDz-WjDe3LmF2JhrvG6DeI,8444
3579
3583
  lino/modlib/periods/fixtures/std.py,sha256=iV6a2DNAhfYvO1VspGkcncEmygHK94zWdDZlHUY8JSw,881
3580
3584
  lino/modlib/printing/__init__.py,sha256=u1fq44d073-IDH_t8hWs1sQdlAHdsCP85sfEOMSW5L4,689
3581
- lino/modlib/printing/actions.py,sha256=CME19ZC6lYWO5qGoVX1b8P4q_wHSwvV19ELKEquMLJs,11704
3582
- lino/modlib/printing/choicelists.py,sha256=5-HdRkRsNccMH5uq4bAwWSFKaTxMCcZM6HjemgJUSaY,9605
3585
+ lino/modlib/printing/actions.py,sha256=kWJPZxnFfiBDGV80bsCskChhFgiVEdIscBNy71Nlsqs,11413
3586
+ lino/modlib/printing/choicelists.py,sha256=nrBZoUfPGzE6Z5xqNB9b5XMcdObptoy2xUtLX9Y-0u4,9599
3583
3587
  lino/modlib/printing/mixins.py,sha256=XjcY5brF_1GxsECLCdOys7YBvUA4NNcGmpKAv3Q508k,8269
3584
3588
  lino/modlib/printing/models.py,sha256=fd-BEKSLpgxPnkh9U7fg2tjNy39exBi3xJC9VzJuXdU,185
3585
3589
  lino/modlib/printing/utils.py,sha256=LUO9769wJvHCPZIqeVQ9XAS6UKJ6BfJbiwO8Dt1kHc4,737
@@ -4388,15 +4392,15 @@ lino/modlib/tinymce/static/tinymce-4.1.10/skins/lightgray/img/loader.gif,sha256=
4388
4392
  lino/modlib/tinymce/static/tinymce-4.1.10/skins/lightgray/img/object.gif,sha256=5qFeUrxKF7CFBzuo3r1HCOrWrj1MvrOIDGXLevxIl3c,152
4389
4393
  lino/modlib/tinymce/static/tinymce-4.1.10/skins/lightgray/img/trans.gif,sha256=nPAg18O7p_WrEM2lSqvvk0-QbU-aOs-Z6efcbJhXljU,43
4390
4394
  lino/modlib/tinymce/static/tinymce-4.1.10/themes/modern/theme.min.js,sha256=w41NrMzqdGEDk6OhjeuElBHlIr5Ntt_QpdoxNRFXa3Q,6431
4391
- lino/modlib/uploads/__init__.py,sha256=S6RNBs5vwCTnoAkPGRGWBQdKp1uOzWngc_B19iAmGsg,2675
4395
+ lino/modlib/uploads/__init__.py,sha256=1WyOe8TQtevW18yo1J8rAR7rfl6l08BQvGlWPeYkXkg,2798
4392
4396
  lino/modlib/uploads/actions.py,sha256=lSdMmMmFaJRkJ2JkMX0aOVFNiisGVcI3PP3WqSQmK1E,1402
4393
4397
  lino/modlib/uploads/choicelists.py,sha256=RVKLCEDly9VUa183ul5U9DRla8yOkMxrP4qMjTC5410,1327
4394
4398
  lino/modlib/uploads/dummy_upload.odt,sha256=VHG2YkykCg8VqoXx8Hm37QYunvdbmg_jCyygiZseKF8,10447
4395
4399
  lino/modlib/uploads/dummy_upload.pdf,sha256=hdAx7s3V10lqVekSGugzkn_Hqxx3V4OkCNVNQI2OsFY,18730
4396
4400
  lino/modlib/uploads/mixins.py,sha256=4CSTEDU0ZBfdCV5RqV9SGc3r0rH7TlaGdB7tGGlVN-o,8000
4397
- lino/modlib/uploads/models.py,sha256=nFGPyLdSJW61gv1jAAscrVKHub86F5X_srjVq8e3WvY,16572
4401
+ lino/modlib/uploads/models.py,sha256=QchFTuGQo4_wiOPiUwJgkPzzeh9OY0EBEMlH7BpOFSQ,16554
4398
4402
  lino/modlib/uploads/roles.py,sha256=ae0wf_vC4O6MffDx8abpjW1M2oWOp5VzOvt_ckk72Cc,191
4399
- lino/modlib/uploads/ui.py,sha256=dc17OUf8R6jqFFt6qzfCkBHIiMKEhoOBGFw0esWfA2g,8456
4403
+ lino/modlib/uploads/ui.py,sha256=CPix0Nbnq-CuUnuqhT_G8AemMjhV-hjJTsM4_tU_psM,8549
4400
4404
  lino/modlib/uploads/utils.py,sha256=MQAJbI5sUe0RCXCrkxpNKUJFxHpz1bOMqKQy3QsA76o,3343
4401
4405
  lino/modlib/uploads/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4402
4406
  lino/modlib/uploads/fixtures/demo.py,sha256=igZevIAwJFjt5y90lnkzVnaWYgZLxmEtOFuFQA7TbDE,1665
@@ -4404,7 +4408,7 @@ lino/modlib/uploads/fixtures/demo3.py,sha256=q0bwZrx5XtRsRlFpsa33fL0sCl7IdCYaP9E
4404
4408
  lino/modlib/users/__init__.py,sha256=40f-PheIyHqAzGXQbkvEKAnZ9_bb8RkaLAKIqNE96qg,3215
4405
4409
  lino/modlib/users/actions.py,sha256=Nik2CoxKZWoGIsPT50mWESzHSTQx9WiBXWG64CUFyS8,18074
4406
4410
  lino/modlib/users/choicelists.py,sha256=-X76C1NxIs5e7rFHp5Z0kjJkA1NlOP2vdLKGkI2wZRU,3876
4407
- lino/modlib/users/mixins.py,sha256=cMmTtR1-w9iWgdPlNF5kMybDR41D5kd1waGxEROSvSE,14150
4411
+ lino/modlib/users/mixins.py,sha256=muW6-LwHF2L6uvGO0h3qIh1_SeJrgaeooPvjqBiXbAI,14277
4408
4412
  lino/modlib/users/models.py,sha256=tdROzvtd3cMxsXKtYZjcUv2XJU7hQLbyBCiE0zVvaOo,16470
4409
4413
  lino/modlib/users/roles.py,sha256=yi29ELbWU1VtteGARaxetxmsCkZQHA2oJiD0dXujMiE,320
4410
4414
  lino/modlib/users/ui.py,sha256=WA1bqVx1Z4yQzydHhvw_d5yE-teKdkHqd36ynz9ivPk,13127
@@ -4595,7 +4599,7 @@ lino/templates_old/404.html,sha256=9O5EJgULwLws0X1LjNig3xT4l9Hw04MBIGswD-EAlnw,2
4595
4599
  lino/templates_old/500.html,sha256=inOR744w4FGJM_fCSQcnlk-OIYQpaBTxUQWgXQozon4,496
4596
4600
  lino/templates_old/base.html,sha256=qYqj5-u1UPtpatrFkqBr3MnwS0oFUXCyQRcuNZczDfk,1641
4597
4601
  lino/templates_old/base_site.html,sha256=NcLEk0kBT1b-SrhoGpDPUej7NExqJ9-dP1kbrvwBzrs,255
4598
- lino/utils/__init__.py,sha256=gWMOaiqZ884GJNC68tu6g3-JinoCDMd6i1l9z4cRi2g,18377
4602
+ lino/utils/__init__.py,sha256=Z7ilNYzd2gJpx5XyE70UvrFsi7jQI7JxvlTO0txpUw0,18364
4599
4603
  lino/utils/addressable.py,sha256=o7bmLbyvrmOoAT478s7XqjWKvnZ7zSXj4k7Xf0ccqf8,2213
4600
4604
  lino/utils/ajax.py,sha256=npCS0WumhTQlBzXxQPKnp2sYCRcPsYcbFqzE2ykVc4Q,3254
4601
4605
  lino/utils/choosers.py,sha256=9jjeLz-QcWVBfR8_GdY4PNYoqIYM63OI3OvOL2l1ZaU,17604
@@ -4616,7 +4620,7 @@ lino/utils/html2odf.py,sha256=Hxw4HiIHY1ZCjb4_JLykVHbr6yAMhhHrnrCnLNDYKAs,4826
4616
4620
  lino/utils/html2xhtml.py,sha256=fvrIoLBFpiXtYO3UYaIgAIDjf6ATvrxolQX4etxS57Y,2119
4617
4621
  lino/utils/instantiator.py,sha256=BKgcig5Cgt7paAq4ouZNuQct9o9BEd3LbrAyQx1E3KQ,6995
4618
4622
  lino/utils/jinja.py,sha256=1FZgWNKEP9wcokFuIfYysl_VD5mwVHxBHtpnmO17nRQ,1444
4619
- lino/utils/jscompressor.py,sha256=uA6APYMO1q5ah3-lPmGU6d5Uk7IFVwEBQAmURpfXlzs,5221
4623
+ lino/utils/jscompressor.py,sha256=j9UTaaPCfRZLrWUh6PBp0KDDM0QshG7XAFzp-R_elOs,5225
4620
4624
  lino/utils/jsgen.py,sha256=yN0uUNFp4FCxsSPJBDsdkvtAJVL50f7CpW4hR31Rm4k,15215
4621
4625
  lino/utils/latex.py,sha256=cv5rJjtcslTVoRNjAmlUd2CCpC0GPO-YnvJgNJJe0R8,2218
4622
4626
  lino/utils/mdbtools.py,sha256=R1LHskyDLtwBcYRDA14PU2XeSku9gRUIV52f4Sr-Hto,5310
@@ -4631,12 +4635,11 @@ lino/utils/pyuca.py,sha256=YSLpCYEMqKUhx1y0q-ML8Ryu2ARDFO2HyIFxz1DzYEY,4344
4631
4635
  lino/utils/quantities.py,sha256=m_oi647uCTf2NhhQo6ytphZa2jQq1QXIUcts-cLkEJM,7367
4632
4636
  lino/utils/ranges.py,sha256=wVsZMe3dlaRYWWELXCGSK2DvjBfW4eLbAwpQVYqzj3g,3303
4633
4637
  lino/utils/report.py,sha256=5l1NkZpcZyd1zpg37MB4Doly9dH9KHBEFarp9Q6vh4w,7983
4634
- lino/utils/requests.py,sha256=vXxsC51FK9FgrqmF9dy3MsmUqJINjSQ_4AmvBiQbGEk,1337
4635
- lino/utils/restify.py,sha256=QMVQXrmjDl6PPC7HJJGeDm125pcvrZKvcMpiscaPrsw,14066
4638
+ lino/utils/restify.py,sha256=AbVCBjM9V9rYuFweV1gVo9ObO8lblJbA-mKjaPsebRE,14068
4636
4639
  lino/utils/screenshots.py,sha256=T-szKC3EJfo4JcLio8Jj0xqaoSuJcZG6Jf9EF_B8WDQ,2040
4637
4640
  lino/utils/sendchanges.py,sha256=fcSqRyI3l8sEf9_LSqIyWGML6CORoYkjcFp2bs-YNlY,7097
4638
4641
  lino/utils/socks.py,sha256=0d67FDbrJ7PXl4AYzNNZgwCzV-fzIAAtWGxMEB7dw78,538
4639
- lino/utils/soup.py,sha256=__Bt9WDoayUGPi98EzBrD3dlbVp_NNrD9_irB7yUugc,10753
4642
+ lino/utils/soup.py,sha256=15pEuwtFHrALLG3BzfC9kozMSq8jrewYbonsAofPUz8,10761
4640
4643
  lino/utils/sql.py,sha256=kwCgv5E3n7uLjpXOEiaF2W2p8LeGXcP39xgtnqvzTP8,6795
4641
4644
  lino/utils/sqllog.py,sha256=kUCnBfFjExhItJ1w76WT9VWPaWWq8NQM-kSIMIIZnRU,3282
4642
4645
  lino/utils/ssin.py,sha256=Wo-9M0pG0uEYEGvmz8N--iRIqJe3ETtgLOXoung7qlE,4232
@@ -4645,12 +4648,12 @@ lino/utils/textfields.py,sha256=suTUK_zwTcxT1eHWAlif_AoRXxG_0AW6JhdbOv1zDSQ,2239
4645
4648
  lino/utils/ucsv.py,sha256=KjhGh7K_yxQOM0gHWjn4BjPdi_1aLPHkem5J8nNCqD4,2235
4646
4649
  lino/utils/watch.py,sha256=cZiiR8BRvuKxT_mzPFEoQWZyYKbRYqbi7TqNHD6HsZ4,83
4647
4650
  lino/utils/weekly.py,sha256=t4WZAmAy0Z-siaMEaYgVQh1VDNKXtEa-wgLDXd52BtU,1577
4648
- lino/utils/xml.py,sha256=4Z44W1e5HvTVrU8erkohgnwqY-5Cr2NHywaAJ5OgRvw,989
4651
+ lino/utils/xml.py,sha256=EGDnO1UaREst9fS7KTESdbHnrrVCwKbRQdvut6B6GmQ,1612
4649
4652
  lino/utils/mldbc/__init__.py,sha256=QqWRlzeXaOmFfbCk-vTY3SZMn1-FCf67XnpZdd_Nim0,1134
4650
4653
  lino/utils/mldbc/fields.py,sha256=tAX8G5UKigr9c6g0F3ARIjZZtg406mdaZ--PWSbiH9E,2873
4651
4654
  lino/utils/mldbc/mixins.py,sha256=CkYe5jDa7xp9fJq_V8zcZf8ocxgIjUgHc9KZccvA_Yw,1945
4652
- lino-25.2.1.dist-info/METADATA,sha256=bX9DvGiv9t8X4rQLln09BkaMe7oMajwotXYox7sxbfs,42534
4653
- lino-25.2.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
4654
- lino-25.2.1.dist-info/licenses/AUTHORS.rst,sha256=8VEm_G4HOmYEa4oi1nVoKKsdo4JanekEJCefWd2E8vk,981
4655
- lino-25.2.1.dist-info/licenses/COPYING,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
4656
- lino-25.2.1.dist-info/RECORD,,
4655
+ lino-25.2.3.dist-info/METADATA,sha256=TfT4Umplqu13p1S1S6vhTC9gow_fNMceRtYfc5UTE_s,42534
4656
+ lino-25.2.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
4657
+ lino-25.2.3.dist-info/licenses/AUTHORS.rst,sha256=8VEm_G4HOmYEa4oi1nVoKKsdo4JanekEJCefWd2E8vk,981
4658
+ lino-25.2.3.dist-info/licenses/COPYING,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
4659
+ lino-25.2.3.dist-info/RECORD,,
lino/utils/requests.py DELETED
@@ -1,55 +0,0 @@
1
- # Copyright 2009 Rumma & Ko Ltd
2
- # License: GNU Affero General Public License v3 (see file COPYING for details)
3
-
4
- import os
5
-
6
-
7
- def again(request, *args, **kw):
8
- get = request.GET.copy()
9
- for k, v in list(kw.items()):
10
- if v is None: # value None means "remove this key"
11
- if k in get:
12
- del get[k]
13
- else:
14
- get[k] = v
15
- path = request.path
16
- if len(args):
17
- path += "/" + "/".join(args)
18
- path = os.path.normpath(path)
19
- path = path.replace("\\", "/")
20
- s = get.urlencode()
21
- if len(s):
22
- path += "?" + s
23
- # print pth
24
- return path
25
-
26
-
27
- def get_redirect(request):
28
- if hasattr(request, "redirect_to"):
29
- return request.redirect_to
30
-
31
-
32
- def redirect_to(request, url):
33
- request.redirect_to = url
34
-
35
-
36
- # ~ def is_editing(request):
37
- # ~ editing = request.GET.get("editing",None)
38
- # ~ if editing is None:
39
- # ~ path = request.session.get("editing",None)
40
- # ~ else:
41
- # ~ editing = int(editing)
42
- # ~ if editing:
43
- # ~ request.session["editing"] = path = request.path
44
- # ~ else:
45
- # ~ request.session["editing"] = path = None
46
- # ~ if request.path == path:
47
- # ~ return True
48
- # ~ request.session["editing"] = None
49
- # ~ return False
50
-
51
- # ~ def stop_editing(request):
52
- # ~ request.session["editing"] = None
53
-
54
- # ~ def start_editing(request):
55
- # ~ request.session["editing"] = request.path
File without changes