lino 24.10.2__py3-none-any.whl → 24.11.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 (53) hide show
  1. lino/__init__.py +1 -1
  2. lino/api/dd.py +1 -0
  3. lino/api/doctest.py +11 -10
  4. lino/api/rt.py +2 -3
  5. lino/config/admin_main_base.html +2 -2
  6. lino/core/actors.py +68 -33
  7. lino/core/choicelists.py +2 -2
  8. lino/core/dashboard.py +2 -1
  9. lino/core/dbtables.py +3 -3
  10. lino/core/elems.py +8 -4
  11. lino/core/fields.py +11 -3
  12. lino/core/kernel.py +4 -5
  13. lino/core/layouts.py +1 -1
  14. lino/core/model.py +1 -9
  15. lino/core/plugin.py +1 -0
  16. lino/core/renderer.py +19 -19
  17. lino/core/requests.py +73 -38
  18. lino/core/site.py +5 -45
  19. lino/core/store.py +16 -16
  20. lino/core/tables.py +0 -17
  21. lino/core/utils.py +58 -10
  22. lino/core/views.py +2 -1
  23. lino/help_texts.py +13 -0
  24. lino/management/commands/show.py +2 -4
  25. lino/mixins/periods.py +10 -4
  26. lino/mixins/polymorphic.py +3 -3
  27. lino/mixins/ref.py +6 -3
  28. lino/modlib/checkdata/__init__.py +3 -3
  29. lino/modlib/extjs/ext_renderer.py +1 -1
  30. lino/modlib/languages/__init__.py +1 -1
  31. lino/modlib/languages/models.py +1 -1
  32. lino/modlib/linod/consumers.py +2 -3
  33. lino/modlib/memo/mixins.py +1 -1
  34. lino/modlib/periods/__init__.py +31 -0
  35. lino/modlib/periods/fixtures/std.py +23 -0
  36. lino/modlib/periods/mixins.py +126 -0
  37. lino/modlib/periods/models.py +246 -0
  38. lino/modlib/printing/actions.py +2 -0
  39. lino/modlib/publisher/ui.py +2 -2
  40. lino/modlib/system/__init__.py +0 -2
  41. lino/modlib/system/choicelists.py +55 -1
  42. lino/modlib/system/models.py +1 -0
  43. lino/modlib/users/models.py +2 -2
  44. lino/modlib/weasyprint/__init__.py +2 -0
  45. lino/utils/__init__.py +8 -9
  46. lino/utils/djangotest.py +2 -1
  47. lino/utils/html.py +31 -0
  48. lino/utils/ranges.py +5 -15
  49. {lino-24.10.2.dist-info → lino-24.11.0.dist-info}/METADATA +1 -1
  50. {lino-24.10.2.dist-info → lino-24.11.0.dist-info}/RECORD +53 -49
  51. {lino-24.10.2.dist-info → lino-24.11.0.dist-info}/WHEEL +0 -0
  52. {lino-24.10.2.dist-info → lino-24.11.0.dist-info}/licenses/AUTHORS.rst +0 -0
  53. {lino-24.10.2.dist-info → lino-24.11.0.dist-info}/licenses/COPYING +0 -0
@@ -1,5 +1,5 @@
1
1
  # -*- coding: UTF-8 -*-
2
- # Copyright 2011-2023 Rumma & Ko Ltd
2
+ # Copyright 2011-2024 Rumma & Ko Ltd
3
3
  # License: GNU Affero General Public License v3 (see file COPYING for details)
4
4
 
5
5
  import datetime
@@ -12,6 +12,7 @@ from django.utils.translation import gettext_lazy as _
12
12
 
13
13
  from lino.utils import isidentifier
14
14
  from lino.core.choicelists import ChoiceList, Choice
15
+ from lino.core.roles import login_required, Explorer
15
16
  from lino.utils.dates import DateRangeValue
16
17
  from lino.utils.format_date import day_and_month, fds
17
18
 
@@ -229,3 +230,56 @@ add("M", _("monthly"), "monthly", du_freq=MONTHLY)
229
230
  add("Y", _("yearly"), "yearly", du_freq=YEARLY)
230
231
  add("P", _("per weekday"), "per_weekday") # deprecated
231
232
  add("E", _("Relative to Easter"), "easter")
233
+
234
+
235
+
236
+ class DisplayColor(Choice):
237
+ font_color = None
238
+ def __init__(self, value, text, names, font_color="white"):
239
+ super().__init__(value, text, names)
240
+ self.font_color = font_color
241
+
242
+
243
+ class DisplayColors(ChoiceList):
244
+ verbose_name = _("Display color")
245
+ verbose_name_plural = _("Display colors")
246
+ item_class = DisplayColor
247
+ required_roles = login_required(Explorer)
248
+
249
+
250
+ add = DisplayColors.add_item
251
+ # cssColors = 'White Silver Gray Black Red Maroon Yellow Olive Lime Green Aqua Teal Blue Navy Fuchsia Purple'
252
+ # cssColors = 'white silver gray black red maroon yellow olive lime green aqua teal blue navy fuchsia purple'
253
+ # for color in cssColors.split():
254
+ # add(color, _(color), color, font_color="white")
255
+ #
256
+ # lightColors = 'White Silver Gray'
257
+ # # lightColors = 'white silver gray'
258
+ # for color in lightColors.split():
259
+ # DisplayColors.get_by_value(color).font_color = "black"
260
+
261
+ # B&W
262
+ add("100", _("White"), "white", "black")
263
+ add("110", _("Gray"), "gray", "black")
264
+ add("120", _("Black"), "black", "white")
265
+
266
+ # Rainbow colors
267
+ add("210", _("Red"), "red", "white")
268
+ add("220", _("Orange"), "orange", "white")
269
+ add("230", _("Yellow"), "yellow", "black")
270
+ add("240", _("Green"), "green", "white")
271
+ add("250", _("Blue"), "blue", "white")
272
+ add("260", _("Magenta"), "magenta","white")
273
+ add("270", _("Violet"), "violet", "white")
274
+
275
+ # Other colors
276
+ add("300", _("Silver"), "silver", "black")
277
+ add("310", _("Maroon"), "maroon", "white")
278
+ add("311", _("Peru"), "peru", "white")
279
+ add("320", _("Olive"), "olive", "white")
280
+ add("330", _("Aqua"), "aqua", "white")
281
+ add("340", _("Navy"), "navy", "white")
282
+ add("350", _("Fuchsia"), "fuchsia","white")
283
+ add("351", _("Purple"), "purple", "white")
284
+
285
+ # List of all named colors: https://www.w3schools.com/colors/colors_names.asp
@@ -33,6 +33,7 @@ from .choicelists import (
33
33
  DurationUnits,
34
34
  Recurrences,
35
35
  Weekdays,
36
+ DisplayColors
36
37
  )
37
38
  from .mixins import Lockable
38
39
 
@@ -99,7 +99,7 @@ class User(AbstractBaseUser, Contactable, CreatedModified, Publishable, DateRang
99
99
  user_type = UserTypes.field(blank=True)
100
100
  initials = models.CharField(_("Initials"), max_length=10, blank=True)
101
101
  if dd.plugins.users.with_nickname:
102
- nickname = models.CharField(_("Nickname"), max_length=20, blank=True)
102
+ nickname = models.CharField(_("Nickname"), max_length=50, blank=True)
103
103
  else:
104
104
  nickname = dd.DummyField()
105
105
  first_name = models.CharField(_("First name"), max_length=30, blank=True)
@@ -144,7 +144,7 @@ class User(AbstractBaseUser, Contactable, CreatedModified, Publishable, DateRang
144
144
  my_settings = MySettings()
145
145
 
146
146
  def __str__(self):
147
- return self.nickname if self.nickname else self.get_full_name()
147
+ return self.nickname or self.get_full_name()
148
148
 
149
149
  @property
150
150
  def is_active(self):
@@ -29,6 +29,8 @@ class Plugin(ad.Plugin):
29
29
 
30
30
  verbose_name = _("WeasyPrint")
31
31
 
32
+ needs_plugins = ["lino.modlib.jinja"]
33
+
32
34
  header_height = 20
33
35
  """Height of header in mm. Set to `None` if you want no header."""
34
36
 
lino/utils/__init__.py CHANGED
@@ -67,7 +67,7 @@ from urllib.parse import urlencode
67
67
  # import locale
68
68
  import dateparser
69
69
  from io import StringIO
70
- import contextlib
70
+ from contextlib import redirect_stdout, contextmanager
71
71
  from pathlib import Path
72
72
 
73
73
  from etgen.utils import join_elems
@@ -77,13 +77,6 @@ from lino.utils.code import codefiles, codetime
77
77
 
78
78
  from rstgen.utils import confirm, i2d, i2t
79
79
 
80
- try:
81
- import lino_book
82
- DEMO_DATA = Path(lino_book.__file__).parent.parent.absolute() / 'demo_data'
83
- """The root directory with demo data included in the Developer Guide."""
84
- except ImportError:
85
- DEMO_DATA = None
86
-
87
80
  DATE_TO_DIR_TPL = "%Y/%m"
88
81
 
89
82
  def read_exception(excinfo):
@@ -366,6 +359,12 @@ curry = lambda func, *args, **kw: lambda *p, **n: func(
366
359
  *args + p, **dict(list(kw.items()) + list(n.items()))
367
360
  )
368
361
 
362
+ def capture_output(func, *args, **kwargs):
363
+ s = StringIO()
364
+ with redirect_stdout(s):
365
+ func(*args, **kwargs)
366
+ return s.getvalue()
367
+
369
368
 
370
369
  class IncompleteDate(object):
371
370
  """Naive representation of a potentially incomplete gregorian date.
@@ -694,7 +693,7 @@ class MissingRow:
694
693
  return "MissingRow({!r})".format(self.message)
695
694
 
696
695
 
697
- @contextlib.contextmanager
696
+ @contextmanager
698
697
  def logging_disabled(level):
699
698
  try:
700
699
  logging.disable(level)
lino/utils/djangotest.py CHANGED
@@ -20,6 +20,7 @@ from django.db import connection, reset_queries, connections, DEFAULT_DB_ALIAS
20
20
  from django.utils import translation
21
21
 
22
22
  from lino.utils import AttrDict
23
+ from lino.api import rt
23
24
  from lino.core.signals import testcase_setup # , database_ready
24
25
  from lino.core.callbacks import applyCallbackChoice
25
26
  from .test import CommonTestCase
@@ -112,7 +113,7 @@ class DjangoManageTestCase(DjangoTestCase, CommonTestCase):
112
113
  the response's content (which is expected to contain a dict), convert
113
114
  this dict to an AttrDict before returning it.
114
115
  """
115
- ar = settings.SITE.login(username)
116
+ ar = rt.login(username)
116
117
  self.client.force_login(ar.user)
117
118
  extra[settings.SITE.remote_user_header] = username
118
119
  # extra.update(REMOTE_USER=username)
lino/utils/html.py CHANGED
@@ -14,6 +14,7 @@ from html2text import HTML2Text
14
14
  from django.utils.html import SafeString, mark_safe, escape
15
15
  # from lino.utils import tostring
16
16
 
17
+ SAFE_EMPTY = mark_safe("")
17
18
 
18
19
  def html2text(html, **kwargs):
19
20
  """
@@ -69,3 +70,33 @@ def assert_safe(s):
69
70
  if not isinstance(s, SafeString):
70
71
  raise Exception("%r is not a safe string" % s)
71
72
  # assert isinstance(s, SafeString)
73
+
74
+
75
+ class Grouper:
76
+
77
+ def __init__(self, ar):
78
+ self.ar = ar
79
+ if ar.actor.group_by is None: return
80
+ self.last_values = [None for f in ar.actor.group_by]
81
+
82
+ def begin(self):
83
+ if self.ar.actor.group_by is None: return SAFE_EMPTY
84
+ return SAFE_EMPTY
85
+
86
+ def stop(self):
87
+ if self.ar.actor.group_by is None: return SAFE_EMPTY
88
+ return SAFE_EMPTY
89
+
90
+ def before_row(self, obj):
91
+ if self.ar.actor.group_by is None: return SAFE_EMPTY
92
+ self.current_values = [f(obj) for f in self.ar.actor.group_by]
93
+ if self.current_values == self.last_values:
94
+ return SAFE_EMPTY
95
+ return self.ar.actor.before_group_change(self, obj)
96
+
97
+ def after_row(self, obj):
98
+ if self.ar.actor.group_by is None: return SAFE_EMPTY
99
+ if self.current_values == self.last_values:
100
+ return SAFE_EMPTY
101
+ self.last_values = self.current_values
102
+ return self.ar.actor.after_group_change(self, obj)
lino/utils/ranges.py CHANGED
@@ -1,5 +1,5 @@
1
1
  # -*- coding: UTF-8 -*-
2
- # Copyright 2009-2021 Luc Saffre
2
+ # Copyright 2009-2024 Rumma & Ko Ltd
3
3
  # License: GNU Affero General Public License v3 (see file COPYING for details)
4
4
  """The :mod:`lino.utils.ranges` module contains utility methods for
5
5
  working with "ranges".
@@ -76,10 +76,10 @@ def overlap(a1, a2, b1, b2):
76
76
  works with integers or other comparable values. The following
77
77
  examples use integer values to be more readable.
78
78
 
79
- Unlike the test presented at
80
- <http://bytes.com/topic/python/answers/457949-determing-whether-two-ranges-overlap>,
81
- this works also with "open" ranges (the open end being indicated
82
- by a `None` value).
79
+ Unlike the test presented in `Determing whether two ranges overlap
80
+ <https://post.bytes.com/forum/topic/python/398735-determing-whether-two-ranges-overlap?t=457949>`__,
81
+ this works also with "open" ranges (the open end being indicated by a `None`
82
+ value).
83
83
 
84
84
  Types of constellations::
85
85
 
@@ -129,13 +129,3 @@ def overlap(a1, a2, b1, b2):
129
129
  else:
130
130
  return True
131
131
  return True
132
-
133
-
134
- def _test():
135
- import doctest
136
-
137
- doctest.testmod()
138
-
139
-
140
- if __name__ == "__main__":
141
- _test()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: lino
3
- Version: 24.10.2
3
+ Version: 24.11.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,20 +1,20 @@
1
1
  lino/.cvsignore,sha256=1vrrWoP-WD8hPfCszHHIiJEi8KUMRCt5WvoKB9TSB1k,28
2
2
  lino/SciTEDirectory.properties,sha256=rCYi_e-6h8Yx5DwXhAa6MBPlVINcl6Vv9BQDYZV2_go,28
3
- lino/__init__.py,sha256=ISO_sqTgmyY5do7wrEc2SMiswT8DTnaL49JbqPkWny0,5585
3
+ lino/__init__.py,sha256=MHSz5gGLMfmmsJTpiztXguNcqTY9HY5VfQRsfDpnHdo,5585
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=gZq8EJfReHB8Z5jKFFOr1pjDRODm7FVkHC8IRA7gq3w,89104
7
+ lino/help_texts.py,sha256=6-N7j4so8mtwS1-15DHRqjj2ot7-FA3fotZpIXW-H-c,90605
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=LHooukTaNuxAbhtSdvDNVbI7nkxeU-QTp5Dfz00bmjk,7764
11
- lino/api/doctest.py,sha256=fJ97w6rOO7AdlZ5DmgSHuIq-2LfOIbLT_mmslCdI2do,25561
12
- lino/api/rt.py,sha256=auN4YoIthkXsjSN09OR6YeaNxSNfUO7E5KyTAvQtjh8,1400
10
+ lino/api/dd.py,sha256=-mjuoflZilnFM97we-N1H_sEf1TQiNs62JwZ5m4XV1s,7813
11
+ lino/api/doctest.py,sha256=cDnnkvci-6K2evlaJ6ih6BopiSEYhchN7Y2UhmyIdNE,25575
12
+ lino/api/rt.py,sha256=WX0I7oOJIFtqN1JXK1sVC_OmByY5hct4lDIaELDFkgs,1378
13
13
  lino/api/selenium.py,sha256=07BQuC6KW2tBUlIUcPGeCQHIfogz-wuHJqPshSzLDp0,9384
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
17
- lino/config/admin_main_base.html,sha256=T3THZ03rVOeurXntJI6x1aWkEawsOzApPuiRV039kmI,3967
17
+ lino/config/admin_main_base.html,sha256=J_686VOAe9MBpDEwVovwhCSvr7zhK877bME9BhvBkSk,3969
18
18
  lino/config/apps.html.tmpl,sha256=UxRVdZq1BEVJWD77_mhxIB4ILenVO_Ml-w3LgumG22Y,696
19
19
  lino/config/letter_margin_bottom.html,sha256=BzASupSu5l49EGrPFpUcrK4DDm_sijoOd28HC8kmpBg,66
20
20
  lino/config/letter_margin_top.html,sha256=mTKb62bWXX0rH9FyIrwJUmptJmoC8_ZATxGUm0YW4RI,216
@@ -29,44 +29,44 @@ 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=iiuEI-MWDCQm7gVZXUP_Xj6pUIoHTEiY7v94n9d6sMs,46435
32
- lino/core/actors.py,sha256=4YvHneEinZDqkpiUYR8pChQtOovuTwpVgTRPxa9URIA,71762
32
+ lino/core/actors.py,sha256=_3v_ERlDugVPNKhI1rZq2jUeAElXUy7X-6DWl5o6eFY,72983
33
33
  lino/core/boundaction.py,sha256=tb0C4WwbJpAP3yKbR6OaibzcAkwVs3nfeuD0RjXTjIg,6665
34
34
  lino/core/callbacks.py,sha256=xkosb1l48o6WeSdj82k5udK9OmjI7-p6x4AJFjXiOf8,7518
35
- lino/core/choicelists.py,sha256=cg58Czjr5CkmI3nxvf-usvXlgrUAMsKA4nk6IypoaU4,36513
35
+ lino/core/choicelists.py,sha256=8FpmfEREj0jITkx3qihjPfg8pPMBHWXprNfuje4b7N4,36525
36
36
  lino/core/classproperty.py,sha256=_E95WPAs7BWbAuFpPvoYM2ZwW_mbq3rvF7o43WsMq_8,4316
37
37
  lino/core/constants.py,sha256=chvG1TrwD2gVMmL4nTOZtO8NcffcclcUv3zBE8mMoiQ,4503
38
- lino/core/dashboard.py,sha256=jNPLaaR2ZZx6oqwWp0rRhZapuyTVBb7-AtxoF__tgPE,6429
39
- lino/core/dbtables.py,sha256=k5fZUUZWbtXldIdGiTkGj9U5DYmsKMQyny7gmowLfRA,29174
38
+ lino/core/dashboard.py,sha256=p7EevOgKfyq4I_xs5ToXK_MhoivE-tky9YU4-zzGNMg,6514
39
+ lino/core/dbtables.py,sha256=VhU2mLir_oQAZg7CEazKogx2t0A3ynnx3pirAWsgXw0,29180
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=E_88KAmjtOGkH3tgj58CzyN2-7hOpRfv2ZeNB-uBfZU,108340
43
+ lino/core/elems.py,sha256=wgRDDDHlEjN1el37Mgt8yvsLlLNgunr4_vSA4iFLsUM,108454
44
44
  lino/core/exceptions.py,sha256=QDxDo5cllSyXQ8VWet9hGXzNadxCOmwMVrFXc6V-vpE,665
45
- lino/core/fields.py,sha256=RUzDXJUDXhlEjQ2GE3ntiLyQTVWEs9EBmYvsj-aUxvI,56690
45
+ lino/core/fields.py,sha256=ZszdQdV-aeHzG4f7v9Z9AIOu-w4Omy8fNun0sm_a_no,56973
46
46
  lino/core/frames.py,sha256=ISxgq9zyZfqW3tDZMWdKi9Ij455lT_81qBH0xex0bfE,1161
47
47
  lino/core/gfks.py,sha256=6VXn2FSIXOrwVq0stfbPevT37EWg1tg4Fn-HMNVnbmk,1970
48
48
  lino/core/help.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
49
  lino/core/inject.py,sha256=1ekriy-y5BjmQQZuor2Sh7yOC5ffevGQK4lFE31o5GY,13170
50
- lino/core/kernel.py,sha256=Uty6O_CY3w76bbWpP71Q7rEoLn_PSIjB8N7vbRtd5M8,48052
50
+ lino/core/kernel.py,sha256=Oo9iw2EVDlGdmJO7Nr1FG16no7Dzyvnx4sU2VPCfJl0,48041
51
51
  lino/core/keyboard.py,sha256=imdO-J5npZijtddhM2C7CLo2K6Hp30egsXgOOa4-AqQ,1137
52
- lino/core/layouts.py,sha256=mr9iJs12GDeI6lBHsnVl0JKh5v1Vtu5tWIY865Lv62g,28528
52
+ lino/core/layouts.py,sha256=vMoSwgNK-G4vOF5pcs5OhS73Q3YOvuVlCC1LgoIzb-Y,28509
53
53
  lino/core/menus.py,sha256=BoPtcqtTB1-ADp3ffnzEXyIx8lQ4HLaZWxo0eQrj-T4,10850
54
54
  lino/core/merge.py,sha256=sKtTeZtHdoDKerdHj4NXuXXNzpKDsfdPaiq-CY0NqQc,9094
55
- lino/core/model.py,sha256=RprrvQINUWJEgofovrRSdR5e9QH-8dd2hBVbnpjHwTg,36930
55
+ lino/core/model.py,sha256=jykhugQZsOJp1H8WiQI-y6QcS6HebPb6NegDiHh4Sxg,36654
56
56
  lino/core/permissions.py,sha256=Fnemz3NwWz21X0YATI9Q7ba2FcAdg-EMLHjIcbt_AVU,6840
57
- lino/core/plugin.py,sha256=xht9x4oXH3cvPm5jg8J5beajf5-B1PP4v0X9RW7d944,6790
58
- lino/core/renderer.py,sha256=krgD8T_dCoQWUXw7aDQNW3S-f6vqB0Du1YpZyO-QB-w,47248
59
- lino/core/requests.py,sha256=ZLsiyAI2zNt65nWV3ebrnZWaqarTpZSyS31ba7_a_9A,92177
57
+ lino/core/plugin.py,sha256=oVvTsGoBBYmjvRgtyiFPIiHZQErH0ZlNjiUFtOk2dOM,6834
58
+ lino/core/renderer.py,sha256=TcgqZPK17GUnuGLvSSnbCHbSh-4ZAf0prRIpdQYKX44,47319
59
+ lino/core/requests.py,sha256=rYz6O5Htw5icyQAqnLF5-jiHRKIeI6dAgTAM-N9_KeQ,93599
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=sUuyTNi9IvJ-BwOW1LbAiRKmAE0xOYpHlJqsDH_ID5E,85443
63
- lino/core/store.py,sha256=uMza9XRX3QeIRCWwBOK9w-4pyjruWtJCfSqOV4_kdgA,51338
64
- lino/core/tables.py,sha256=FfA3KhGshsR1maNB6B11BbJ4m8cxxIaOhV0jvMxTaJA,25468
62
+ lino/core/site.py,sha256=ITlfJFISW8rLTOdp66eQctnJkKIYmYHr-TX4xTpU6JE,84038
63
+ lino/core/store.py,sha256=FU7z6Xim3yOrxDLGnUN4ySUqPvyi4at3pnds2TUiHD4,51333
64
+ lino/core/tables.py,sha256=ArW3TdmbewZl7Z_EIC4ODxRZecx-BYA68LJ04gAp58Y,24855
65
65
  lino/core/urls.py,sha256=06QlmN1vpxjmb5snO3SPpP6lX1pMdE60bTiBiC77_vQ,2677
66
66
  lino/core/user_types.py,sha256=0iSYmzr2M9v2Mn2y6hzAZeqareUT-gD7l3MfIPyG9ZI,867
67
67
  lino/core/userprefs.py,sha256=cmufIS9xJErKDrw05uoWtQTUR6WRWIGkU1KdAqzNr5M,2850
68
- lino/core/utils.py,sha256=3JgByh5KIG-WM_JMkZpFEot-HAh6wV7jR2YfVeDl48o,34540
69
- lino/core/views.py,sha256=b7q9XOjl8nkBV-ZRcR-swFjcC9BGyanRYM2CsB_A5xc,6959
68
+ lino/core/utils.py,sha256=xGK5RKNt9FFk65GBHQWNJwlgspx_GSBOatKY5zUHFKI,36242
69
+ lino/core/views.py,sha256=V2ZJA2TRSssXvJz0UbK6uQCJ6nfOGm7bpdZFKNmmsNI,7021
70
70
  lino/core/widgets.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
71
  lino/core/workflows.py,sha256=9O5INnx3nPW73UmeEPWgN146clQSWwna3Jq_w1MThcg,10567
72
72
  lino/core/auth/__init__.py,sha256=gbO35DCpyHQV9zjV1l349HQMME9-YgQ1h4amVOHywAc,9832
@@ -113,17 +113,17 @@ lino/management/commands/prep.py,sha256=d0Pe6vyV9LImj3XBZvyGn6C3W9AFkd74wCfuYKeb
113
113
  lino/management/commands/qtclient.py,sha256=ltZyz-SmIevotRmv26TmPiW8VTXKK37DUwdwwMUzrHI,4715
114
114
  lino/management/commands/resetsequences.py,sha256=v7MdzJCw-rBXljttCsgoMIi-cgubCPptXDlcNO0pCjw,978
115
115
  lino/management/commands/run.py,sha256=MiK53KIACYKDTKF6knJGwU-uzEApGnDxByi-3_nrTjQ,1115
116
- lino/management/commands/show.py,sha256=5H5pzccRJNZXhp-shFsHqSsno4GDBAtaOaF1E7XvYXs,1461
116
+ lino/management/commands/show.py,sha256=dS_TotAEeH8zo_wufQgca6q0Yj9qeWsJUOUcss6YD7E,1439
117
117
  lino/management/commands/syncscreenshots.py,sha256=XYZhqfm5_RwJzVFNGhHJKucl4j6T6mYo2GsDaUzvjAs,1561
118
118
  lino/management/commands/update_conf.py,sha256=saAaQdPhn3mNOoHcBxOFSf_vBEgM-aopTHq1sJN20Bo,1026
119
119
  lino/mixins/__init__.py,sha256=cSFXzy8i0Akp9PmUSJz8E5t3twO3Z2lyCTyTCEqAQSU,8931
120
120
  lino/mixins/dupable.py,sha256=lk1Lgqae1PXRP1Ej6AKg5n3tG1MLYu7Ww1Qy5kb46_E,10092
121
121
  lino/mixins/duplicable.py,sha256=lQ5SEQmxPcOU9vETocgQI41uzgvunvXIy7HAnPeKDUI,4224
122
122
  lino/mixins/human.py,sha256=YDIfIHHAaVmzd3uGsJp_vDvkaBWOp09I7i4AGNy9YsQ,13255
123
- lino/mixins/periods.py,sha256=zEK9OiwTMVZX3vpy-viByRrBDNN6OgQFb4sdQmOxjow,11280
124
- lino/mixins/polymorphic.py,sha256=jzpfnzdDChvh1Ua16mdCQQOmoG-7Zyz69UOpcdqIiSA,9391
123
+ lino/mixins/periods.py,sha256=5P-BlCX4-s5-K9s_GxEipILBHI7wrAfHbeXTX7t2VxY,11483
124
+ lino/mixins/polymorphic.py,sha256=MLbfOeIYRoDZO4048X2oWhG5cxds2pLkwciXcw1xjVQ,9393
125
125
  lino/mixins/printable.py,sha256=4U8M1lrTjUeuaPwrcWoanCBo53iAxiNpSTsVctI-gI0,199
126
- lino/mixins/ref.py,sha256=gMWewqZjydq02LRDYY30t5EDWBbtecCOAoVU5IX1ayc,5249
126
+ lino/mixins/ref.py,sha256=ZnyTcpHgcbYwDwgaBwLc5cGLQqz8MmjAypSEgPB7Ql4,5272
127
127
  lino/mixins/registrable.py,sha256=0m68YGlipRhE83IsEvXATZtvyxtMsH-Dpd5TGZh_GzE,6936
128
128
  lino/mixins/sequenced.py,sha256=E1ETBpe10FLpdGGej3mP5Lr1haY1aAwHUiYcR3yK-rs,16012
129
129
  lino/mixins/uploadable.py,sha256=OAzQk0tatGDxJ6Mf9f9EoMzLcvIfIPFBSiN2ohu7sGc,105
@@ -163,7 +163,7 @@ lino/modlib/bootstrap3/static/bootstrap-3.3.4/js/npm.js,sha256=x6qCoap9RSJKONkm0
163
163
  lino/modlib/changes/__init__.py,sha256=3-CO7xI-U-rKDu_-WJg7N4FaIgqmFcj81uzyQlNYrFE,1414
164
164
  lino/modlib/changes/models.py,sha256=kx3BGV82VWu1rA9N393zjPpPvy-k55NbOvV7KI1gfYc,9340
165
165
  lino/modlib/changes/utils.py,sha256=4jz8QXgaBxfmCBUvDeZeh7lkdwfTq7OBXBiFhMmANqA,2550
166
- lino/modlib/checkdata/__init__.py,sha256=_AHks-zcoEaiZ4u4J4V3bmGKKDQimQg27g8RqRfUnNY,2782
166
+ lino/modlib/checkdata/__init__.py,sha256=mY8cISly6p1m6m54Ic_VNrdzZ55X95J8poUmux53IIg,2795
167
167
  lino/modlib/checkdata/choicelists.py,sha256=kJBzlojZ05ZqahlopolRwsuNH5M99A7euRgE9K_h2ak,5135
168
168
  lino/modlib/checkdata/models.py,sha256=Z4hJ9Q7ox2ovLDHlX1MGwi-WfRkB4JQpMl6usPGMidg,11547
169
169
  lino/modlib/checkdata/roles.py,sha256=xjQ882-BxYUoHbv2pzebs7MWl6snA2fKivFDTRzW7sQ,295
@@ -189,7 +189,7 @@ lino/modlib/dupable/models.py,sha256=2U27MEXyMydFLDjPK4fnYLFT9j9QJPImyoHEVlpWZGA
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
191
  lino/modlib/extjs/__init__.py,sha256=-TfGa8YR8SWuCHkZ2_pFNVBfOhvVfL5ec4zz6_TWeo4,10170
192
- lino/modlib/extjs/ext_renderer.py,sha256=MwvTVZ84pHVoXv1sWG60kkQ3LCbzAdHdZxdEg7BjQPg,60606
192
+ lino/modlib/extjs/ext_renderer.py,sha256=SwfikRmAi1FbDXQLsWNgzgkGqIePwL0UTLgQbb05pOE,60600
193
193
  lino/modlib/extjs/views.py,sha256=hR5h3bcKEjDjSgFj5-gpkfAhnYccy0J9INdqegyBeVQ,22644
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
@@ -3525,15 +3525,15 @@ lino/modlib/jinja/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
3525
3525
  lino/modlib/jinja/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3526
3526
  lino/modlib/jinja/management/commands/showsettings.py,sha256=nM5PNWXzbNdhnyH1b05iB__qwBdtPJ14T-Gt5jqGkww,452
3527
3527
  lino/modlib/jinja/management/commands/status.py,sha256=REApUMUqYgQY_50RwfAFbFBGXmn4UZGtLJMOncmOQHg,609
3528
- lino/modlib/languages/__init__.py,sha256=xKTD2jBZ2Dy5iScnPDH9L035bKmlkixifQ4DOKpl__0,1005
3529
- lino/modlib/languages/models.py,sha256=LiEGV_XNR5xy-eIHYIH-GHVmyFJ4ovK2wz4eCv2KhCY,806
3528
+ lino/modlib/languages/__init__.py,sha256=RUPzAiUVGuJXBWVWSomkbMm-f5OXBagZShfx4UyaUIw,1008
3529
+ lino/modlib/languages/models.py,sha256=tHF14XZKwx1te3DLbdsdogFLeyLuCWz_WExA-OU6VFo,810
3530
3530
  lino/modlib/languages/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3531
3531
  lino/modlib/languages/fixtures/all_languages.py,sha256=L_EmmcLVPKXcFB8uJITN3rWxNJ43CVNTKj5nbSXPK54,20941
3532
3532
  lino/modlib/languages/fixtures/few_languages.py,sha256=nhhfS4bV9x2yvtGlWFX5j7pC40-c31bFInGvlHxmT4Y,846
3533
3533
  lino/modlib/languages/fixtures/iso-639-3_20100707.tab,sha256=u8PwI2s8shy0_Val5-sa76Nll5FEtGi6_lAZevC-syY,180479
3534
3534
  lino/modlib/linod/__init__.py,sha256=u2XCoHtoGwEpMDLfRnGYxj49s4DWng7vOjRrkS57F00,2607
3535
3535
  lino/modlib/linod/choicelists.py,sha256=Tq3hoK7wHZXR8QruaSkAo1e8vE5qEy1bh5xrb8cPkyw,2147
3536
- lino/modlib/linod/consumers.py,sha256=5MfY6Y3bXoBH6TKSbXk9Lxtjbql8ns1MXoRgyQ9ib7E,6484
3536
+ lino/modlib/linod/consumers.py,sha256=NMzuLwNDPFyWNtqXXEyDQ3lyoUWniyoVWbRr7URazCM,6451
3537
3537
  lino/modlib/linod/mixins.py,sha256=duVswqXxDgyvjuf95gUAlAy4UmnJ8GzVYe96iGLmpUg,9971
3538
3538
  lino/modlib/linod/models.py,sha256=n3HhwDJr3fLdD3PHLZyeF4wBrfC2CWY_UdsC3Acuv7U,2295
3539
3539
  lino/modlib/linod/routing.py,sha256=FiG0JVqp9TWWkNpl9Y_50UCAJ7ZEImDXkQUhlg4aGL4,2094
@@ -3542,7 +3542,7 @@ lino/modlib/linod/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
3542
3542
  lino/modlib/linod/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3543
3543
  lino/modlib/linod/management/commands/linod.py,sha256=9-zRm-Xgp3uWj6AlDZpjtzo_TqSPyxIkKIrI_jshxVI,3457
3544
3544
  lino/modlib/memo/__init__.py,sha256=JEfB1Zb31d32gjfx7AQRBYwb4Z6YARc3hyRkYcRPaEk,5245
3545
- lino/modlib/memo/mixins.py,sha256=QOvbGguhjT-87K7p0hcC4kMsPHGlDmSyFdBOTEuvZ7s,16649
3545
+ lino/modlib/memo/mixins.py,sha256=eKZqMhUcajBurrYlKFDmPJvBZEO6L82utp3dkW5Tl3o,16639
3546
3546
  lino/modlib/memo/models.py,sha256=YHwzh0YVAVuAruHRTw1nEJBuFGbICb88F5uqw0Y9ams,1833
3547
3547
  lino/modlib/memo/parser.py,sha256=g3ImxhMRMTnr_9TNaW2tZSv6VehlLguxAKzkqpr_Zb4,12831
3548
3548
  lino/modlib/memo/views.py,sha256=H3g_nuiMzguptXLSWaWLJClU7BefXPFn9Rh8UIVVBeg,555
@@ -3572,8 +3572,12 @@ lino/modlib/odata/views.py,sha256=ssyYYIyGoxXtR3hKnIa-ZBPLb6vxEU5C6XUUQ1L6Z70,72
3572
3572
  lino/modlib/odata/config/odata/csdl.xml,sha256=KFDImzUA4YI6PL-i5AHnm22eBMLTw-K2iljslDJFQH8,296
3573
3573
  lino/modlib/office/__init__.py,sha256=rOKD9zKt-VBvFFqoHBioNp299Igb1Sk2n466iCt6ASQ,287
3574
3574
  lino/modlib/office/roles.py,sha256=oQWTZ-_9_vssc9QW5A0YspMjG_V5gCiHSU0eE0AIH30,356
3575
+ lino/modlib/periods/__init__.py,sha256=MFTI4YTYw3zTxYVlD568rBxn02e_J9Yn10uZ6U5W-uQ,1069
3576
+ lino/modlib/periods/mixins.py,sha256=IEjeeenFJD9HItK2n1wmsz1KTC9apFb1u87Mz-bhlY4,4266
3577
+ lino/modlib/periods/models.py,sha256=u1OKkRzoBWPx0767GxSt9qeU_rWbfzRe0e6K4jpE9X0,7976
3578
+ lino/modlib/periods/fixtures/std.py,sha256=iV6a2DNAhfYvO1VspGkcncEmygHK94zWdDZlHUY8JSw,881
3575
3579
  lino/modlib/printing/__init__.py,sha256=u1fq44d073-IDH_t8hWs1sQdlAHdsCP85sfEOMSW5L4,689
3576
- lino/modlib/printing/actions.py,sha256=ud56ri8NAK0U8d8vVrhv-GTE8WD8jiUidpdXGrmVPlA,11632
3580
+ lino/modlib/printing/actions.py,sha256=CME19ZC6lYWO5qGoVX1b8P4q_wHSwvV19ELKEquMLJs,11704
3577
3581
  lino/modlib/printing/choicelists.py,sha256=KzcFD-WjXIXiqLY-gVuuOvE0pueJuV7t5IMgUb4I2P0,9607
3578
3582
  lino/modlib/printing/mixins.py,sha256=XjcY5brF_1GxsECLCdOys7YBvUA4NNcGmpKAv3Q508k,8269
3579
3583
  lino/modlib/printing/models.py,sha256=fd-BEKSLpgxPnkh9U7fg2tjNy39exBi3xJC9VzJuXdU,185
@@ -3585,7 +3589,7 @@ lino/modlib/publisher/choicelists.py,sha256=ujxfoZbiI7F3BXnCQr2nHUGar_oToQlqNYvC
3585
3589
  lino/modlib/publisher/mixins.py,sha256=eMEZeMQdaEp9tDkA5_YdqFGQec1q7Z1DAJZvU1cmoRM,6229
3586
3590
  lino/modlib/publisher/models.py,sha256=dkSy_EaHge0iKZ2-lUIIOdBnLyiIx7CPyO5RxGAmFxY,14388
3587
3591
  lino/modlib/publisher/renderer.py,sha256=9RoyVMQcbwh_GcbDJO8BWhCKe1kpbDc9M45hrMqzpNs,1922
3588
- lino/modlib/publisher/ui.py,sha256=VcxHwefC-u1RcMylu0Zv4hHVPD7m1b1WLIQh9jcQGO8,4434
3592
+ lino/modlib/publisher/ui.py,sha256=Evh97oxIut8FMyEzy8KFfNFEsNbVeKb7s1Fy3hOJOWk,4451
3589
3593
  lino/modlib/publisher/views.py,sha256=OCbvBdEP7ELorHsCTnhJa6PtSIcuHONKjq24bnUyiaQ,2135
3590
3594
  lino/modlib/publisher/config/publisher/base.html,sha256=nrWuN4lhP1O4ORdYTaY3fS2pc90yfUnfDYfm2Jtr7hQ,198
3591
3595
  lino/modlib/publisher/config/publisher/default_list.pub.html,sha256=3ePc4U3xZxE-pqtzlnB9CRQWu8OQrtfXKEjyuc8BBUQ,578
@@ -3627,11 +3631,11 @@ lino/modlib/summaries/fixtures/checksummaries.py,sha256=GVqOT47RC6PMzGygssaiAalL
3627
3631
  lino/modlib/summaries/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3628
3632
  lino/modlib/summaries/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3629
3633
  lino/modlib/summaries/management/commands/checksummaries.py,sha256=hNEGFcZmbGFpL_H6aKAkdhL_Gw_mE8l-C2NYHvH4Bvo,839
3630
- lino/modlib/system/__init__.py,sha256=1xFxgFTVzO63yipRjliyEgvzGABBErWq-J1xhVgD5Ws,1522
3634
+ lino/modlib/system/__init__.py,sha256=bQAH-7xTOl8PnYe3YIoOYHU_PAm7mAQebHQAMylWD1M,1520
3631
3635
  lino/modlib/system/actions.py,sha256=jmSYPQDvIQxDth8MaJ9GpkmSCufLGWjmAjKdHAIWE48,1126
3632
- lino/modlib/system/choicelists.py,sha256=6-RDIYCblmugamG3a-01lGR-4UFajAwEXjNOkdODHNg,6724
3636
+ lino/modlib/system/choicelists.py,sha256=D3WYN2bS1ZGfQutmN9_OwU0eJRdFbFppbMV6c8LruJA,8595
3633
3637
  lino/modlib/system/mixins.py,sha256=GuzLCv-PcQCdXysla2yeONkWoSxS6r9BUkolvFXsJHU,18994
3634
- lino/modlib/system/models.py,sha256=Ag9J6lldD0yOXF_oaCkCu8eurTmNF7-T441hVRITwJg,11384
3638
+ lino/modlib/system/models.py,sha256=p0o8NR4-2YVuui9foGM5QpEq-8ibHLs5vlCFPDdITcw,11402
3635
3639
  lino/modlib/tinymce/__init__.py,sha256=do3zN5Mo2ftsegHTV_KUVaHl44RJ8WHBSS4Jb7BExHs,4879
3636
3640
  lino/modlib/tinymce/models.py,sha256=ysA0QR2TYNZ6ZcAi3yh_qNZ-45z-ukeS3CagrsEtocs,1507
3637
3641
  lino/modlib/tinymce/views.py,sha256=_RWWVbtJ0m5n7v5tjJ2QK5DKdvHN6kBOuQ07KFYeICk,2006
@@ -4396,7 +4400,7 @@ lino/modlib/users/__init__.py,sha256=QHLCNKiRMyL14Iy2eiz7_y9fAwugnDCt4N0aKtIhFA8
4396
4400
  lino/modlib/users/actions.py,sha256=Nik2CoxKZWoGIsPT50mWESzHSTQx9WiBXWG64CUFyS8,18074
4397
4401
  lino/modlib/users/choicelists.py,sha256=-X76C1NxIs5e7rFHp5Z0kjJkA1NlOP2vdLKGkI2wZRU,3876
4398
4402
  lino/modlib/users/mixins.py,sha256=a67UJeqAjMAn0IGe6MOOsV-UwyNp2coOBeqPDawwmGU,14111
4399
- lino/modlib/users/models.py,sha256=B0YFqfO-2q-ryIiuvsYl0bjIM1iOiL0XVoTVM6l3giw,16618
4403
+ lino/modlib/users/models.py,sha256=2wTEBYe4rgFPSfwmeAy6loXtHLADjvJ6-Hc6609fhm4,16599
4400
4404
  lino/modlib/users/roles.py,sha256=yi29ELbWU1VtteGARaxetxmsCkZQHA2oJiD0dXujMiE,320
4401
4405
  lino/modlib/users/ui.py,sha256=IQ9Yhrn5vB2odfjqT0gaJrtHgTRGVM4HQpbo9h-BTsU,13161
4402
4406
  lino/modlib/users/utils.py,sha256=bD0DJZsUy59xw9N-tx3W_h30_R10GT2qXZVzYtGWMa8,1963
@@ -4408,7 +4412,7 @@ lino/modlib/users/fixtures/demo.py,sha256=YHPhvjqAh-V9WHgFct2GQlQATZmS-W3Nry-X6m
4408
4412
  lino/modlib/users/fixtures/demo2.py,sha256=4-toQfGIkJF8eROS1FgBxP6w-EiKOI7QBoHcIO2T0dw,420
4409
4413
  lino/modlib/users/fixtures/demo_users.py,sha256=FJz5gW95PbgxrPD8BMSVnpA8SJJSPWtjyi3LMdytd5o,1805
4410
4414
  lino/modlib/users/fixtures/std.py,sha256=Eo_TdqFC7NPryLeGRfp-nbOXw3hDqxTUpddFTxUuZ74,712
4411
- lino/modlib/weasyprint/__init__.py,sha256=63uWSgTzAevUWaa51NhFqCUqwiSudn3SS56Dg3G3DL0,2301
4415
+ lino/modlib/weasyprint/__init__.py,sha256=_kLw0xg5_ByLv4l5VvQbZjTtloTM4c9WrpfFgOGMPVc,2344
4412
4416
  lino/modlib/weasyprint/choicelists.py,sha256=mVebcN8KGHeUrvi21bjZtJ_1vImsjynNvKRy-GLQe7Y,1084
4413
4417
  lino/modlib/weasyprint/models.py,sha256=op6CRRBC8NatqGgGdQHU4zcVG4fu4mRS9Mz8STG3B3g,168
4414
4418
  lino/modlib/weasyprint/config/weasyprint/base.weasy.html,sha256=l6Xd4G7bBIcF4RsSMnYfM8tWkDwbdMLcijCMbchQXPw,4127
@@ -4586,7 +4590,7 @@ lino/templates_old/404.html,sha256=9O5EJgULwLws0X1LjNig3xT4l9Hw04MBIGswD-EAlnw,2
4586
4590
  lino/templates_old/500.html,sha256=inOR744w4FGJM_fCSQcnlk-OIYQpaBTxUQWgXQozon4,496
4587
4591
  lino/templates_old/base.html,sha256=qYqj5-u1UPtpatrFkqBr3MnwS0oFUXCyQRcuNZczDfk,1641
4588
4592
  lino/templates_old/base_site.html,sha256=NcLEk0kBT1b-SrhoGpDPUej7NExqJ9-dP1kbrvwBzrs,255
4589
- lino/utils/__init__.py,sha256=MZ6F1NxEDMKutXaD_kzLU0z_ujbd2wuK0_25k55NNUM,18292
4593
+ lino/utils/__init__.py,sha256=rUlCN33biBYkn97wSMbBsNMKAnl4qQULDNohtJnjmII,18239
4590
4594
  lino/utils/addressable.py,sha256=o7bmLbyvrmOoAT478s7XqjWKvnZ7zSXj4k7Xf0ccqf8,2213
4591
4595
  lino/utils/ajax.py,sha256=npCS0WumhTQlBzXxQPKnp2sYCRcPsYcbFqzE2ykVc4Q,3254
4592
4596
  lino/utils/choosers.py,sha256=OYOXMIw1yJ0oAKfGLF8lET4TU4E1Y_Ur4Bznhn5XZJo,17173
@@ -4599,10 +4603,10 @@ lino/utils/dates.py,sha256=eWF5WxA5uJf51Y9PKvDVBWD8yIf6yBF6oO6TeU3ujzw,1030
4599
4603
  lino/utils/dbfreader.py,sha256=oV-8yQZo6MZlb_Y2DZPGx3y8tDeRo2d8RWhZzz1i7E8,11805
4600
4604
  lino/utils/dblogger.py,sha256=kr0YxQY6veymvNg5A4tsvkqW8haRWdwqL0C-_9_QTg0,721
4601
4605
  lino/utils/diag.py,sha256=evkU818hZSGpWdL0Du11QakT5_frvc5z4C93IEBlECg,18307
4602
- lino/utils/djangotest.py,sha256=U_p__eAe1qVO_56kC2L-uRJ2aFIJGQl1eONQ19xo4Pc,8321
4606
+ lino/utils/djangotest.py,sha256=Phz1qNp0wDonZRja5dxbCk0Xl3a73gZNiKK8v9tAgZg,8334
4603
4607
  lino/utils/dpy.py,sha256=4bNIxc05bpJHa4--fo540yg7sUZ7x5QriSPzW2KwFWk,20190
4604
4608
  lino/utils/format_date.py,sha256=HZ3wbN-1OjhawYG8-w2_TwgT33yYDuUvU877j-3QX7Q,2888
4605
- lino/utils/html.py,sha256=wrTpGNdTfs4mveHOBs8UMxoWxiqo7OhJ5P5BQnesgwo,2127
4609
+ lino/utils/html.py,sha256=JfkEwfi9hwrvbXauiVQlQqgWck3GdXItP0tbcz8hXNA,3130
4606
4610
  lino/utils/html2odf.py,sha256=Hxw4HiIHY1ZCjb4_JLykVHbr6yAMhhHrnrCnLNDYKAs,4826
4607
4611
  lino/utils/html2xhtml.py,sha256=fvrIoLBFpiXtYO3UYaIgAIDjf6ATvrxolQX4etxS57Y,2119
4608
4612
  lino/utils/instantiator.py,sha256=EDOFYkCRapG9QzJpof7D6HLhOlIkk0I1uG0at-jK7_o,6709
@@ -4620,7 +4624,7 @@ lino/utils/pdf.py,sha256=caISmnrrADN1MTK_GIiasfkVUyqhTEuK9mtoMf_S7qU,688
4620
4624
  lino/utils/pythontest.py,sha256=AA9i3CEWgpbJKNTkxc0Gz94sy1R1MBpyinqrlahKKno,4954
4621
4625
  lino/utils/pyuca.py,sha256=YSLpCYEMqKUhx1y0q-ML8Ryu2ARDFO2HyIFxz1DzYEY,4344
4622
4626
  lino/utils/quantities.py,sha256=m_oi647uCTf2NhhQo6ytphZa2jQq1QXIUcts-cLkEJM,7367
4623
- lino/utils/ranges.py,sha256=gXMD3uZBobGnOfn8GXSJ40gtJ7UcxrIOOFWZCk--zXE,3343
4627
+ lino/utils/ranges.py,sha256=wVsZMe3dlaRYWWELXCGSK2DvjBfW4eLbAwpQVYqzj3g,3303
4624
4628
  lino/utils/report.py,sha256=5l1NkZpcZyd1zpg37MB4Doly9dH9KHBEFarp9Q6vh4w,7983
4625
4629
  lino/utils/requests.py,sha256=vXxsC51FK9FgrqmF9dy3MsmUqJINjSQ_4AmvBiQbGEk,1337
4626
4630
  lino/utils/restify.py,sha256=QMVQXrmjDl6PPC7HJJGeDm125pcvrZKvcMpiscaPrsw,14066
@@ -4639,8 +4643,8 @@ lino/utils/xml.py,sha256=4Z44W1e5HvTVrU8erkohgnwqY-5Cr2NHywaAJ5OgRvw,989
4639
4643
  lino/utils/mldbc/__init__.py,sha256=QqWRlzeXaOmFfbCk-vTY3SZMn1-FCf67XnpZdd_Nim0,1134
4640
4644
  lino/utils/mldbc/fields.py,sha256=tAX8G5UKigr9c6g0F3ARIjZZtg406mdaZ--PWSbiH9E,2873
4641
4645
  lino/utils/mldbc/mixins.py,sha256=CkYe5jDa7xp9fJq_V8zcZf8ocxgIjUgHc9KZccvA_Yw,1945
4642
- lino-24.10.2.dist-info/METADATA,sha256=ntU1BmW4OU6iHggi-NZO_PMuJVTb9oUJ6TSEG2NMagU,42535
4643
- lino-24.10.2.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
4644
- lino-24.10.2.dist-info/licenses/AUTHORS.rst,sha256=8VEm_G4HOmYEa4oi1nVoKKsdo4JanekEJCefWd2E8vk,981
4645
- lino-24.10.2.dist-info/licenses/COPYING,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
4646
- lino-24.10.2.dist-info/RECORD,,
4646
+ lino-24.11.0.dist-info/METADATA,sha256=lk0tOqOH9dzsp2cXjc0B5ZA9zi8-ibmnCygyZfhrmFY,42535
4647
+ lino-24.11.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
4648
+ lino-24.11.0.dist-info/licenses/AUTHORS.rst,sha256=8VEm_G4HOmYEa4oi1nVoKKsdo4JanekEJCefWd2E8vk,981
4649
+ lino-24.11.0.dist-info/licenses/COPYING,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
4650
+ lino-24.11.0.dist-info/RECORD,,
File without changes