lino 25.8.3__py3-none-any.whl → 25.9.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.
Files changed (61) hide show
  1. lino/__init__.py +1 -1
  2. lino/api/dd.py +0 -1
  3. lino/core/__init__.py +0 -1
  4. lino/core/actions.py +1 -1
  5. lino/core/actors.py +8 -0
  6. lino/core/elems.py +1 -1
  7. lino/core/fields.py +4 -1
  8. lino/core/model.py +2 -11
  9. lino/core/requests.py +8 -7
  10. lino/core/site.py +0 -79
  11. lino/core/user_types.py +1 -10
  12. lino/help_texts.py +1 -5
  13. lino/management/commands/initdb.py +0 -3
  14. lino/modlib/__init__.py +0 -1
  15. lino/modlib/bootstrap5/README.txt +1 -1
  16. lino/modlib/bootstrap5/__init__.py +34 -38
  17. lino/modlib/bootstrap5/config/bootstrap5/base.html +4 -0
  18. lino/modlib/bootstrap5/models.py +23 -23
  19. lino/modlib/bootstrap5/views.py +2 -107
  20. lino/modlib/checkdata/choicelists.py +1 -1
  21. lino/modlib/comments/fixtures/demo2.py +1 -0
  22. lino/modlib/comments/ui.py +7 -7
  23. lino/modlib/extjs/__init__.py +2 -4
  24. lino/modlib/extjs/config/extjs/index.html +1 -1
  25. lino/modlib/extjs/ext_renderer.py +1 -7
  26. lino/modlib/extjs/views.py +2 -0
  27. lino/modlib/help/models.py +1 -12
  28. lino/modlib/linod/mixins.py +3 -2
  29. lino/modlib/memo/__init__.py +10 -9
  30. lino/modlib/memo/mixins.py +38 -21
  31. lino/modlib/memo/models.py +10 -7
  32. lino/modlib/memo/parser.py +3 -1
  33. lino/modlib/notify/models.py +6 -9
  34. lino/modlib/publisher/__init__.py +12 -7
  35. lino/modlib/publisher/choicelists.py +9 -64
  36. lino/modlib/publisher/config/publisher/page.pub.html +73 -7
  37. lino/modlib/publisher/fixtures/std.py +14 -1
  38. lino/modlib/publisher/mixins.py +41 -12
  39. lino/modlib/publisher/models.py +74 -75
  40. lino/modlib/publisher/renderer.py +28 -12
  41. lino/modlib/publisher/ui.py +35 -35
  42. lino/modlib/publisher/views.py +59 -24
  43. lino/modlib/system/models.py +3 -2
  44. lino/modlib/uploads/__init__.py +1 -0
  45. lino/modlib/uploads/mixins.py +2 -2
  46. lino/modlib/uploads/models.py +55 -21
  47. lino/modlib/uploads/ui.py +1 -0
  48. lino/modlib/uploads/utils.py +2 -2
  49. lino/modlib/users/__init__.py +2 -3
  50. lino/modlib/users/actions.py +12 -17
  51. lino/modlib/users/models.py +37 -36
  52. lino/modlib/weasyprint/choicelists.py +6 -0
  53. lino/utils/diag.py +5 -3
  54. lino/utils/html.py +103 -0
  55. lino/utils/mldbc/mixins.py +2 -2
  56. lino/utils/soup.py +16 -8
  57. {lino-25.8.3.dist-info → lino-25.9.0.dist-info}/METADATA +1 -1
  58. {lino-25.8.3.dist-info → lino-25.9.0.dist-info}/RECORD +61 -61
  59. {lino-25.8.3.dist-info → lino-25.9.0.dist-info}/WHEEL +0 -0
  60. {lino-25.8.3.dist-info → lino-25.9.0.dist-info}/licenses/AUTHORS.rst +0 -0
  61. {lino-25.8.3.dist-info → lino-25.9.0.dist-info}/licenses/COPYING +0 -0
lino/utils/html.py CHANGED
@@ -8,6 +8,7 @@ Some HTML utilities for Lino.
8
8
  import types
9
9
  from lxml import etree
10
10
  from etgen.html import E, to_rst, fromstring, iselement, join_elems, forcetext, lines2p
11
+ from etgen import html as xghtml
11
12
 
12
13
  # from etgen.html import tostring as et_tostring
13
14
  from html2text import HTML2Text
@@ -15,6 +16,7 @@ from django.utils.html import SafeString, mark_safe, escape, format_html
15
16
  # from lino.utils import tostring
16
17
 
17
18
  SAFE_EMPTY = mark_safe("")
19
+ PLAIN_PAGE_LENGTH = 15
18
20
 
19
21
 
20
22
  def html2text(html, **kwargs):
@@ -108,3 +110,104 @@ class Grouper:
108
110
  return SAFE_EMPTY
109
111
  self.last_values = self.current_values
110
112
  return self.ar.actor.after_group_change(self, obj)
113
+
114
+
115
+ def table2html(ar, as_main=True):
116
+ """Represent the given table request as an HTML table.
117
+
118
+ `ar` is the request to be rendered, an instance of
119
+ :class:`lino.core.requests.ActionRequest`.
120
+
121
+ The returned HTML enclosed in a ``<div>`` tag and generated using
122
+ :mod:`etgen.html`.
123
+
124
+ If `as_main` is True, include additional elements such as a paging
125
+ toolbar. (This argument is currently being ignored.)
126
+
127
+ """
128
+ # as_main = True
129
+ t = xghtml.Table()
130
+ t.attrib.update(**{"class": "table table-striped table-hover"})
131
+ if ar.limit is None:
132
+ ar.limit = PLAIN_PAGE_LENGTH
133
+ pglen = ar.limit
134
+ if ar.offset is None:
135
+ page = 1
136
+ else:
137
+ """
138
+ (assuming pglen is 5)
139
+ offset page
140
+ 0 1
141
+ 5 2
142
+ """
143
+ page = int(old_div(ar.offset, pglen)) + 1
144
+
145
+ ar.dump2html(t, ar.sliced_data_iterator, header_links=as_main)
146
+ if not as_main:
147
+ url = ar.get_request_url() or "#" # open in own window
148
+ return E.div(
149
+ E.div(
150
+ E.div(
151
+ E.a(
152
+ E.span(**{"class": "glyphicon glyphicon-folder-open"}),
153
+ href=url,
154
+ style="margin-left: 4px;",
155
+ **{"class": "btn btn-default pull-right"},
156
+ ),
157
+ E.h5(str(ar.get_title()), style="display: inline-block;"),
158
+ **{"class": "panel-title"},
159
+ ),
160
+ **{"class": "panel-heading"},
161
+ ),
162
+ t.as_element(),
163
+ style="display: inline-block;",
164
+ **{"class": "panel panel-default"},
165
+ )
166
+
167
+ buttons = []
168
+ kw = dict()
169
+ kw = {}
170
+ if pglen != PLAIN_PAGE_LENGTH:
171
+ kw[constants.URL_PARAM_LIMIT] = pglen
172
+
173
+ if page > 1:
174
+ kw[constants.URL_PARAM_START] = pglen * (page - 2)
175
+ prev_url = ar.get_request_url(**kw)
176
+ kw[constants.URL_PARAM_START] = 0
177
+ first_url = ar.get_request_url(**kw)
178
+ else:
179
+ prev_url = None
180
+ first_url = None
181
+ buttons.append(("<<", _("First page"), first_url))
182
+ buttons.append(("<", _("Previous page"), prev_url))
183
+
184
+ next_start = pglen * page
185
+ if next_start < ar.get_total_count():
186
+ kw[constants.URL_PARAM_START] = next_start
187
+ next_url = ar.get_request_url(**kw)
188
+ last_page = int(old_div((ar.get_total_count() - 1), pglen))
189
+ kw[constants.URL_PARAM_START] = pglen * last_page
190
+ last_url = ar.get_request_url(**kw)
191
+ else:
192
+ next_url = None
193
+ last_url = None
194
+ buttons.append((">", _("Next page"), next_url))
195
+ buttons.append((">>", _("Last page"), last_url))
196
+
197
+ return E.div(buttons2pager(buttons), t.as_element())
198
+
199
+
200
+ def layout2html(ar, elem):
201
+ wl = ar.bound_action.get_window_layout()
202
+ if wl is None:
203
+ raise Exception("{!r} has no window layout".format(ar.bound_action))
204
+ # ~ print 20120901, wl.main
205
+ lh = wl.get_layout_handle()
206
+
207
+ items = list(lh.main.as_plain_html(ar, elem))
208
+ # if navigator:
209
+ # items.insert(0, navigator)
210
+ # ~ print tostring(E.div())
211
+ # ~ if len(items) == 0: return ""
212
+ return E.form(*items)
213
+ # ~ print 20120901, lh.main.__html__(ar)
@@ -30,7 +30,7 @@ class BabelNamed(model.Model):
30
30
 
31
31
  """
32
32
 
33
- class Meta(object):
33
+ class Meta:
34
34
  abstract = True
35
35
 
36
36
  name = BabelCharField(max_length=200, verbose_name=_("Designation"))
@@ -58,7 +58,7 @@ class BabelDesignated(model.Model):
58
58
 
59
59
  """
60
60
 
61
- class Meta(object):
61
+ class Meta:
62
62
  abstract = True
63
63
 
64
64
  designation = BabelCharField(max_length=200, verbose_name=_("Designation"))
lino/utils/soup.py CHANGED
@@ -22,6 +22,8 @@ from bs4 import BeautifulSoup, NavigableString, Comment, Doctype
22
22
  from django.conf import settings
23
23
 
24
24
  MORE_INDICATOR = "..."
25
+ MORE_MARKER = "=MORE="
26
+ DATA_UPLOAD_ID = "data-upload_id"
25
27
 
26
28
  URL_REGEX = re.compile(
27
29
  r'([^"]|^)(https?:\/\/)((www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*))'
@@ -251,10 +253,11 @@ ALLOWED_TAGS = frozenset([
251
253
 
252
254
  GENERALLY_ALLOWED_ATTRS = {"title", "style", "class"}
253
255
 
256
+
254
257
  # Map of allowed attributes by tag. Originally copied from bleach.sanitizer.
255
258
  ALLOWED_ATTRIBUTES = {
256
259
  "a": {"href", "target"} | GENERALLY_ALLOWED_ATTRS,
257
- "img": {"src", "alt"} | GENERALLY_ALLOWED_ATTRS,
260
+ "img": {"src", "alt", "width", "height", DATA_UPLOAD_ID} | GENERALLY_ALLOWED_ATTRS,
258
261
  }
259
262
 
260
263
  ALLOWED_ATTRIBUTES["span"] = GENERALLY_ALLOWED_ATTRS | {
@@ -281,7 +284,7 @@ def register_sanitizer(func):
281
284
  SANITIZERS.append(func)
282
285
 
283
286
 
284
- def sanitized_soup(htmlstr):
287
+ def sanitized_soup(htmlstr, save=False, ar=None, mentions=None):
285
288
  if not htmlstr.startswith("<"):
286
289
  htmlstr = f"<p>{htmlstr}</p>"
287
290
  htmlstr = url2a(htmlstr)
@@ -313,6 +316,9 @@ def sanitized_soup(htmlstr):
313
316
  for comment in comments:
314
317
  comment.extract()
315
318
 
319
+ for func in SANITIZERS:
320
+ func(soup, save=save, ar=ar, mentions=mentions)
321
+
316
322
  # remove the wrapper tag if it is useless
317
323
  # if len(soup.contents) == 1:
318
324
  # main_tag = soup.contents[0]
@@ -322,22 +328,24 @@ def sanitized_soup(htmlstr):
322
328
  return soup
323
329
 
324
330
 
325
- def sanitize(htmlstr, save=False, ar=None):
331
+ def sanitize(htmlstr, **kwargs):
332
+ # if len(chunks := htmlstr.split(MORE_MARKER, 1)) == 2:
333
+ # htmlstr = " ".join(chunks)
326
334
  htmlstr = htmlstr.strip()
327
335
  if htmlstr == "":
328
336
  return htmlstr
329
- soup = sanitized_soup(htmlstr)
330
- for func in SANITIZERS:
331
- func(soup, save=save, ar=ar)
337
+ soup = sanitized_soup(htmlstr, **kwargs)
332
338
  return str(soup).strip()
333
339
 
334
340
 
335
- def truncate_comment(htmlstr, max_length=300):
341
+ def truncate_comment(htmlstr, max_length=300, **kwargs):
336
342
  # new implementation since 20230713
343
+ if len(chunks := htmlstr.split(MORE_MARKER, 1)) == 2:
344
+ htmlstr = chunks[0]
337
345
  htmlstr = htmlstr.strip() # remove leading or trailing newlines
338
346
  if htmlstr == '':
339
347
  return htmlstr
340
- soup = sanitized_soup(htmlstr)
348
+ soup = sanitized_soup(htmlstr, **kwargs)
341
349
  tc = TextCollector(max_length)
342
350
  tc.add_chunk(soup)
343
351
  return tc.text.strip()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lino
3
- Version: 25.8.3
3
+ Version: 25.9.0
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,13 +1,13 @@
1
1
  lino/.cvsignore,sha256=1vrrWoP-WD8hPfCszHHIiJEi8KUMRCt5WvoKB9TSB1k,28
2
2
  lino/SciTEDirectory.properties,sha256=rCYi_e-6h8Yx5DwXhAa6MBPlVINcl6Vv9BQDYZV2_go,28
3
- lino/__init__.py,sha256=OKOvpQaMgs0rdo4htPBkHTfrXAG8zqzG9GJEoAyao1E,6176
3
+ lino/__init__.py,sha256=AIIJLk9A3WosFlS5M_KqCbqJWr0VDUZc7M3Cta_Lzsw,6176
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=KjOv4jOhKlAzgNQdZgFqWtpihcWOxd1oE1nU36sdikg,92872
7
+ lino/help_texts.py,sha256=XF94iW0-_v6GO9DfAV7FQHFpTKGIApAgrHWV06O2T4w,92529
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=w-5qIpWdXu5yXyCC4Qh4ApB3yZTn0AwdxAjEhH8PyVE,7510
10
+ lino/api/dd.py,sha256=AX9X1bjffDb64h9vTs3Iq6h6nVBWnzYEGejEbpFhOuU,7452
11
11
  lino/api/doctest.py,sha256=XPcuBVeBQyjsR789G9nIhgGzXKSNAq0MJIstPlhuQdU,26119
12
12
  lino/api/rt.py,sha256=OCYWhrWnMcL988MdvBLBEP8qKQJEGXQhVoam_X0sotU,1376
13
13
  lino/api/selenium.py,sha256=bOu8UaNz3Q7lGVvxjmvrtYtSWn1xfI1f5MN5sVcdYr8,9383
@@ -27,9 +27,9 @@ lino/config/plugins/eid_jslib.js,sha256=PsJdUICoGK2nR9EbRg-7drI1AoasLWT_d3RInUWH
27
27
  lino/config/unused/403.html,sha256=uJquW5WUYng6eOSn6CVEU4xyQ1OCAqqWEJxIuvvpTCk,232
28
28
  lino/config/unused/404.html,sha256=EQznANLHgrCx85KRSkBFfJbA7xMJ8aOLnNzf4yzvFG4,220
29
29
  lino/config/unused/500.html,sha256=AsV_SGD3TKG-z1nfB1ue3tiebktdcDEKvDz0WyFLOjo,544
30
- lino/core/__init__.py,sha256=I4X69XK6Y1MZ8X6tC13Wmg13C3r5iTfYcFDiPJKpUdw,726
31
- lino/core/actions.py,sha256=41UtV6QrJ_KxB2IxcjjxY0kKgBXfi9uq-iDshDMvTDo,32664
32
- lino/core/actors.py,sha256=-gCzQSyAtlzXfyw0MK8IIlU3341xKlfNeZ-pkUVcBdA,72585
30
+ lino/core/__init__.py,sha256=8YPTCkAYrICXo910zauojxczyMJbRw0Qbuq3ydEqaK8,711
31
+ lino/core/actions.py,sha256=YS7qFqfauxKYjCO5exs9tvWiRN8EU75xRzGrRfCzdV4,32659
32
+ lino/core/actors.py,sha256=gP4JeIxxNbgESCN9Ccspe6KRpI1M3lipsfi5mLWr7Gw,72864
33
33
  lino/core/atomizer.py,sha256=yK_l9-g8RZIjy2_iBB_efpyO1CrvegCBbjobD5mTTVc,13476
34
34
  lino/core/boundaction.py,sha256=06NNPjCesEr-R1YQKkiuy8JKzDrMJJ948x9jczOkZqY,7850
35
35
  lino/core/callbacks.py,sha256=45lg153pzY7w94XLvh7QqHH7qOH5yTxLyRH7Vn_l1Ec,7549
@@ -41,9 +41,9 @@ lino/core/dbtables.py,sha256=b3D7gNaLpNvRgiFmOcfIwnW14Z4eCT0nWaPE8OjziOU,29258
41
41
  lino/core/dbutils.py,sha256=_QHcWd-ajLUwt5G8uOp8d47lZQKD3VseHnqKJke18rA,263
42
42
  lino/core/ddh.py,sha256=dYScxWKTOCDEgow7wJNJe812ESasmmITPK2ovraBQno,3172
43
43
  lino/core/diff.py,sha256=XQ-oQQDS_v3kXd4eRP9Hwr5UCgp-TPZIPVav9ZblUno,5882
44
- lino/core/elems.py,sha256=0X7Vcv0gllc1MtG01sttEVJQv8-yiVkjs8KgvNi7n0Q,110631
44
+ lino/core/elems.py,sha256=Fctud5uqGBpQWEi0shYzEAbFuHQJZo1hlMqWWkmMWX0,110618
45
45
  lino/core/exceptions.py,sha256=QDxDo5cllSyXQ8VWet9hGXzNadxCOmwMVrFXc6V-vpE,665
46
- lino/core/fields.py,sha256=r8ZySAvyn2ZCkppPdgTVmqa0IPygM6xWU9GEgoCSQ-A,54775
46
+ lino/core/fields.py,sha256=zYnUZ0Im3x5gMZj1ATRy3MxZajtPKw4aXCG_OVu5zIE,54822
47
47
  lino/core/frames.py,sha256=ISxgq9zyZfqW3tDZMWdKi9Ij455lT_81qBH0xex0bfE,1161
48
48
  lino/core/gfks.py,sha256=6VXn2FSIXOrwVq0stfbPevT37EWg1tg4Fn-HMNVnbmk,1970
49
49
  lino/core/help.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -53,18 +53,18 @@ lino/core/keyboard.py,sha256=W3jA6qtB5HMppoNnd_6PgIM7ZlyHilJEhBvdeZTY7Xk,1283
53
53
  lino/core/layouts.py,sha256=CWhKgCEBnjn39RMFRYUklPEvvCnZrDXhtigZpGuiR8o,28176
54
54
  lino/core/menus.py,sha256=oZN93iwQU4vfUCuxQzaVz2xcccN5AG6NG2wGruL74sU,10713
55
55
  lino/core/merge.py,sha256=sKtTeZtHdoDKerdHj4NXuXXNzpKDsfdPaiq-CY0NqQc,9094
56
- lino/core/model.py,sha256=jcjCuB_Rg3JBvXUHT8f5kz-DlwZDBQla7kB19e1BQBs,37427
56
+ lino/core/model.py,sha256=aSkZHNQog736tk82GZAfhNpUJ43OHvlVnXqGZ_yaosk,37025
57
57
  lino/core/permissions.py,sha256=sNReMhnjIpOZcJ79Z4k-Emp55evblExJZwH-PM-efcA,7579
58
58
  lino/core/plugin.py,sha256=ZuA2d1oa3Mqx_jyPIwIV68cyzawLw_grthliIo83nuM,6835
59
59
  lino/core/renderer.py,sha256=kohgaJK7UXKDDGSXhUPOCbPawEOA4qBBHiFRYopVzyI,48244
60
- lino/core/requests.py,sha256=JaDKl47HPC5QFlHPdB9nGqMkSLHThjpzgtepDVcJvSI,96349
60
+ lino/core/requests.py,sha256=DMur_lJFWbitIkoW4YEvIJ4g467fQx4yiBhPGhjYJ78,96330
61
61
  lino/core/roles.py,sha256=PXwk436xUupxdbJcygRSYFu7ixfKjAJPQRUQ8sy0lB0,4425
62
62
  lino/core/signals.py,sha256=ORY2s3Krlh9n24XyHetfwbeUhCqzib6YSqWeFTTY7ps,979
63
- lino/core/site.py,sha256=de3SBf6GxSILSHPJOKt7N1CJ-wLkheIPsZMfY2PfS-A,83477
63
+ lino/core/site.py,sha256=SbFCfKfxrnE42sKfr5UWf9I_0ZL28FlMIH_Dj49qtm8,80243
64
64
  lino/core/store.py,sha256=CBo4upytdZUlhMtOg1r7viVMXYPUAJb9-S-nTumnMB0,46207
65
65
  lino/core/tables.py,sha256=sjmVu3A8gnamxwy16n76UJy2BXgiqeNeCEbI4oGd93Q,25431
66
66
  lino/core/urls.py,sha256=PUsrsP4FCEZNVR3YWX8cx9w97wHt0WWiUjS9RwRdp0A,2698
67
- lino/core/user_types.py,sha256=0iSYmzr2M9v2Mn2y6hzAZeqareUT-gD7l3MfIPyG9ZI,867
67
+ lino/core/user_types.py,sha256=fGX69MmHlRWeESUv_hpTFrXOpC8JwInny0V31eb5eho,677
68
68
  lino/core/userprefs.py,sha256=cmufIS9xJErKDrw05uoWtQTUR6WRWIGkU1KdAqzNr5M,2850
69
69
  lino/core/utils.py,sha256=DD3v75WK3sCmAaRQH3WTX3phbEsunPvepA0O5g1PBaw,40495
70
70
  lino/core/views.py,sha256=qLjEN6GSXScbmAnKN7yDHySmsjL0h4sMKRIQCpOEdPU,7026
@@ -103,7 +103,7 @@ lino/management/commands/demotest.py,sha256=NCUr3ttqU0oorOIc3Z6R_cNNgw5_OzHDbQf0
103
103
  lino/management/commands/diag.py,sha256=vt-NlZUx5gf7T4EpbM-gle3tAwMuwfPQY8lUgxjFaUw,478
104
104
  lino/management/commands/dump2py.py,sha256=V2weGrZnb2JzqNuJrmLWnkeVJFVHRbA-6f7b4f7cPBk,19895
105
105
  lino/management/commands/dump_settings.py,sha256=tGOR4h_ueVe2DOk84ILFvzvndt0doshvaxRkybB-rnY,2009
106
- lino/management/commands/initdb.py,sha256=j_cWTlugP2-UP_qnHpXmz_pzPGRK1oORymjxphhcdEg,11398
106
+ lino/management/commands/initdb.py,sha256=TyEZOrIa_9QExJFUJAcJKJE0Y_7gHoIxsCFFOQDgQN8,11275
107
107
  lino/management/commands/install.py,sha256=k7lCJznVLS6swR4ayKNulj5TPpJ3qf99Fha87TZAaUk,1889
108
108
  lino/management/commands/makemigdump.py,sha256=TvNnFFjD6XRMFLbX8IEMSNDKTMPLTBCi8i5SRNcpYD8,1279
109
109
  lino/management/commands/makescreenshots.py,sha256=fJF7ATZz7_s1IWkkYMEHVTLB5r5C1ny-kJp253BeoKM,8667
@@ -127,7 +127,7 @@ lino/mixins/printable.py,sha256=4U8M1lrTjUeuaPwrcWoanCBo53iAxiNpSTsVctI-gI0,199
127
127
  lino/mixins/ref.py,sha256=qV8CprGCvwzzWTl6LQc9I1RwD8pziD0F7Ykoaznm8wM,5550
128
128
  lino/mixins/registrable.py,sha256=DYiwiIoYMO488ZGX7C5PRbKz9HBpzk1rG6q9-_WvymQ,7208
129
129
  lino/mixins/sequenced.py,sha256=3DvjBEHLHacbBBq6iiVGftcvOPhBVpA9FN_tvNc6Bpo,16567
130
- lino/modlib/__init__.py,sha256=IGBDIfxsmcXQL6TTIODjGPan-k96V8SBcN1MifF2ZCw,940
130
+ lino/modlib/__init__.py,sha256=VRXk_5GORDtVH10uMiOzbxAyagDpfxeXNP8HfvA6Tnk,925
131
131
  lino/modlib/about/__init__.py,sha256=jhqGQIXU1o7KkmmQjfwPKJc3buibB09Fy55carAmi7U,342
132
132
  lino/modlib/about/choicelists.py,sha256=2bxDb2u7cFacBOgLoEWrMmzQ4BJ3x1pmhdgqxzUp-Rw,1424
133
133
  lino/modlib/about/models.py,sha256=MpTncIngidWA7cJ4s_Pzrca0qNhKXhrieuu3Nl7hnVU,5193
@@ -136,12 +136,12 @@ lino/modlib/awesomeuploader/models.py,sha256=LaK6IzLoCX4qMkVhsgdPfgawyFPe5rcHUgB
136
136
  lino/modlib/awesomeuploader/config/awesomeuploader/snippet.js,sha256=cZCGi0e9lDW96vCg3KVJ5DUtg2KHLNdnPo5KPRrQxv8,1792
137
137
  lino/modlib/blacklist/__init__.py,sha256=7IZihcqNCDymcWHfkAOZrueg2cbWiXRiXSZB-84RWLk,775
138
138
  lino/modlib/blacklist/models.py,sha256=YKoxf_9OBWzr2MWimZcWVgi-OGV4RUXI_UkUeqfNACo,1781
139
- lino/modlib/bootstrap5/README.txt,sha256=SvVAvRXTyCZiHxlOm2V9Q92sX6ecXfww4pzfs8foYwc,85
140
- lino/modlib/bootstrap5/__init__.py,sha256=5ixJPfIHJF9uOnieDpn30QsKXoDqpngrgW_3heM5tY0,2047
141
- lino/modlib/bootstrap5/models.py,sha256=PhKyeeTO_qMW406gTT5-Y_nbDPKvPIZzJPyS8sRl3g8,901
139
+ lino/modlib/bootstrap5/README.txt,sha256=YurmrZkxtvH7Ng8A3HrLL4gawEgc3ov6434k9HoIsVA,86
140
+ lino/modlib/bootstrap5/__init__.py,sha256=RRr8nPLoTg3Z7b8Cfi6br-0G4nEhCIYFeqtkIOtE_CA,2128
141
+ lino/modlib/bootstrap5/models.py,sha256=hqgi517NVjsjMUuIuy_ggf2ZxeHJOoVk02GuyPNri5c,944
142
142
  lino/modlib/bootstrap5/renderer.py,sha256=KfU2K0TyFMg3IKm5F-wUu315P2U4O6DCC5QVdsDyb2s,3018
143
- lino/modlib/bootstrap5/views.py,sha256=DxqZQ9sMK0Pe9wn2H6xjNEsWDcp-fBevNUBiiasY4cw,11674
144
- lino/modlib/bootstrap5/config/bootstrap5/base.html,sha256=QYohW90nrzP20vmpt7-t9LGmD5TJtAjS5rT3AaKD76g,4120
143
+ lino/modlib/bootstrap5/views.py,sha256=XyETWo4bhKnqv9ECh0GQUpbCIzuT2zds0pr3_afgpDU,8406
144
+ lino/modlib/bootstrap5/config/bootstrap5/base.html,sha256=ypYYAMSa79llaQJ2xgx66RA66er1CX-rTeeur2BWa_8,4378
145
145
  lino/modlib/bootstrap5/config/bootstrap5/detail.html,sha256=gFfBZpEgxHm8d1EeAorh8dHnByVoD6KCQClDk-EVtAc,523
146
146
  lino/modlib/bootstrap5/config/bootstrap5/index.html,sha256=cyJzgSzeRuKobXuuqofELa27gOlT_5KwhaOnWTI3nhQ,113
147
147
  lino/modlib/bootstrap5/config/bootstrap5/table.html,sha256=jrDaL7DBlOOW7sgZZbi9Wmq4omMJaEVFnhL_F7psyT8,249
@@ -203,7 +203,7 @@ lino/modlib/changes/__init__.py,sha256=3-CO7xI-U-rKDu_-WJg7N4FaIgqmFcj81uzyQlNYr
203
203
  lino/modlib/changes/models.py,sha256=wflXkqKSC-0ZynPGEd6PR4agP6zMuYO6v6v2NcRJgoo,9537
204
204
  lino/modlib/changes/utils.py,sha256=MrMV_vUid7F8jA4U5zujia74URDK07x5lj8Bjay4o2E,2591
205
205
  lino/modlib/checkdata/__init__.py,sha256=gwDAWmOrU74gYccOU46GpL_p4lhUh72e1amO_4w554U,3162
206
- lino/modlib/checkdata/choicelists.py,sha256=-7NX6iQKDlvJmfg1xgP94CFiPma5fl55ZqEIeCrfU5o,5468
206
+ lino/modlib/checkdata/choicelists.py,sha256=8F2BneFaATRpNHddvyv1aecg5lhtuNauIRcAmtOAs70,5459
207
207
  lino/modlib/checkdata/models.py,sha256=HcAtS8fISEPvTYAkpWI-Hifgk57HyF9a42_jYXPUdtI,14026
208
208
  lino/modlib/checkdata/roles.py,sha256=xjQ882-BxYUoHbv2pzebs7MWl6snA2fKivFDTRzW7sQ,295
209
209
  lino/modlib/checkdata/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -216,10 +216,10 @@ lino/modlib/comments/choicelists.py,sha256=SIA7P_KwtaayqOJxCkwyZouK0Z23-2v4ZFV9a
216
216
  lino/modlib/comments/mixins.py,sha256=zj_agGOiE4PG_Wg6ysxro37pq2H6dB-D9suQN1K_di4,4274
217
217
  lino/modlib/comments/models.py,sha256=xW1MJQUbWA-AJ_YFM9gDbm_5jYEiI3kIm6HVbYl-lWU,15569
218
218
  lino/modlib/comments/roles.py,sha256=z3gctvlTa_5PAs-D4pounyzNyuEc31jTFq9g33r6Z1w,751
219
- lino/modlib/comments/ui.py,sha256=u46TU1Qn2jz3CN-pCmhV8D2HXezEhGGSTZjuTJ4GWME,9915
219
+ lino/modlib/comments/ui.py,sha256=5_7TywuZdv3_HZNzPAGPp1EpWIwkot5CWZ6zM2Yv6f0,9893
220
220
  lino/modlib/comments/config/comments/comments.js,sha256=7oAnNyx_MKM1iWPu-QSp6iKfnOVdgq7EciQPpxTvYU8,242
221
221
  lino/modlib/comments/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
222
- lino/modlib/comments/fixtures/demo2.py,sha256=DSIqNtGOQlwbg8k43nE2ax1x-H_ifRsozvw6LZM330Y,25407
222
+ lino/modlib/comments/fixtures/demo2.py,sha256=Uw8GqsPN2YvqWzgYw0XNTp39PDU8y4tivfr4pNTfB9c,25472
223
223
  lino/modlib/dashboard/__init__.py,sha256=_PFbmakUn8DShXyJY3EfAcuZtX5ofWnS-8dk7s1CrLw,1420
224
224
  lino/modlib/dashboard/models.py,sha256=EgRNg88dmz-OlIdi1SyEuerWMsRqKIfqE2MgKL7kApw,3510
225
225
  lino/modlib/dupable/__init__.py,sha256=fIQ8wj-T8ZbkjwQgW_-ankJsHLjPMepOTo32mJXNCvI,532
@@ -227,10 +227,10 @@ lino/modlib/dupable/mixins.py,sha256=SZ2Exe5q3ANYsP7gnEXQuQczwCDKdRfFvOavreu4mYI
227
227
  lino/modlib/dupable/models.py,sha256=fcPbWRLwAVOQ4y_E3kaeHUanxmZTS69dlg9TLNCeyZs,4575
228
228
  lino/modlib/export_excel/__init__.py,sha256=HrsrhXjIMvMHRGu8whH3A_WijZWrH35p2cQsFXK60DY,356
229
229
  lino/modlib/export_excel/models.py,sha256=u9COKVdVsPwGk5WjgVarjLSkxmS-KOdohXfH4CruF_c,5353
230
- lino/modlib/extjs/__init__.py,sha256=Av3HzEfICIH-ZcAXUjkd5k5QVQNMfOkH2KHAb7r4yxs,10172
231
- lino/modlib/extjs/ext_renderer.py,sha256=zjyZ8POSCoQMCzeaisIYJwk_OM6v0GimuRKddvyQAEM,60659
232
- lino/modlib/extjs/views.py,sha256=krcr8oCmQUXX7wK7eP-LxTCDUL8AtqMFqbNPXY0LA5c,26964
233
- lino/modlib/extjs/config/extjs/index.html,sha256=jO5hdNpFSkm9t0xhHD5hc8Hw1fSr6xb3zYq9aMyOI7Q,8603
230
+ lino/modlib/extjs/__init__.py,sha256=SKbgoH4BjhDt5YrN8UpoDtAjaE4P9or1NmNBpDiuEyo,10123
231
+ lino/modlib/extjs/ext_renderer.py,sha256=eOTISVqvH_prjK3XMKSHpIDyp-Gnow4WlIxKeSZXki4,60407
232
+ lino/modlib/extjs/views.py,sha256=jcUufgTauBGd85Z6Duaw5U7aTabvDEWTG-MkMKtR_-c,27079
233
+ lino/modlib/extjs/config/extjs/index.html,sha256=Y_1V8Nzwr-1_fIqoAv-qg5NabzAX_o9MROogOG71Ihg,8598
234
234
  lino/modlib/extjs/config/extjs/linoweb.js,sha256=I4VYGmkK4htqZvHM9g-6psJF3pp7SvgHEI0I02Sxpvo,175127
235
235
  lino/modlib/extjs/config/extjs/service-worker.js,sha256=KEKWeehTlfBHk3r8NbsP9C5av_DukHORybxFOwbjYaQ,1767
236
236
  lino/modlib/extjs/static/ext-3.3.1/INCLUDE_ORDER.txt,sha256=rTFv3rfTG7ImAYYEBuhcaITJISCmF_JavgD5oWjLIzM,860
@@ -3531,7 +3531,7 @@ lino/modlib/gfks/fields.py,sha256=qVQhkSlj1pxhFEOw5QjEHty9dAtSmXakNU98vztREj8,32
3531
3531
  lino/modlib/gfks/mixins.py,sha256=BcITVETBR7zVj684diZGCii3rzm7lgrgzr2euy-D-iw,2626
3532
3532
  lino/modlib/gfks/models.py,sha256=bDbuvtpSW-wxNWLC3pKWsDQPyN4g6MFMTS-66aQ2DX8,6723
3533
3533
  lino/modlib/help/__init__.py,sha256=sPe4flqqGEtxefsUaPdzAti7qkmLuPD9mhKc8CA2uWs,4413
3534
- lino/modlib/help/models.py,sha256=oGY8HISu7xcZOr0UMeJQjRRg8y3x4xt-hZn41ml3Q1Y,3599
3534
+ lino/modlib/help/models.py,sha256=-td5587yPqopRxmrsoelLyQjUZIbeV7zIk_JKDAeCnY,3094
3535
3535
  lino/modlib/help/utils.py,sha256=IRGHjvPZVtw16SMehxenN8cJGT8gROcYv53UFC01oZQ,4263
3536
3536
  lino/modlib/help/config/makehelp/actor.tpl.rst,sha256=Yl-ZAWvI93cVFLd7GG-qpn_vkGFvKe3iR0eWBJpHgMc,346
3537
3537
  lino/modlib/help/config/makehelp/actors.tpl.rst,sha256=wXMKYQnlhLi432QggVgRUWGuHRDiSX9NyXSdnSar7Io,249
@@ -3571,7 +3571,7 @@ lino/modlib/languages/fixtures/iso-639-3_20100707.tab,sha256=u8PwI2s8shy0_Val5-s
3571
3571
  lino/modlib/linod/__init__.py,sha256=zn0MW5jo1QSUoZYDxqqyAY4Ra5fMRW9NWAzdXtTyWXg,2663
3572
3572
  lino/modlib/linod/choicelists.py,sha256=UqRCmjcWkj5iYj6wudEV9Be5_cpy833TC6euo8tMNfY,4826
3573
3573
  lino/modlib/linod/consumers.py,sha256=XBjA1fflJ-e9yWRMKXyQAhrOklYzs5JRhEeGMOKWFqM,6730
3574
- lino/modlib/linod/mixins.py,sha256=PNw-YCcDtT4xQEEAU9v4nvacDp_2S_BWip2Cu3dzOnw,12027
3574
+ lino/modlib/linod/mixins.py,sha256=-RODGUA3fEK9pZWiz_DNMPZKejXrgEH5o0Z2q9UNrZY,12054
3575
3575
  lino/modlib/linod/models.py,sha256=orSZkg6BTq5b7jXBq0XNGMEI6gTogOFVYys6j-YLefk,2384
3576
3576
  lino/modlib/linod/routing.py,sha256=3pYJT6FbaVMj6rKkDVv3E5VTFFc9nglIDeo6dgAKu8Q,2399
3577
3577
  lino/modlib/linod/utils.py,sha256=dE973Xib6Be1DvNsZ0M5wzY_jpkk35R21WKs-jQPorM,339
@@ -3580,10 +3580,10 @@ lino/modlib/linod/fixtures/checkdata.py,sha256=JBh_r-OCd0VXSgyxegBq8fmf5T2CyeKjX
3580
3580
  lino/modlib/linod/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3581
3581
  lino/modlib/linod/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3582
3582
  lino/modlib/linod/management/commands/linod.py,sha256=SzJ6-yRpI1QFrXqiS8AO7_c2NmkMdV4JpFhfyGzs5eI,2587
3583
- lino/modlib/memo/__init__.py,sha256=-AhwN4yfPkE5xcT9uvdthXeImE3-assEu_8qRhlnAF4,5338
3584
- lino/modlib/memo/mixins.py,sha256=cu5BkaYgNtFtJufqphlJrNJWO_wksZDqMdaQVBSrGAQ,10954
3585
- lino/modlib/memo/models.py,sha256=zUEvWu0dK5QhkU3DeMqNqsrzSUzOl6DLZaJBNytfgrs,4388
3586
- lino/modlib/memo/parser.py,sha256=h21I0EjXfV2oHvekp5LxqtfEGlHREa1eOFHU3yC3sOw,13029
3583
+ lino/modlib/memo/__init__.py,sha256=CvxvRdTEdYsov3GVjmfo_6aKG9K2JeUcrp666Bm6DxY,5374
3584
+ lino/modlib/memo/mixins.py,sha256=f-sjtmxIwFVU3vlwWFLeHI8fVuOUbp0CtBfJepDTZIQ,11743
3585
+ lino/modlib/memo/models.py,sha256=ddZNktLEUiMoD5OfyuAxlBA5N-8kjNE0LAkzUCStpVE,4387
3586
+ lino/modlib/memo/parser.py,sha256=0UV92AylncC5Ogxn0fzOWqK0jlQl9x4afgm24nmpCsc,13089
3587
3587
  lino/modlib/memo/views.py,sha256=H3g_nuiMzguptXLSWaWLJClU7BefXPFn9Rh8UIVVBeg,555
3588
3588
  "lino/modlib/memo/management/__init__,py",sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3589
3589
  lino/modlib/memo/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -3594,7 +3594,7 @@ lino/modlib/notify/api.py,sha256=oZemK9G8Ie6O8iEMDl5mv7BbpCpbfBHbk0xI9125RBY,436
3594
3594
  lino/modlib/notify/choicelists.py,sha256=7ZkYNMOXNDfyTvdx8Sn-Gsma9f31o-6G1CtivXmQDmA,1324
3595
3595
  lino/modlib/notify/consumers.py,sha256=YaEAhAi_Oq5ovakuP5DI21YIAMvRqQcf4K8MBilcN2w,1529
3596
3596
  lino/modlib/notify/mixins.py,sha256=rwsTgqpzvyiekOqHpxQRTPPdOhv2ZIPrW03YSATfdeE,3903
3597
- lino/modlib/notify/models.py,sha256=-R1OXXKuQCQn6cFEXiQnxPWi2AUqDTLHQ4xaDZM6X-g,18621
3597
+ lino/modlib/notify/models.py,sha256=tQWODf7lrPXNQMlrcnq7nmVfyQn7RQfuYZnBLWbu-I0,18603
3598
3598
  lino/modlib/notify/utils.py,sha256=e4TAJr8mgicwEjgyuP-bOiw1VGNA6tVo_hab1q-oSNc,328
3599
3599
  lino/modlib/notify/views.py,sha256=Ar2L_Tv1qqU5giHu2b0h_AKc3utvgfZwda4qncqoBsk,957
3600
3600
  lino/modlib/notify/config/notify/individual.eml,sha256=Ct8fLx7dz_adE_ua8S87dYFSNESCHRbRGx9Ven1MlLI,307
@@ -3627,21 +3627,21 @@ lino/modlib/printing/models.py,sha256=fd-BEKSLpgxPnkh9U7fg2tjNy39exBi3xJC9VzJuXd
3627
3627
  lino/modlib/printing/utils.py,sha256=LUO9769wJvHCPZIqeVQ9XAS6UKJ6BfJbiwO8Dt1kHc4,737
3628
3628
  lino/modlib/printing/config/report/Default.odt,sha256=4X8UD9H_5Th2CELP0C6DTe4g0ZNUPXAg1C00xP3Qluc,10930
3629
3629
  lino/modlib/printing/config/report/Default.wk.html,sha256=4Ssx2LWm1gVpXf0Q4XoSY15WkhqRvx51Upab-IS1nm0,96
3630
- lino/modlib/publisher/__init__.py,sha256=vHF70jyz7EJwmrVn5JVxnJujqjQupqoyHwhY2wqc2cM,2609
3631
- lino/modlib/publisher/choicelists.py,sha256=6ezK8PXR0avLryyOfJpdH-yLDmXuYYJfvtyMtp38VKw,7852
3632
- lino/modlib/publisher/mixins.py,sha256=GKo4DUsevEPlsvnxmCOE3YG5no1ugVvKCSc1-CMMw-M,4248
3633
- lino/modlib/publisher/models.py,sha256=y9M4MEo8FBVuc0lXct2aG4LgoLwfVjz3yrbemX8jJ7s,14405
3634
- lino/modlib/publisher/renderer.py,sha256=H_blUzQK2bnw_ewW7NcY6N5PyNIwgi40TKXLG4QKyeU,2078
3635
- lino/modlib/publisher/ui.py,sha256=0nJJRnXknk1zIj3NBubYHWFgN9zBtNzvklq6xGlt2xA,3096
3636
- lino/modlib/publisher/views.py,sha256=dswYg9uNrnG4-0mkn8ibH6vTyR2GproFzNiW-C-mgSA,2779
3630
+ lino/modlib/publisher/__init__.py,sha256=SeTsaspupzSuimoo38SJL-YhYL0v-ATC35lTnhlZ76Q,2925
3631
+ lino/modlib/publisher/choicelists.py,sha256=vjh_U0t4eh3V-rpgmawlqxGQPATqxg7VS1PiAkpbTdM,5914
3632
+ lino/modlib/publisher/mixins.py,sha256=YUYDHzWF6Yk1jb3rFyJm2ZFTcibrWJsAwVR49treRTw,5678
3633
+ lino/modlib/publisher/models.py,sha256=Q-rQQxrVn3FcPyoUHJART_FLBqzzlI-cxcdtx_7fQqM,14353
3634
+ lino/modlib/publisher/renderer.py,sha256=TVWEbg2n1n6WMI_Z3jWCEVYjrEalOQU7InGOI30t5c0,2735
3635
+ lino/modlib/publisher/ui.py,sha256=-SosWmlRSjFzx1wlSsnqhJeYj1W60pR01lL18Dh_5yg,3088
3636
+ lino/modlib/publisher/views.py,sha256=isCANaTwHCMImDAz2sdFXkdMoWbJcy0AsBo5d93uQjY,3879
3637
3637
  lino/modlib/publisher/config/publisher/base.html,sha256=nrWuN4lhP1O4ORdYTaY3fS2pc90yfUnfDYfm2Jtr7hQ,198
3638
3638
  lino/modlib/publisher/config/publisher/default_list.pub.html,sha256=3ePc4U3xZxE-pqtzlnB9CRQWu8OQrtfXKEjyuc8BBUQ,578
3639
3639
  lino/modlib/publisher/config/publisher/item.pub.html,sha256=973RYgCAYG1SYIB4bwfVZFVTUo0WD2I98PsoPgjQ8XA,154
3640
3640
  lino/modlib/publisher/config/publisher/login.html,sha256=_j_MmwVv_UohMnEDADo99XQmUqGvOWTlCDPW1oaSWpo,495
3641
- lino/modlib/publisher/config/publisher/page.pub.html,sha256=4pgyjoNTmgaQZhVBcKa0Y-TDFBPjVPKjc3Yt57i87KQ,2547
3641
+ lino/modlib/publisher/config/publisher/page.pub.html,sha256=pzDVyP--ILjz9h2P5OoVlRDo_jbC127X9BeSlLt9gI4,5351
3642
3642
  lino/modlib/publisher/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3643
3643
  lino/modlib/publisher/fixtures/demo2.py,sha256=KrF672tNLlhMX6EkxKDfcvvE9pGH4k9NgF7Rk5DkiLg,366
3644
- lino/modlib/publisher/fixtures/std.py,sha256=7xpMOr4kd-4SX8uhwxagktUlcXAr6fdZfD-H519CR6g,987
3644
+ lino/modlib/publisher/fixtures/std.py,sha256=0xeSyoxoJm5NqlPH1VNsMlqzMeo3osJFEhuJYCZbACY,1465
3645
3645
  lino/modlib/publisher/fixtures/synodalworld.py,sha256=aQxVAmyxVcRHjMZsfbgtsYYho2JVCL98G8iopzCuFl0,819
3646
3646
  lino/modlib/restful/__init__.py,sha256=9CqWTQkJ2KpLW5MI1bKqKZU_7nXxodxl7HSgc8Agwmw,1506
3647
3647
  lino/modlib/restful/fields.py,sha256=8dik0q2LaCtJhQX1lu-fe-y_38xdhAWy1ZX3EKmJWfs,567
@@ -3680,7 +3680,7 @@ lino/modlib/system/__init__.py,sha256=cXb8cPBr3t18mXtiY_ScqscdUgd6MvSrsHebfqY-SH
3680
3680
  lino/modlib/system/actions.py,sha256=jmSYPQDvIQxDth8MaJ9GpkmSCufLGWjmAjKdHAIWE48,1126
3681
3681
  lino/modlib/system/choicelists.py,sha256=hClsYGgEDAuEYztCiivJlgReBdpDs8z3T_HRcS83ZFg,9578
3682
3682
  lino/modlib/system/mixins.py,sha256=fpj0O1218KgwGhRr8IHYRBXsNt5uXN87qVrx7dxvjys,19031
3683
- lino/modlib/system/models.py,sha256=nuoEbToSMo93g36vTqxdagLEtMp9fL_Gc0GWd07hIPI,10950
3683
+ lino/modlib/system/models.py,sha256=qF9kvI2IRoNDeEZoUFw1MPdRP9v_YHYvlbkHLDVK3Ow,10974
3684
3684
  lino/modlib/system/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3685
3685
  lino/modlib/system/fixtures/std.py,sha256=ko6TxoQ6hQvUJT6BYOFBB8-F_kxu8VlRhlEcUg248Uc,102
3686
3686
  lino/modlib/tinymce/__init__.py,sha256=do3zN5Mo2ftsegHTV_KUVaHl44RJ8WHBSS4Jb7BExHs,4879
@@ -4432,25 +4432,25 @@ lino/modlib/tinymce/static/tinymce-4.1.10/skins/lightgray/img/loader.gif,sha256=
4432
4432
  lino/modlib/tinymce/static/tinymce-4.1.10/skins/lightgray/img/object.gif,sha256=5qFeUrxKF7CFBzuo3r1HCOrWrj1MvrOIDGXLevxIl3c,152
4433
4433
  lino/modlib/tinymce/static/tinymce-4.1.10/skins/lightgray/img/trans.gif,sha256=nPAg18O7p_WrEM2lSqvvk0-QbU-aOs-Z6efcbJhXljU,43
4434
4434
  lino/modlib/tinymce/static/tinymce-4.1.10/themes/modern/theme.min.js,sha256=w41NrMzqdGEDk6OhjeuElBHlIr5Ntt_QpdoxNRFXa3Q,6431
4435
- lino/modlib/uploads/__init__.py,sha256=XIQjTtWfAsSlaM8fwN7tonx8czOFtL9G1VB77Er2vmU,2821
4435
+ lino/modlib/uploads/__init__.py,sha256=nkco3y6OGeeONMWCBXaVvH6fwoW5LklNn-guAINMcqQ,2869
4436
4436
  lino/modlib/uploads/actions.py,sha256=6Bi5hDUdR3cOA4ROARqPzRwQKtUcHoSl3QM44iWVrtE,1176
4437
4437
  lino/modlib/uploads/choicelists.py,sha256=-7SODzA_0afrBgPh7-j8kpz0VdzDXy2U7dLhhwE2kG8,1327
4438
4438
  lino/modlib/uploads/dummy_upload.odt,sha256=VHG2YkykCg8VqoXx8Hm37QYunvdbmg_jCyygiZseKF8,10447
4439
4439
  lino/modlib/uploads/dummy_upload.pdf,sha256=hdAx7s3V10lqVekSGugzkn_Hqxx3V4OkCNVNQI2OsFY,18730
4440
- lino/modlib/uploads/mixins.py,sha256=rFqvd4TE4ELo6sy0UGt0tgV0oPUIQKDvmv_iJ0EvizA,8440
4441
- lino/modlib/uploads/models.py,sha256=QuO5xrbQXhNQdf1m-TBn54kd6A6Y3bnG8e0Zg2WRbJs,17723
4440
+ lino/modlib/uploads/mixins.py,sha256=bMvwB2bD9IK58mkVgEN6R1vaHyP5Sffw_HMU7Mn7CK0,8432
4441
+ lino/modlib/uploads/models.py,sha256=mvDwM7XlXRsOVH6gZNKP74qaaORywVcNhLfByXnUe-8,19130
4442
4442
  lino/modlib/uploads/roles.py,sha256=ae0wf_vC4O6MffDx8abpjW1M2oWOp5VzOvt_ckk72Cc,191
4443
- lino/modlib/uploads/ui.py,sha256=mPVVWVpUkvAk5RGDCxJoL1G0lqQuVKFZIniyRrSno3w,8557
4444
- lino/modlib/uploads/utils.py,sha256=nOOtb8cha0JoRAg4QnP14e8V40WIzx0eEitLg_so8Og,3470
4443
+ lino/modlib/uploads/ui.py,sha256=zysYLSxSKLoCrTgOJp9Bws23dTnwDhnDnXb30H5JMqA,8583
4444
+ lino/modlib/uploads/utils.py,sha256=7LBQ8lYu7b39UH_wzLmzEyHpphXA5JCJlHCm_K9fI6M,3488
4445
4445
  lino/modlib/uploads/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4446
4446
  lino/modlib/uploads/fixtures/demo.py,sha256=rhidbKN4vOyzqnRLMXu3gkx4zAtxGj3FoSz0qaJlRMA,1913
4447
4447
  lino/modlib/uploads/fixtures/demo3.py,sha256=q0bwZrx5XtRsRlFpsa33fL0sCl7IdCYaP9E1rhCnJt4,547
4448
4448
  lino/modlib/uploads/fixtures/std.py,sha256=nb5oRcX_WrkTLaGoch6PT7GA0FPKmqbN-BdlPq-hHSc,516
4449
- lino/modlib/users/__init__.py,sha256=Q0yT2eOyGBXLStCEDI4U1Fcif-6EDssjX9VndcZ0m54,4794
4450
- lino/modlib/users/actions.py,sha256=NcJVCfIhP3moN2MvhIonyCKzld7ruUtnCX4tFVMK7_c,18445
4449
+ lino/modlib/users/__init__.py,sha256=jZTrRapBqfqyKxgTguovP8SVwyNJCjpluesc1jlH5eI,4759
4450
+ lino/modlib/users/actions.py,sha256=oVipctpPAnAw0_9g9PGBiG6j_kgAEvj7Yw6yg8Ezuso,18360
4451
4451
  lino/modlib/users/choicelists.py,sha256=-X76C1NxIs5e7rFHp5Z0kjJkA1NlOP2vdLKGkI2wZRU,3876
4452
4452
  lino/modlib/users/mixins.py,sha256=nmWpNx1aBSPfDSnKLGtNcgUGcWkjIjLIyfK1V86a6-4,16114
4453
- lino/modlib/users/models.py,sha256=V5r_aY7M7gXfY1wAcIknacwsF8k9vtiMY898-y7GSjE,17842
4453
+ lino/modlib/users/models.py,sha256=8q9Y9axqF-m532GQ815PJTg5UvA7oVqvX9fMzmP_qNY,18035
4454
4454
  lino/modlib/users/roles.py,sha256=yi29ELbWU1VtteGARaxetxmsCkZQHA2oJiD0dXujMiE,320
4455
4455
  lino/modlib/users/ui.py,sha256=GkaOHY3yFAErZydyO-noseXWXF1H7xfGVAjlT2NSwlE,13844
4456
4456
  lino/modlib/users/utils.py,sha256=4B4BdgB66C_EUfFv-DZuLrwZpLwNHf0K2WWUgzSBz7I,1993
@@ -4464,7 +4464,7 @@ lino/modlib/users/fixtures/demo2.py,sha256=j2ke91wvpHs3kHpeztzV3nOG4rJvavkHv2YJo
4464
4464
  lino/modlib/users/fixtures/demo_users.py,sha256=zTkqxi6hUBL55B9FGpilrhT0aiBXN9uEhxzu0onCF5g,744
4465
4465
  lino/modlib/users/fixtures/std.py,sha256=Eo_TdqFC7NPryLeGRfp-nbOXw3hDqxTUpddFTxUuZ74,712
4466
4466
  lino/modlib/weasyprint/__init__.py,sha256=_7di_eU09D3lwypV6IgOq_uZ_iiS3r9Emd1H1lhsWvc,3086
4467
- lino/modlib/weasyprint/choicelists.py,sha256=HiQuU2UpC0_U989MAZSCIt4Jkb3E2O3JTlT5H2UeJKE,1386
4467
+ lino/modlib/weasyprint/choicelists.py,sha256=DdyeWQq1HTNzBotrXXU0AWpPs_oJh9viTg227yL6DnY,1593
4468
4468
  lino/modlib/weasyprint/models.py,sha256=op6CRRBC8NatqGgGdQHU4zcVG4fu4mRS9Mz8STG3B3g,168
4469
4469
  lino/modlib/weasyprint/config/weasyprint/base.weasy.html,sha256=lz_-RTUIzxmq2r_zEltzkuyILSxdFE8EkI5M_-42v_w,4806
4470
4470
  lino/modlib/wkhtmltopdf/__init__.py,sha256=1nqwVpOQH4YMhegnzrcfvXW_Xy9CIdHBHzrNvDGyVxg,773
@@ -4633,12 +4633,12 @@ lino/utils/dates.py,sha256=eWF5WxA5uJf51Y9PKvDVBWD8yIf6yBF6oO6TeU3ujzw,1030
4633
4633
  lino/utils/dbfreader.py,sha256=KrGsBAFV2tF9pAd9jsmBAFpZ-yw-CRymZHEn_q9IL90,13784
4634
4634
  lino/utils/dbhash.py,sha256=tG1IHe6Bz9MaagTI-131gpcLcNw3g642QVvv7GsJH2g,3303
4635
4635
  lino/utils/dblogger.py,sha256=kr0YxQY6veymvNg5A4tsvkqW8haRWdwqL0C-_9_QTg0,721
4636
- lino/utils/diag.py,sha256=quiGcv-e0pwn_yjjt7OUMo8kr1qKYmIFBjDnHxr_5X4,18754
4636
+ lino/utils/diag.py,sha256=dwRtR7Ek9GERg8OYBGf5DdqMdElJg-JTtQxI84coH3Q,18799
4637
4637
  lino/utils/djangotest.py,sha256=Phz1qNp0wDonZRja5dxbCk0Xl3a73gZNiKK8v9tAgZg,8334
4638
4638
  lino/utils/dpy.py,sha256=pHeOmAQLqn4DLunipn5FwooTttRroqdewgUTUt_Dq5s,21220
4639
4639
  lino/utils/fieldutils.py,sha256=6GwPOfL-Jv-uh5-tZrTqC1hJccqHhdLbVSy4CAeegDA,2957
4640
4640
  lino/utils/format_date.py,sha256=zJu8PO45hGsk6Znq8_93D3vUz9HcY7CjHduAFxoU0v8,3123
4641
- lino/utils/html.py,sha256=nR2h6oa_47Baq5rdSln0aGbqzS6SFsWzl-uqjnGIUWU,3273
4641
+ lino/utils/html.py,sha256=my3zA3No8L6ueXrxEpPY_BW4r3SqM5dlQP2iUvo3suI,6545
4642
4642
  lino/utils/html2odf.py,sha256=Hxw4HiIHY1ZCjb4_JLykVHbr6yAMhhHrnrCnLNDYKAs,4826
4643
4643
  lino/utils/html2xhtml.py,sha256=fvrIoLBFpiXtYO3UYaIgAIDjf6ATvrxolQX4etxS57Y,2119
4644
4644
  lino/utils/instantiator.py,sha256=w_yt1ETFa4DruvF3clTUr1xQ-bVCRN4m5oi2zKljj5w,7553
@@ -4662,7 +4662,7 @@ lino/utils/restify.py,sha256=AbVCBjM9V9rYuFweV1gVo9ObO8lblJbA-mKjaPsebRE,14068
4662
4662
  lino/utils/screenshots.py,sha256=T-szKC3EJfo4JcLio8Jj0xqaoSuJcZG6Jf9EF_B8WDQ,2040
4663
4663
  lino/utils/sendchanges.py,sha256=fcSqRyI3l8sEf9_LSqIyWGML6CORoYkjcFp2bs-YNlY,7097
4664
4664
  lino/utils/socks.py,sha256=0d67FDbrJ7PXl4AYzNNZgwCzV-fzIAAtWGxMEB7dw78,538
4665
- lino/utils/soup.py,sha256=t9OXz9yYaE8eXmVZt31rxVzxq3xA5JljU5Df5MYwZj4,9830
4665
+ lino/utils/soup.py,sha256=xozIa1QtxF8VJbjBQ-yYcL6NZ0rOXCMQpBuZSpF2wWM,10181
4666
4666
  lino/utils/sql.py,sha256=kwCgv5E3n7uLjpXOEiaF2W2p8LeGXcP39xgtnqvzTP8,6795
4667
4667
  lino/utils/sqllog.py,sha256=kUCnBfFjExhItJ1w76WT9VWPaWWq8NQM-kSIMIIZnRU,3282
4668
4668
  lino/utils/ssin.py,sha256=Wo-9M0pG0uEYEGvmz8N--iRIqJe3ETtgLOXoung7qlE,4232
@@ -4675,9 +4675,9 @@ lino/utils/weekly.py,sha256=t4WZAmAy0Z-siaMEaYgVQh1VDNKXtEa-wgLDXd52BtU,1577
4675
4675
  lino/utils/xml.py,sha256=EGDnO1UaREst9fS7KTESdbHnrrVCwKbRQdvut6B6GmQ,1612
4676
4676
  lino/utils/mldbc/__init__.py,sha256=QqWRlzeXaOmFfbCk-vTY3SZMn1-FCf67XnpZdd_Nim0,1134
4677
4677
  lino/utils/mldbc/fields.py,sha256=tAX8G5UKigr9c6g0F3ARIjZZtg406mdaZ--PWSbiH9E,2873
4678
- lino/utils/mldbc/mixins.py,sha256=CkYe5jDa7xp9fJq_V8zcZf8ocxgIjUgHc9KZccvA_Yw,1945
4679
- lino-25.8.3.dist-info/METADATA,sha256=IA3AZap5D34Op2qoofKIQI8_9EYLyttJlrhmrxdIXCo,42534
4680
- lino-25.8.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
4681
- lino-25.8.3.dist-info/licenses/AUTHORS.rst,sha256=8VEm_G4HOmYEa4oi1nVoKKsdo4JanekEJCefWd2E8vk,981
4682
- lino-25.8.3.dist-info/licenses/COPYING,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
4683
- lino-25.8.3.dist-info/RECORD,,
4678
+ lino/utils/mldbc/mixins.py,sha256=nu1C-Sytp7c10AJzdvG8WSAAVX2b8GGCcVfQ-9nbYm0,1929
4679
+ lino-25.9.0.dist-info/METADATA,sha256=Clvhz8uBnzvkW3kV5ImNAGuX0qyQzHfMMBQX2m-uqr8,42534
4680
+ lino-25.9.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
4681
+ lino-25.9.0.dist-info/licenses/AUTHORS.rst,sha256=8VEm_G4HOmYEa4oi1nVoKKsdo4JanekEJCefWd2E8vk,981
4682
+ lino-25.9.0.dist-info/licenses/COPYING,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
4683
+ lino-25.9.0.dist-info/RECORD,,
File without changes