lino 25.2.2__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.
- lino/__init__.py +8 -3
- lino/api/dd.py +13 -0
- lino/api/doctest.py +49 -17
- lino/api/selenium.py +1 -1
- lino/core/actors.py +16 -7
- lino/core/elems.py +1 -1
- lino/core/renderer.py +2 -2
- lino/core/requests.py +27 -1
- lino/core/site.py +5 -5
- lino/help_texts.py +4 -0
- lino/modlib/extjs/__init__.py +2 -2
- lino/modlib/extjs/views.py +37 -12
- lino/modlib/help/config/makehelp/conf.tpl.py +1 -1
- lino/modlib/jinja/mixins.py +62 -0
- lino/modlib/jinja/models.py +6 -0
- lino/modlib/linod/fixtures/__init__.py +0 -0
- lino/modlib/linod/fixtures/linod.py +32 -0
- lino/modlib/linod/mixins.py +5 -3
- lino/modlib/memo/mixins.py +2 -1
- lino/modlib/memo/parser.py +1 -1
- lino/modlib/notify/models.py +1 -1
- lino/modlib/printing/actions.py +6 -12
- lino/modlib/printing/choicelists.py +7 -7
- lino/modlib/uploads/__init__.py +9 -6
- lino/modlib/uploads/models.py +3 -3
- lino/modlib/uploads/ui.py +5 -2
- lino/utils/__init__.py +0 -1
- lino/utils/jscompressor.py +4 -4
- lino/utils/restify.py +2 -2
- lino/utils/soup.py +4 -4
- lino/utils/xml.py +19 -5
- {lino-25.2.2.dist-info → lino-25.2.3.dist-info}/METADATA +1 -1
- {lino-25.2.2.dist-info → lino-25.2.3.dist-info}/RECORD +36 -33
- lino/utils/requests.py +0 -55
- {lino-25.2.2.dist-info → lino-25.2.3.dist-info}/WHEEL +0 -0
- {lino-25.2.2.dist-info → lino-25.2.3.dist-info}/licenses/AUTHORS.rst +0 -0
- {lino-25.2.2.dist-info → lino-25.2.3.dist-info}/licenses/COPYING +0 -0
lino/modlib/printing/actions.py
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -*- coding: UTF-8 -*-
|
2
|
-
# Copyright 2009-
|
2
|
+
# Copyright 2009-2025 Rumma & Ko Ltd
|
3
3
|
# License: GNU Affero General Public License v3 (see file COPYING for details)
|
4
4
|
|
5
5
|
from lino import logger
|
@@ -24,10 +24,6 @@ from lino.utils.xml import validate_xml
|
|
24
24
|
|
25
25
|
from .choicelists import BuildMethods
|
26
26
|
|
27
|
-
# davlink = settings.SITE.plugins.get('davlink', None)
|
28
|
-
# has_davlink = davlink is not None and settings.SITE.use_java
|
29
|
-
has_davlink = False
|
30
|
-
|
31
27
|
|
32
28
|
class BasePrintAction(Action):
|
33
29
|
sort_index = 50
|
@@ -98,10 +94,7 @@ class BasePrintAction(Action):
|
|
98
94
|
# msg %= dict(doc=leaf, help=etree.tostring(
|
99
95
|
# help_url, encoding="unicode"))
|
100
96
|
kw.update(message=msg, alert=True)
|
101
|
-
|
102
|
-
kw.update(open_webdav_url=ar.request.build_absolute_uri(url))
|
103
|
-
else:
|
104
|
-
kw.update(open_url=url)
|
97
|
+
kw.update(open_url=url)
|
105
98
|
ar.success(**kw)
|
106
99
|
return
|
107
100
|
|
@@ -137,7 +130,7 @@ class DirectPrintAction(BasePrintAction):
|
|
137
130
|
class WriteXmlAction(DirectPrintAction):
|
138
131
|
"""Generate an XML file from this database object."""
|
139
132
|
|
140
|
-
combo_group = "writexml"
|
133
|
+
# combo_group = "writexml"
|
141
134
|
label = _("XML")
|
142
135
|
|
143
136
|
build_method = "xml"
|
@@ -148,6 +141,7 @@ class WriteXmlAction(DirectPrintAction):
|
|
148
141
|
def validate_result_file(self, bm, xmlfile):
|
149
142
|
if self.xsd_file:
|
150
143
|
logger.info("Validate %s against %s ...", xmlfile, self.xsd_file)
|
144
|
+
# doc = etree.parse(xmlfile)
|
151
145
|
if True:
|
152
146
|
validate_xml(xmlfile, self.xsd_file)
|
153
147
|
else:
|
@@ -221,7 +215,7 @@ class EditTemplate(BasePrintAction):
|
|
221
215
|
|
222
216
|
def attach_to_actor(self, actor, name):
|
223
217
|
# if not settings.SITE.is_installed('davlink'):
|
224
|
-
if not
|
218
|
+
if not settings.SITE.webdav_protocol:
|
225
219
|
return False
|
226
220
|
return super(EditTemplate, self).attach_to_actor(actor, name)
|
227
221
|
|
@@ -253,7 +247,7 @@ class EditTemplate(BasePrintAction):
|
|
253
247
|
url = settings.SITE.build_media_url(*parts)
|
254
248
|
# url = ar.build_webdav_uri(url)
|
255
249
|
|
256
|
-
if not
|
250
|
+
if not settings.SITE.webdav_protocol:
|
257
251
|
msg = "cp %s %s" % (filename, local_file)
|
258
252
|
ar.debug(msg)
|
259
253
|
raise Warning(
|
@@ -1,16 +1,15 @@
|
|
1
1
|
# -*- coding: UTF-8 -*-
|
2
|
-
# Copyright 2009-
|
2
|
+
# Copyright 2009-2025 Rumma & Ko Ltd
|
3
3
|
# License: GNU Affero General Public License v3 (see file COPYING for details)
|
4
4
|
"""
|
5
5
|
Choicelists for `lino.modlib.printing`.
|
6
6
|
|
7
7
|
"""
|
8
8
|
|
9
|
-
from lino import logger
|
10
|
-
|
11
9
|
import os
|
12
10
|
import io
|
13
11
|
from copy import copy
|
12
|
+
from pathlib import Path
|
14
13
|
|
15
14
|
from django.conf import settings
|
16
15
|
from django.utils import translation
|
@@ -25,6 +24,7 @@ from django.template.loader import select_template
|
|
25
24
|
from lino.core.choicelists import ChoiceList, Choice
|
26
25
|
from lino.utils.media import MediaFile
|
27
26
|
from lino.api import rt, _
|
27
|
+
from lino import logger
|
28
28
|
|
29
29
|
try:
|
30
30
|
import pyratemp
|
@@ -42,9 +42,7 @@ class BuildMethod(Choice):
|
|
42
42
|
# same.
|
43
43
|
if names is None:
|
44
44
|
names = self.name
|
45
|
-
super(
|
46
|
-
names, self.__class__.__name__, names, **kwargs
|
47
|
-
)
|
45
|
+
super().__init__(names, self.__class__.__name__, names, **kwargs)
|
48
46
|
|
49
47
|
def get_target(self, action, obj):
|
50
48
|
# Used by get_target_name()
|
@@ -72,7 +70,7 @@ class TemplatedBuildMethod(BuildMethod):
|
|
72
70
|
default_template = "" # overridden by lino_xl.lib.appypod
|
73
71
|
|
74
72
|
def __init__(self, *args, **kwargs):
|
75
|
-
super(
|
73
|
+
super().__init__(*args, **kwargs)
|
76
74
|
if self.templates_name is None:
|
77
75
|
assert len(self.names) == 1
|
78
76
|
self.templates_name = self.names[0]
|
@@ -234,11 +232,13 @@ class XmlBuildMethod(DjangoBuildMethod):
|
|
234
232
|
filename = action.before_build(self, elem)
|
235
233
|
if filename is None:
|
236
234
|
return
|
235
|
+
filename = Path(filename)
|
237
236
|
tpl = self.get_template(action, elem)
|
238
237
|
|
239
238
|
lang = str(elem.get_print_language() or translation.get_language())
|
240
239
|
# or settings.SITE.DEFAULT_LANGUAGE.django_code)
|
241
240
|
|
241
|
+
|
242
242
|
with translation.override(lang):
|
243
243
|
cmd_options = elem.get_build_options(self)
|
244
244
|
logger.info(
|
lino/modlib/uploads/__init__.py
CHANGED
@@ -35,12 +35,12 @@ class Plugin(ad.Plugin):
|
|
35
35
|
# TODO: Also remove the Volume model and its actors when with_volumes is set
|
36
36
|
# to False.
|
37
37
|
|
38
|
-
def get_uploads_root(self):
|
39
|
-
|
40
|
-
|
38
|
+
# def get_uploads_root(self):
|
39
|
+
# # return join(self.site.django_settings["MEDIA_ROOT"], "uploads")
|
40
|
+
# return self.site.media_root / UPLOADS_ROOT
|
41
41
|
|
42
|
-
def get_volumes_root(self):
|
43
|
-
|
42
|
+
# def get_volumes_root(self):
|
43
|
+
# return self.site.media_root / VOLUMES_ROOT
|
44
44
|
|
45
45
|
def setup_main_menu(self, site, user_type, m, ar=None):
|
46
46
|
mg = self.get_menu_group()
|
@@ -61,6 +61,9 @@ class Plugin(ad.Plugin):
|
|
61
61
|
|
62
62
|
def post_site_startup(self, site):
|
63
63
|
|
64
|
+
self.uploads_root = site.media_root / UPLOADS_ROOT
|
65
|
+
self.volumes_root = site.media_root / VOLUMES_ROOT
|
66
|
+
|
64
67
|
if site.is_installed("memo"):
|
65
68
|
|
66
69
|
def gallery(ar, text, cmdname, mentions, context):
|
@@ -76,7 +79,7 @@ class Plugin(ad.Plugin):
|
|
76
79
|
super().post_site_startup(site)
|
77
80
|
|
78
81
|
# site.makedirs_if_missing(self.get_uploads_root())
|
79
|
-
# site.makedirs_if_missing(self.
|
82
|
+
# site.makedirs_if_missing(self.volumes_root)
|
80
83
|
|
81
84
|
def get_requirements(self, site):
|
82
85
|
if self.with_thumbnails:
|
lino/modlib/uploads/models.py
CHANGED
@@ -57,7 +57,7 @@ class Volume(Referrable):
|
|
57
57
|
|
58
58
|
def full_clean(self, *args, **kw):
|
59
59
|
super().full_clean(*args, **kw)
|
60
|
-
pth = dd.plugins.uploads.
|
60
|
+
pth = dd.plugins.uploads.volumes_root / self.ref
|
61
61
|
if pth.exists():
|
62
62
|
if pth.resolve().absolute() != Path(self.root_dir).resolve().absolute():
|
63
63
|
raise ValidationError(
|
@@ -176,7 +176,7 @@ class Upload(UploadBase, UserAuthored, Controllable, Publishable):
|
|
176
176
|
if self.file:
|
177
177
|
return self.file.size
|
178
178
|
if self.volume_id and self.library_file:
|
179
|
-
pth = dd.plugins.uploads.
|
179
|
+
pth = dd.plugins.uploads.volumes_root / self.volume.ref / self.library_file
|
180
180
|
return pth.stat().st_size
|
181
181
|
# return os.path.getsize(pth)
|
182
182
|
|
@@ -308,7 +308,7 @@ class UploadsFolderChecker(Checker):
|
|
308
308
|
def get_checkdata_problems(self, obj, fix=False):
|
309
309
|
assert obj is None # this is an unbound checker
|
310
310
|
Upload = rt.models.uploads.Upload
|
311
|
-
pth = dd.plugins.uploads.
|
311
|
+
pth = dd.plugins.uploads.uploads_root
|
312
312
|
assert str(pth).startswith(settings.MEDIA_ROOT)
|
313
313
|
start = len(settings.MEDIA_ROOT) + 1
|
314
314
|
for filename in Path(pth).rglob("*"):
|
lino/modlib/uploads/ui.py
CHANGED
@@ -153,6 +153,7 @@ class AreaUploads(Uploads):
|
|
153
153
|
required_roles = dd.login_required(UploadsReader)
|
154
154
|
stay_in_grid = True
|
155
155
|
default_display_modes = {None: constants.DISPLAY_MODE_SUMMARY}
|
156
|
+
detailed_summary = False
|
156
157
|
|
157
158
|
# 20180119
|
158
159
|
# @classmethod
|
@@ -170,7 +171,8 @@ class AreaUploads(Uploads):
|
|
170
171
|
return obj.description or filename_leaf(obj.file.name) or str(obj.id)
|
171
172
|
|
172
173
|
@classmethod
|
173
|
-
def get_table_summary(self,
|
174
|
+
def get_table_summary(self, ar):
|
175
|
+
obj = ar.master_instance
|
174
176
|
if obj is None:
|
175
177
|
return
|
176
178
|
UploadType = rt.models.uploads.UploadType
|
@@ -237,7 +239,8 @@ class AreaUploads(Uploads):
|
|
237
239
|
types.append(chunks)
|
238
240
|
# logger.info("20140430 %s", [tostring(e) for e in types])
|
239
241
|
# elems += [str(ar.bound_action.action.__class__), " "]
|
240
|
-
if ar.bound_action.action.window_type == "d":
|
242
|
+
# if ar.bound_action.action.window_type == "d":
|
243
|
+
if self.detailed_summary:
|
241
244
|
if len(types) == 0:
|
242
245
|
elems.append(E.ul(E.li(str(ar.no_data_text))))
|
243
246
|
else:
|
lino/utils/__init__.py
CHANGED
lino/utils/jscompressor.py
CHANGED
@@ -39,18 +39,18 @@ class JSCompressor(object):
|
|
39
39
|
|
40
40
|
literalMarker = "@_@%d@_@" # temporary replacement
|
41
41
|
# put the string literals back in
|
42
|
-
backSubst = re.compile("@_@(\d+)@_@")
|
42
|
+
backSubst = re.compile(r"@_@(\d+)@_@")
|
43
43
|
|
44
44
|
# /* ... */ comments on single line
|
45
45
|
mlc1 = re.compile(r"(\/\*.*?\*\/)")
|
46
46
|
mlc = re.compile(r"(\/\*.*?\*\/)", re.DOTALL) # real multiline comments
|
47
|
-
slc = re.compile("\/\/.*") # remove single line comments
|
47
|
+
slc = re.compile(r"\/\/.*") # remove single line comments
|
48
48
|
|
49
49
|
# collapse successive non-leading white space characters into one
|
50
|
-
collapseWs = re.compile("(?<=\S)[ \t]+")
|
50
|
+
collapseWs = re.compile(r"(?<=\S)[ \t]+")
|
51
51
|
|
52
52
|
squeeze = re.compile(
|
53
|
-
"""
|
53
|
+
r"""
|
54
54
|
\s+(?=[\}\]\)\:\&\|\=\;\,\.\+]) | # remove whitespace preceding control characters
|
55
55
|
(?<=[\{\[\(\:\&\|\=\;\,\.\+])\s+ | # ... or following such
|
56
56
|
[ \t]+(?=\W) | # remove spaces or tabs preceding non-word characters
|
lino/utils/restify.py
CHANGED
@@ -17,7 +17,7 @@ import re
|
|
17
17
|
|
18
18
|
# This regular expression finds the indentation of every non-blank
|
19
19
|
# line in a string.
|
20
|
-
_INDENT_RE = re.compile("^([ ]*)(?=\S)", re.MULTILINE)
|
20
|
+
_INDENT_RE = re.compile(r"^([ ]*)(?=\S)", re.MULTILINE)
|
21
21
|
|
22
22
|
|
23
23
|
def min_indent(s):
|
@@ -451,7 +451,7 @@ def rst2latex(
|
|
451
451
|
|
452
452
|
|
453
453
|
if __name__ == "__main__":
|
454
|
-
test = """
|
454
|
+
test = r"""
|
455
455
|
Test example
|
456
456
|
============
|
457
457
|
|
lino/utils/soup.py
CHANGED
@@ -327,10 +327,10 @@ def sanitized_soup(old):
|
|
327
327
|
comment.extract()
|
328
328
|
|
329
329
|
# remove the wrapper tag if it is useless
|
330
|
-
if len(soup.contents) == 1:
|
331
|
-
|
332
|
-
|
333
|
-
|
330
|
+
# if len(soup.contents) == 1:
|
331
|
+
# main_tag = soup.contents[0]
|
332
|
+
# if main_tag.name in useless_main_tags and not main_tag.attrs:
|
333
|
+
# main_tag.unwrap()
|
334
334
|
|
335
335
|
return soup
|
336
336
|
|
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.
|
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.
|
27
|
-
|
28
|
-
|
29
|
-
|
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.
|
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=
|
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=
|
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
|
11
|
-
lino/api/doctest.py,sha256=
|
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=
|
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,7 +29,7 @@ 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=
|
32
|
+
lino/core/actors.py,sha256=n0g1QIg7TWs-Ze8iDBPh6l2vSzcClxIWrSGy_pBUVVk,74121
|
33
33
|
lino/core/boundaction.py,sha256=9LgEsN3pM2DzG28_WZ7DgXKRRMdGW2E5yTVB1uWcsww,6674
|
34
34
|
lino/core/callbacks.py,sha256=uu1-znzxVDD-JETUebw-hYsNg_9ExQb1vfwbc7Psjro,7549
|
35
35
|
lino/core/choicelists.py,sha256=rR1FutDfYRRJUtBPJPl_aMuy6r6vqmZGkatcCe2wSUg,36519
|
@@ -40,7 +40,7 @@ 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=
|
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=
|
59
|
-
lino/core/requests.py,sha256=
|
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=
|
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
|
@@ -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
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
3582
|
-
lino/modlib/printing/choicelists.py,sha256=
|
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=
|
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=
|
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=
|
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
|
@@ -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=
|
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=
|
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/
|
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=
|
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=
|
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.
|
4653
|
-
lino-25.2.
|
4654
|
-
lino-25.2.
|
4655
|
-
lino-25.2.
|
4656
|
-
lino-25.2.
|
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
|
File without changes
|
File without changes
|