lino 24.10.0__py3-none-any.whl → 24.10.2__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/core/store.py CHANGED
@@ -20,7 +20,7 @@ Other usages:
20
20
 
21
21
  - render tables as text
22
22
  (:meth:`lino.core.renderer.TextRenderer.show_table` and
23
- :meth:`lino.core.tablerequest.TableRequest.row2text`)
23
+ :meth:`lino.core.requests.ActionRequest.row2text`)
24
24
 
25
25
  """
26
26
 
@@ -45,11 +45,11 @@ from lino.core import fields
45
45
  from lino.core import actors
46
46
  from lino.core import actions
47
47
  from lino.core import frames
48
+ from lino.core.utils import PhantomRow
48
49
  from lino.utils import choosers
49
50
  from lino.utils import curry
50
51
  from lino.utils import iif
51
52
  from lino.utils.format_date import fds
52
- from lino.core.requests import PhantomRow
53
53
  from lino.utils import IncompleteDate
54
54
  from lino.core.utils import DelayedValue
55
55
 
@@ -861,7 +861,7 @@ class FileFieldStoreField(StoreField):
861
861
 
862
862
  class MethodStoreField(StoreField):
863
863
  """Deprecated. See `/blog/2012/0327`.
864
- Still used for display_mode 'html'.
864
+ Still used for DISPLAY_MODE_HTML.
865
865
  """
866
866
 
867
867
  def full_value_from_object(self, obj, ar=None):
@@ -870,7 +870,7 @@ class MethodStoreField(StoreField):
870
870
  self.name,
871
871
  unbound_meth.__code__.co_varnames,
872
872
  )
873
- # print self.field.name
873
+ # print(f"20241003 {self.field.name} {ar} full_value_from_object()")
874
874
  return unbound_meth(obj, ar)
875
875
 
876
876
  def value_from_object(self, obj, request=None):
@@ -879,7 +879,7 @@ class MethodStoreField(StoreField):
879
879
  self.name,
880
880
  unbound_meth.__code__.co_varnames,
881
881
  )
882
- # print self.field.name
882
+ # print(f"20241003 {self.field.name} value_from_object()")
883
883
  return unbound_meth(obj, request)
884
884
 
885
885
  # def obj2list(self,request,obj):
@@ -1413,7 +1413,7 @@ class Store(BaseStore):
1413
1413
  for fld in fields:
1414
1414
  if fld is None:
1415
1415
  continue
1416
- # logger.info("20140429 Store.row2dict %s", fld)
1416
+ # logger.info("20241003 Store.row2dict %s", fld)
1417
1417
  if fld.delayed_value:
1418
1418
  # self.actor.collect_extra_fields(fld)
1419
1419
  v = DelayedValue(ar, fld.name, row)
lino/core/tables.py CHANGED
@@ -22,7 +22,6 @@ from lino.core import actions
22
22
  from lino.core import fields
23
23
  from lino.core import constants
24
24
  from lino.core.utils import resolve_fields_list
25
- from lino.core.tablerequest import TableRequest
26
25
 
27
26
  # class InvalidRequest(Exception):
28
27
  # pass
@@ -230,7 +229,7 @@ class AbstractTable(actors.Actor):
230
229
  it. e.g. in case they need local filtering.
231
230
 
232
231
  This will be called with a
233
- :class:`lino.core.requests.TableRequest` object and is expected to
232
+ :class:`lino.core.requests.ActionRequest` object and is expected to
234
233
  return or yield the list of "rows"::
235
234
 
236
235
  @classmethod
@@ -642,19 +641,20 @@ method in order to sort the rows of the queryset.
642
641
 
643
642
  @classmethod
644
643
  def request(self, master_instance=None, **kw):
645
- """Return a new :class:`TableRequest
646
- <lino.core.tablerequest.TableRequest>` on this table.
644
+ """Return a new :class:`ActionRequest
645
+ <lino.core.requests.ActionRequest>` on this table.
647
646
 
648
- If this is a slave table, the :attr:`master_instance
649
- <lino.core.tablerequest.TableRequest.master_instance>` can be
647
+ The :attr:`master_instance
648
+ <lino.core.requests.ActionRequest.master_instance>` can be
650
649
  specified as optional first positional argument.
651
650
 
652
651
  """
652
+ from lino.core.requests import ActionRequest
653
653
  kw.update(actor=self)
654
654
  if master_instance is not None:
655
655
  kw.update(master_instance=master_instance)
656
656
  kw.setdefault("action", self.default_action)
657
- return TableRequest(**kw)
657
+ return ActionRequest(**kw)
658
658
 
659
659
  @classmethod
660
660
  def run_action_from_console(self, pk=None, an=None):
lino/core/utils.py CHANGED
@@ -953,3 +953,137 @@ def DelayedValue(ar, fieldname, obj):
953
953
  #
954
954
  # def __repr__(self):
955
955
  # return "DelayedValue({})".format(self.url)
956
+
957
+
958
+ class InstanceAction:
959
+ """
960
+ Volatile object that wraps a given action to be run on a given
961
+ model instance.
962
+
963
+ .. attribute:: bound_action
964
+
965
+ The bound action that will run.
966
+
967
+ .. attribute:: instance
968
+
969
+ The database object on which the action will run.
970
+
971
+ .. attribute:: owner
972
+
973
+
974
+ """
975
+
976
+ def __init__(self, action, actor, instance, owner):
977
+ # ~ print "Bar"
978
+ # ~ self.action = action
979
+ if actor is None:
980
+ actor = instance.get_default_table()
981
+ self.bound_action = actor.get_action_by_name(action.action_name)
982
+ if self.bound_action is None:
983
+ raise Exception("%s has not action %r" % (actor, action))
984
+ # Happened 20131020 from lino_xl.lib.beid.eid_info() :
985
+ # When `use_eid_jslib` was False, then
986
+ # `Action.attach_to_actor` returned False.
987
+ self.instance = instance
988
+ self.owner = owner
989
+
990
+ def __str__(self):
991
+ return "{0} on {1}".format(self.bound_action, obj2str(self.instance))
992
+
993
+ def run_from_code(self, ar, *args, **kw):
994
+ """
995
+ Probably to be deprecated.
996
+ Run this action on this instance in the given session, updating
997
+ the response of the session. Returns the return value of the
998
+ action.
999
+ """
1000
+ # raise Exception("20170129 is this still used?")
1001
+ ar.selected_rows = [self.instance]
1002
+ return self.bound_action.action.run_from_code(ar, *args, **kw)
1003
+
1004
+ def run_from_ui(self, ar, *args, **kwargs):
1005
+ """
1006
+ Run this action on this instance in the given session, updating
1007
+ the response of the session. Returns nothing.
1008
+ """
1009
+ # raise Exception("20170129 is this still used?")
1010
+ # kw.update(selected_rows=[self.instance])
1011
+ ar.selected_rows = [self.instance]
1012
+ self.bound_action.action.run_from_ui(ar, *args, **kwargs)
1013
+
1014
+ def request_from(self, ses, **kwargs):
1015
+ """
1016
+ Create an action request on this instance action without running
1017
+ the action.
1018
+ """
1019
+ kwargs.update(selected_rows=[self.instance])
1020
+ kwargs.update(parent=ses)
1021
+ ar = self.bound_action.request(**kwargs)
1022
+ return ar
1023
+
1024
+ def run_from_session(self, ses, **kwargs):
1025
+ """
1026
+ Run this instance action in a child request of given session.
1027
+
1028
+ Additional arguments are forwarded to the action.
1029
+ Returns the response of the child request.
1030
+ Doesn't modify response of parent request.
1031
+ """
1032
+ ar = self.request_from(ses, **kwargs)
1033
+ self.bound_action.action.run_from_code(ar)
1034
+ return ar.response
1035
+
1036
+ def __call__(self, *args, **kwargs):
1037
+ """
1038
+ Run this instance action in an anonymous base request.
1039
+
1040
+ Additional arguments are forwarded to the action.
1041
+ Returns the response of the base request.
1042
+ """
1043
+ if len(args) and isinstance(args[0], BaseRequest):
1044
+ raise ChangedAPI("20181004")
1045
+ ar = self.bound_action.request()
1046
+ self.run_from_code(ar, *args, **kwargs)
1047
+ return ar.response
1048
+
1049
+ def as_button_elem(self, ar, label=None, **kwargs):
1050
+ return settings.SITE.kernel.row_action_button(
1051
+ self.instance, ar, self.bound_action, label, **kwargs
1052
+ )
1053
+
1054
+ def as_button(self, *args, **kwargs):
1055
+ """Return a HTML chunk with a "button" which, when clicked, will
1056
+ execute this action on this instance. This is being used in
1057
+ the :ref:`lino.tutorial.polls`.
1058
+
1059
+ """
1060
+ return tostring(self.as_button_elem(*args, **kwargs))
1061
+
1062
+ def get_row_permission(self, ar):
1063
+ state = self.bound_action.actor.get_row_state(self.instance)
1064
+ # logger.info("20150202 ia.get_row_permission() %s using %s",
1065
+ # self, state)
1066
+ return self.bound_action.get_row_permission(ar, self.instance, state)
1067
+
1068
+
1069
+ class VirtualRow(object):
1070
+ def __init__(self, **kw):
1071
+ self.update(**kw)
1072
+
1073
+ def update(self, **kw):
1074
+ for k, v in list(kw.items()):
1075
+ setattr(self, k, v)
1076
+
1077
+ def get_row_permission(self, ar, state, ba):
1078
+ if ba.action.readonly:
1079
+ return True
1080
+ return False
1081
+
1082
+
1083
+ class PhantomRow(VirtualRow):
1084
+ def __init__(self, request, **kw):
1085
+ self._ar = request
1086
+ VirtualRow.__init__(self, **kw)
1087
+
1088
+ def __str__(self):
1089
+ return str(self._ar.get_action_title())
@@ -23,7 +23,7 @@ from lino.core import constants
23
23
 
24
24
  # from lino.core import auth
25
25
  from lino.core.requests import BaseRequest
26
- from lino.core.tablerequest import TableRequest
26
+ from lino.core.tables import AbstractTable
27
27
  from lino.core.views import action_request
28
28
  from lino.core.utils import navinfo
29
29
  from lino.utils.html import E, tostring
@@ -82,7 +82,7 @@ def table2html(ar, as_main=True):
82
82
  """Represent the given table request as an HTML table.
83
83
 
84
84
  `ar` is the request to be rendered, an instance of
85
- :class:`lino.core.tablerequest.TableRequest`.
85
+ :class:`lino.core.requests.ActionRequest`.
86
86
 
87
87
  The returned HTML enclosed in a ``<div>`` tag and generated using
88
88
  :mod:`etgen.html`.
@@ -191,7 +191,8 @@ class List(View):
191
191
  heading=ar.get_title(),
192
192
  )
193
193
 
194
- if isinstance(ar, TableRequest):
194
+ # if isinstance(ar, ActionRequest):
195
+ if ar .actor is not None and issubclass(ar.actor, AbstractTable):
195
196
  context.update(main=table2html(ar))
196
197
  else:
197
198
  context.update(main=layout2html(ar, None))
@@ -56,7 +56,8 @@ from lino.core.fields import choices_for_field
56
56
  from lino.core.views import requested_actor, action_request
57
57
  from lino.core.views import json_response, json_response_kw
58
58
  from lino.core.views import choices_response
59
- from lino.core.requests import BaseRequest, PhantomRow
59
+ from lino.core.requests import BaseRequest
60
+ from lino.core.utils import PhantomRow
60
61
 
61
62
  MAX_ROW_COUNT = 300
62
63
 
@@ -24,7 +24,7 @@ from lino.core import constants
24
24
 
25
25
  # from lino.core import auth
26
26
  from lino.core.requests import BaseRequest
27
- from lino.core.tablerequest import TableRequest
27
+ from lino.core.tables import AbstractTable
28
28
  from lino.core.views import action_request
29
29
  from lino.core.utils import navinfo
30
30
  from lino.utils.html import E, tostring
@@ -83,7 +83,7 @@ def table2html(ar, as_main=True):
83
83
  """Represent the given table request as an HTML table.
84
84
 
85
85
  `ar` is the request to be rendered, an instance of
86
- :class:`lino.core.tablerequest.TableRequest`.
86
+ :class:`lino.core.requests.ActionRequest`.
87
87
 
88
88
  The returned HTML enclosed in a ``<div>`` tag and generated using
89
89
  :mod:`etgen.html`.
@@ -173,7 +173,7 @@ class List(View):
173
173
  heading=ar.get_title(),
174
174
  )
175
175
 
176
- if isinstance(ar, TableRequest):
176
+ if ar.actor is not None and issubclass(ar.actor, AbstractTable):
177
177
  context.update(main=table2html(ar))
178
178
  else:
179
179
  context.update(main=layout2html(ar, None))
@@ -23,7 +23,7 @@ from lino.core import constants
23
23
 
24
24
  # from lino.core import auth
25
25
  from lino.core.requests import BaseRequest
26
- from lino.core.tablerequest import TableRequest
26
+ from lino.core.tables import AbstractTable
27
27
  from lino.core.views import action_request
28
28
  from lino.core.utils import navinfo
29
29
  from lino.modlib.bootstrap3.views import http_response
@@ -40,7 +40,7 @@ class List(View):
40
40
  heading=ar.get_title(),
41
41
  )
42
42
 
43
- if isinstance(ar, TableRequest):
43
+ if ar.actor is not None and issubclass(ar.actor, AbstractTable):
44
44
  context.update(main=table2html(ar))
45
45
  else:
46
46
  context.update(main=layout2html(ar, None))
@@ -40,7 +40,10 @@ class Element(View):
40
40
  ar = self.table_class.request(request=request, **kw)
41
41
  except ObjectDoesNotExist as e:
42
42
  # print("20240911", e)
43
- return http.HttpResponseNotFound(f"No row #{pk} in {self.table_class}")
43
+ return http.HttpResponseNotFound(f"No row #{pk} in {self.table_class} ({e})")
44
+ if len(ar.selected_rows) == 0:
45
+ # print(f"20241003 Oops {ar} has no rows")
46
+ return http.HttpResponseNotFound(f"20241003 No row #{pk} in {self.table_class}")
44
47
  obj = ar.selected_rows[0]
45
48
  return obj.get_publisher_response(ar)
46
49
 
lino/utils/report.py CHANGED
@@ -1,27 +1,20 @@
1
1
  # -*- coding: UTF-8 -*-
2
- # Copyright 2009-2022 Rumma & Ko Ltd
2
+ # Copyright 2009-2024 Rumma & Ko Ltd
3
3
  # License: GNU Affero General Public License v3 (see file COPYING for details)
4
4
  """
5
5
 
6
6
 
7
7
  """
8
- from __future__ import unicode_literals, print_function
9
- from builtins import str
10
8
 
11
9
  from django.conf import settings
12
10
 
13
- from lino.utils import curry
14
-
15
11
  from lino.core.frames import Frame
16
-
17
- from lino.core.requests import InstanceAction
18
- from lino.core.requests import VirtualRow
12
+ from lino.core.utils import InstanceAction, VirtualRow
19
13
  from lino.core.actions import ShowEmptyTable, Action
20
14
  from lino.core import fields
21
-
22
15
  from lino.modlib.printing.mixins import Printable
23
16
  from lino.modlib.printing.mixins import DirectPrintAction
24
-
17
+ from lino.utils import curry
25
18
  # from lino.modlib.printing.choicelists import SimpleBuildMethod
26
19
  from lino.utils.html import E
27
20
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: lino
3
- Version: 24.10.0
3
+ Version: 24.10.2
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,6 +1,6 @@
1
1
  lino/.cvsignore,sha256=1vrrWoP-WD8hPfCszHHIiJEi8KUMRCt5WvoKB9TSB1k,28
2
2
  lino/SciTEDirectory.properties,sha256=rCYi_e-6h8Yx5DwXhAa6MBPlVINcl6Vv9BQDYZV2_go,28
3
- lino/__init__.py,sha256=8tZlMckRns2Egq0L0AN-cs2uvzRW-crF0oMyj9bq3c8,5585
3
+ lino/__init__.py,sha256=ISO_sqTgmyY5do7wrEc2SMiswT8DTnaL49JbqPkWny0,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
@@ -8,7 +8,7 @@ lino/help_texts.py,sha256=gZq8EJfReHB8Z5jKFFOr1pjDRODm7FVkHC8IRA7gq3w,89104
8
8
  lino/api/__init__.py,sha256=WmzHU-rHdZ68se_nI0SmepQTGE8-cd9tPpovHRH9aag,512
9
9
  lino/api/ad.py,sha256=F6SrcKPRRalHKOZ7QLwsRWGq9hhykQIeo0b85cEk9NQ,314
10
10
  lino/api/dd.py,sha256=LHooukTaNuxAbhtSdvDNVbI7nkxeU-QTp5Dfz00bmjk,7764
11
- lino/api/doctest.py,sha256=_hJ_K2J9yTS0ldmaTyOq3xd-rgNUYw9_g9phvj46T50,25337
11
+ lino/api/doctest.py,sha256=fJ97w6rOO7AdlZ5DmgSHuIq-2LfOIbLT_mmslCdI2do,25561
12
12
  lino/api/rt.py,sha256=auN4YoIthkXsjSN09OR6YeaNxSNfUO7E5KyTAvQtjh8,1400
13
13
  lino/api/selenium.py,sha256=07BQuC6KW2tBUlIUcPGeCQHIfogz-wuHJqPshSzLDp0,9384
14
14
  lino/api/shell.py,sha256=epyjwEZ396TiJ0AHqhVIvzX8TBIXU8xR4UHJlYOrRhc,536
@@ -27,22 +27,22 @@ lino/config/plugins/eid_jslib.js,sha256=PsJdUICoGK2nR9EbRg-7drI1AoasLWT_d3RInUWH
27
27
  lino/config/unused/403.html,sha256=ePwDIUXhz1iD8xXWWyt5xEvpcGIHU4LMnXma8x0ik1c,232
28
28
  lino/config/unused/404.html,sha256=GOJrAyF6NcM69ETdSHgjff_-lvYs_-bOYhyZBem7x3I,220
29
29
  lino/config/unused/500.html,sha256=aWmP37uPoMS-PJgPuBloxdx0nEreU7AvkXxsex3yVYs,544
30
- lino/core/__init__.py,sha256=p3JsyPh_EJG9qaB80k4TWfjqx8hyARTy0Ppp6iPC7Vc,703
31
- lino/core/actions.py,sha256=7Ieg1LEqrrrzAofspGqb68MMSm_3uiU_OhznTMME5A8,46438
32
- lino/core/actors.py,sha256=gvl-qbSDV4wPdWMTDsTnVevio8qMa3_nOUY2mN4FcmY,71920
30
+ lino/core/__init__.py,sha256=T7106QxQpa3jXAouGTIer6AXEwpkJ0NAQ9B7Q3-K6qE,686
31
+ lino/core/actions.py,sha256=iiuEI-MWDCQm7gVZXUP_Xj6pUIoHTEiY7v94n9d6sMs,46435
32
+ lino/core/actors.py,sha256=4YvHneEinZDqkpiUYR8pChQtOovuTwpVgTRPxa9URIA,71762
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=45ehEOyTAt0UjxGc19aku9RSCIkvPeswisXXGyg0xtY,36009
35
+ lino/core/choicelists.py,sha256=cg58Czjr5CkmI3nxvf-usvXlgrUAMsKA4nk6IypoaU4,36513
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=OFLBwAdKDXw9_yxO_czZxSvOs4y70FwRjANDAHo7Ku0,6270
39
- lino/core/dbtables.py,sha256=i5DMOgGB54xmtjTJN7TgkUrX1ZtwfjPARMH9KOB97ms,28872
38
+ lino/core/dashboard.py,sha256=jNPLaaR2ZZx6oqwWp0rRhZapuyTVBb7-AtxoF__tgPE,6429
39
+ lino/core/dbtables.py,sha256=k5fZUUZWbtXldIdGiTkGj9U5DYmsKMQyny7gmowLfRA,29174
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
43
  lino/core/elems.py,sha256=E_88KAmjtOGkH3tgj58CzyN2-7hOpRfv2ZeNB-uBfZU,108340
44
44
  lino/core/exceptions.py,sha256=QDxDo5cllSyXQ8VWet9hGXzNadxCOmwMVrFXc6V-vpE,665
45
- lino/core/fields.py,sha256=Bo2PP6r0vhLvzOQcgof0cF79rUX3fam-C7LSoVnnPUw,56640
45
+ lino/core/fields.py,sha256=RUzDXJUDXhlEjQ2GE3ntiLyQTVWEs9EBmYvsj-aUxvI,56690
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
@@ -52,21 +52,20 @@ lino/core/keyboard.py,sha256=imdO-J5npZijtddhM2C7CLo2K6Hp30egsXgOOa4-AqQ,1137
52
52
  lino/core/layouts.py,sha256=mr9iJs12GDeI6lBHsnVl0JKh5v1Vtu5tWIY865Lv62g,28528
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=rI0Wnkqjqz2LRWVyb8os6Fe6fmdS8shT8HQzYN3IuD4,36810
55
+ lino/core/model.py,sha256=RprrvQINUWJEgofovrRSdR5e9QH-8dd2hBVbnpjHwTg,36930
56
56
  lino/core/permissions.py,sha256=Fnemz3NwWz21X0YATI9Q7ba2FcAdg-EMLHjIcbt_AVU,6840
57
57
  lino/core/plugin.py,sha256=xht9x4oXH3cvPm5jg8J5beajf5-B1PP4v0X9RW7d944,6790
58
- lino/core/renderer.py,sha256=aWuYlnOwJbGHSoZq-_qNISj8o9qJ6k0h7QvPOjoPylU,47242
59
- lino/core/requests.py,sha256=-eHWSlhIN5BpC8A2mE4VdO3W6MoXFpOPzLxEYMaQiTg,69718
58
+ lino/core/renderer.py,sha256=krgD8T_dCoQWUXw7aDQNW3S-f6vqB0Du1YpZyO-QB-w,47248
59
+ lino/core/requests.py,sha256=ZLsiyAI2zNt65nWV3ebrnZWaqarTpZSyS31ba7_a_9A,92177
60
60
  lino/core/roles.py,sha256=PXwk436xUupxdbJcygRSYFu7ixfKjAJPQRUQ8sy0lB0,4425
61
61
  lino/core/signals.py,sha256=0JT89mkjSbRm57QZcSI9DoThoKUGkyi-egNhuLUKEds,948
62
62
  lino/core/site.py,sha256=sUuyTNi9IvJ-BwOW1LbAiRKmAE0xOYpHlJqsDH_ID5E,85443
63
- lino/core/store.py,sha256=hIKQSNfj_T7qcVMiLcbAWOPZipfyXLaEgsB1rVrwXBI,51266
64
- lino/core/tablerequest.py,sha256=EIU-YPc7SzQSI26pcdmQWbztKV2W_QHyjdp4Ip7KPlA,27938
65
- lino/core/tables.py,sha256=UXIZ1CvGZSHkFydFfJ_U-SDauoayImToZB5GR9lGJWw,25492
63
+ lino/core/store.py,sha256=uMza9XRX3QeIRCWwBOK9w-4pyjruWtJCfSqOV4_kdgA,51338
64
+ lino/core/tables.py,sha256=FfA3KhGshsR1maNB6B11BbJ4m8cxxIaOhV0jvMxTaJA,25468
66
65
  lino/core/urls.py,sha256=06QlmN1vpxjmb5snO3SPpP6lX1pMdE60bTiBiC77_vQ,2677
67
66
  lino/core/user_types.py,sha256=0iSYmzr2M9v2Mn2y6hzAZeqareUT-gD7l3MfIPyG9ZI,867
68
67
  lino/core/userprefs.py,sha256=cmufIS9xJErKDrw05uoWtQTUR6WRWIGkU1KdAqzNr5M,2850
69
- lino/core/utils.py,sha256=u2QLrI5Ap_fBOscwdvcHVRQcAf4pCToDSCIm_xJCooU,30170
68
+ lino/core/utils.py,sha256=3JgByh5KIG-WM_JMkZpFEot-HAh6wV7jR2YfVeDl48o,34540
70
69
  lino/core/views.py,sha256=b7q9XOjl8nkBV-ZRcR-swFjcC9BGyanRYM2CsB_A5xc,6959
71
70
  lino/core/widgets.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
71
  lino/core/workflows.py,sha256=9O5INnx3nPW73UmeEPWgN146clQSWwna3Jq_w1MThcg,10567
@@ -141,7 +140,7 @@ lino/modlib/bootstrap3/README.txt,sha256=18Z9gPRHMDVh5Ej8kYz7T2emsdO7xx65eBFH8vV
141
140
  lino/modlib/bootstrap3/__init__.py,sha256=AhyWB7eaItGf0eaEQTHsB79erCR55LSV0VrIVp3H-p4,2047
142
141
  lino/modlib/bootstrap3/models.py,sha256=IwxKrQPYJFQf2_O5q53tr15koxlhADFCOz3J3xuKj-U,901
143
142
  lino/modlib/bootstrap3/renderer.py,sha256=KfU2K0TyFMg3IKm5F-wUu315P2U4O6DCC5QVdsDyb2s,3018
144
- lino/modlib/bootstrap3/views.py,sha256=M3nKtkP991MN4fUtS85Ugk6ze2l1hBPLBr3cmBaDg8Y,11605
143
+ lino/modlib/bootstrap3/views.py,sha256=otojM05TZL_paHMTVg-M9BpXVYZs4oG94yu-50km8Wc,11674
145
144
  lino/modlib/bootstrap3/config/bootstrap3/base.html,sha256=9xnRcrUbsgTWu_QYYwpir6NBpLR9pFD0uZwcSkZeNgA,4014
146
145
  lino/modlib/bootstrap3/config/bootstrap3/detail.html,sha256=bwzh4kh9wuqAiE3fuby5t4YN5VBclg2R6KbsSYYnaBM,523
147
146
  lino/modlib/bootstrap3/config/bootstrap3/index.html,sha256=FPhdNhHAJmooJw32mAisWN4_7YHaPRGsBlIrbxjjwcc,113
@@ -191,7 +190,7 @@ lino/modlib/export_excel/__init__.py,sha256=k11dEbh1VgA7cMaUdMhiJvHNboX4BqN0Z5Wj
191
190
  lino/modlib/export_excel/models.py,sha256=OaAkt__l-GaqGLMWQiwXHPJOYABkXHUZ7j9DC7uFE08,5078
192
191
  lino/modlib/extjs/__init__.py,sha256=-TfGa8YR8SWuCHkZ2_pFNVBfOhvVfL5ec4zz6_TWeo4,10170
193
192
  lino/modlib/extjs/ext_renderer.py,sha256=MwvTVZ84pHVoXv1sWG60kkQ3LCbzAdHdZxdEg7BjQPg,60606
194
- lino/modlib/extjs/views.py,sha256=NwdniPUmmq8Shojx7o6xfwPD0-NfMbezo30Hb0EbXX4,22617
193
+ lino/modlib/extjs/views.py,sha256=hR5h3bcKEjDjSgFj5-gpkfAhnYccy0J9INdqegyBeVQ,22644
195
194
  lino/modlib/extjs/config/extjs/index.html,sha256=jO5hdNpFSkm9t0xhHD5hc8Hw1fSr6xb3zYq9aMyOI7Q,8603
196
195
  lino/modlib/extjs/config/extjs/linoweb.js,sha256=I4VYGmkK4htqZvHM9g-6psJF3pp7SvgHEI0I02Sxpvo,175127
197
196
  lino/modlib/extjs/config/extjs/service-worker.js,sha256=KEKWeehTlfBHk3r8NbsP9C5av_DukHORybxFOwbjYaQ,1767
@@ -3491,7 +3490,7 @@ lino/modlib/extjs/static/filterRow/images/moreOptions.png,sha256=xNWuPzMGJqzfFsY
3491
3490
  lino/modlib/forms/__init__.py,sha256=mnqO1aui7njM7XjlC5Fil_1Fmiqz0szvdTer86AZeWE,1183
3492
3491
  lino/modlib/forms/models.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3493
3492
  lino/modlib/forms/renderer.py,sha256=KLMAyDPLpWlRCzzQ4F4aS2bs5birR_JaFQu6lQX-ZNk,2406
3494
- lino/modlib/forms/views.py,sha256=QVntxGomX-1_3zgEm9BtgUOvejEkyj66eC3bnwuiVVE,10289
3493
+ lino/modlib/forms/views.py,sha256=L8U8LKFB1bP1q2NiAcRkZvynT_uw7yb93HIwA3TaXTs,10313
3495
3494
  lino/modlib/gfks/__init__.py,sha256=2f34DqbWXWUxE_y_0LqLfkpoyZ-cqQucg4xZkI2H3VY,1247
3496
3495
  lino/modlib/gfks/fields.py,sha256=43yIsudT07bXuKD1Gsqvn15_F3UaeZQqZzuzK9dDdLc,3239
3497
3496
  lino/modlib/gfks/mixins.py,sha256=KE6Hd5Ml71_7zT9Pj5j5r-AGHZV4zkwyNuWh8LcRDug,2468
@@ -3569,7 +3568,7 @@ lino/modlib/notify/static/js/push.js/push.min.js,sha256=4DApieALVblKkYJ4endqXGui
3569
3568
  lino/modlib/notify/static/js/push.js/push_tests.js,sha256=YHS6BGdg0tflNuzJgLn5jTgfw3oqqrl6n8ASTQWAIR4,7928
3570
3569
  lino/modlib/notify/static/js/push.js/sw.js,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3571
3570
  lino/modlib/odata/__init__.py,sha256=k26EMnYYOaS4FoIlsOqlbhRZvBPuTjYyGPyTRfP9YaY,1015
3572
- lino/modlib/odata/views.py,sha256=BK0wswgrb31y4mJgnMjBO0SxS6-rNtDDf5dGCejw7Es,7178
3571
+ lino/modlib/odata/views.py,sha256=ssyYYIyGoxXtR3hKnIa-ZBPLb6vxEU5C6XUUQ1L6Z70,7205
3573
3572
  lino/modlib/odata/config/odata/csdl.xml,sha256=KFDImzUA4YI6PL-i5AHnm22eBMLTw-K2iljslDJFQH8,296
3574
3573
  lino/modlib/office/__init__.py,sha256=rOKD9zKt-VBvFFqoHBioNp299Igb1Sk2n466iCt6ASQ,287
3575
3574
  lino/modlib/office/roles.py,sha256=oQWTZ-_9_vssc9QW5A0YspMjG_V5gCiHSU0eE0AIH30,356
@@ -3587,7 +3586,7 @@ lino/modlib/publisher/mixins.py,sha256=eMEZeMQdaEp9tDkA5_YdqFGQec1q7Z1DAJZvU1cmo
3587
3586
  lino/modlib/publisher/models.py,sha256=dkSy_EaHge0iKZ2-lUIIOdBnLyiIx7CPyO5RxGAmFxY,14388
3588
3587
  lino/modlib/publisher/renderer.py,sha256=9RoyVMQcbwh_GcbDJO8BWhCKe1kpbDc9M45hrMqzpNs,1922
3589
3588
  lino/modlib/publisher/ui.py,sha256=VcxHwefC-u1RcMylu0Zv4hHVPD7m1b1WLIQh9jcQGO8,4434
3590
- lino/modlib/publisher/views.py,sha256=gXXEe9rGi-TZ651HwaCky-V6hLjOzcRYedy8sbUv0Qk,1942
3589
+ lino/modlib/publisher/views.py,sha256=OCbvBdEP7ELorHsCTnhJa6PtSIcuHONKjq24bnUyiaQ,2135
3591
3590
  lino/modlib/publisher/config/publisher/base.html,sha256=nrWuN4lhP1O4ORdYTaY3fS2pc90yfUnfDYfm2Jtr7hQ,198
3592
3591
  lino/modlib/publisher/config/publisher/default_list.pub.html,sha256=3ePc4U3xZxE-pqtzlnB9CRQWu8OQrtfXKEjyuc8BBUQ,578
3593
3592
  lino/modlib/publisher/config/publisher/item.pub.html,sha256=973RYgCAYG1SYIB4bwfVZFVTUo0WD2I98PsoPgjQ8XA,154
@@ -4622,7 +4621,7 @@ lino/utils/pythontest.py,sha256=AA9i3CEWgpbJKNTkxc0Gz94sy1R1MBpyinqrlahKKno,4954
4622
4621
  lino/utils/pyuca.py,sha256=YSLpCYEMqKUhx1y0q-ML8Ryu2ARDFO2HyIFxz1DzYEY,4344
4623
4622
  lino/utils/quantities.py,sha256=m_oi647uCTf2NhhQo6ytphZa2jQq1QXIUcts-cLkEJM,7367
4624
4623
  lino/utils/ranges.py,sha256=gXMD3uZBobGnOfn8GXSJ40gtJ7UcxrIOOFWZCk--zXE,3343
4625
- lino/utils/report.py,sha256=ca0DcBRrHlMdOITWDeSgwSCTmn4giZO2EkC82scTdK8,8101
4624
+ lino/utils/report.py,sha256=5l1NkZpcZyd1zpg37MB4Doly9dH9KHBEFarp9Q6vh4w,7983
4626
4625
  lino/utils/requests.py,sha256=vXxsC51FK9FgrqmF9dy3MsmUqJINjSQ_4AmvBiQbGEk,1337
4627
4626
  lino/utils/restify.py,sha256=QMVQXrmjDl6PPC7HJJGeDm125pcvrZKvcMpiscaPrsw,14066
4628
4627
  lino/utils/screenshots.py,sha256=T-szKC3EJfo4JcLio8Jj0xqaoSuJcZG6Jf9EF_B8WDQ,2040
@@ -4640,8 +4639,8 @@ lino/utils/xml.py,sha256=4Z44W1e5HvTVrU8erkohgnwqY-5Cr2NHywaAJ5OgRvw,989
4640
4639
  lino/utils/mldbc/__init__.py,sha256=QqWRlzeXaOmFfbCk-vTY3SZMn1-FCf67XnpZdd_Nim0,1134
4641
4640
  lino/utils/mldbc/fields.py,sha256=tAX8G5UKigr9c6g0F3ARIjZZtg406mdaZ--PWSbiH9E,2873
4642
4641
  lino/utils/mldbc/mixins.py,sha256=CkYe5jDa7xp9fJq_V8zcZf8ocxgIjUgHc9KZccvA_Yw,1945
4643
- lino-24.10.0.dist-info/METADATA,sha256=DcD1srk-WshZ3Ea4us5E41Mt3kMVDtxpMf8mUqELaGM,42535
4644
- lino-24.10.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
4645
- lino-24.10.0.dist-info/licenses/AUTHORS.rst,sha256=8VEm_G4HOmYEa4oi1nVoKKsdo4JanekEJCefWd2E8vk,981
4646
- lino-24.10.0.dist-info/licenses/COPYING,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
4647
- lino-24.10.0.dist-info/RECORD,,
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,,