lino 25.1.5__py3-none-any.whl → 25.1.6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
lino/__init__.py CHANGED
@@ -26,7 +26,7 @@ defines no models, some template files, a series of :term:`django-admin commands
26
26
 
27
27
  """
28
28
 
29
- __version__ = '25.1.5'
29
+ __version__ = '25.1.6'
30
30
 
31
31
  # import setuptools # avoid UserWarning "Distutils was imported before Setuptools"?
32
32
 
lino/core/actions.py CHANGED
@@ -1088,6 +1088,7 @@ class CreateRow(Action):
1088
1088
  # if ar.actor.stay_in_grid and ar.requesting_panel:
1089
1089
  if ar.actor.stay_in_grid:
1090
1090
  # do not open a detail window on the new instance
1091
+ ar.set_response(refresh_all=True)
1091
1092
  return
1092
1093
 
1093
1094
  ar.goto_instance(elem)
@@ -1122,7 +1123,7 @@ class CreateRow(Action):
1122
1123
 
1123
1124
  ar.goto_instance(elems[0])
1124
1125
 
1125
- # No need to ask refresh_all since closing the window will
1126
+ # No need to ask refresh_all since closing the detail window will
1126
1127
  # automatically refresh the underlying window.
1127
1128
 
1128
1129
 
@@ -1155,11 +1156,11 @@ class SubmitInsert(CreateRow):
1155
1156
  # Multiple uploads possible, note plural method names.
1156
1157
  elems = ar.create_instances_from_request(**kwargs)
1157
1158
  self.save_new_instances(ar, elems)
1158
- ar.set_response(close_window=True)
1159
1159
  else:
1160
1160
  elem = ar.create_instance_from_request(**kwargs)
1161
1161
  self.save_new_instance(ar, elem)
1162
- ar.set_response(close_window=True)
1162
+
1163
+ ar.set_response(close_window=True)
1163
1164
  # if settings.SITE.is_installed("react"):
1164
1165
  # ar.goto_instance(elem)
1165
1166
 
lino/help_texts.py CHANGED
@@ -174,6 +174,7 @@ help_texts = {
174
174
  'lino.modlib.uploads.Plugin' : _("""See /dev/plugins."""),
175
175
  'lino.modlib.uploads.Plugin.remove_orphaned_files' : _("""Whether checkdata –fix should automatically delete orphaned files in the uploads folder."""),
176
176
  'lino.modlib.uploads.Plugin.with_thumbnails' : _("""Whether to use PIL, the Python Imaging Library."""),
177
+ 'lino.modlib.uploads.Plugin.with_volumes' : _("""Whether to use library files (volumes)."""),
177
178
  'lino.modlib.weasyprint.Plugin' : _("""See /dev/plugins."""),
178
179
  'lino.modlib.weasyprint.Plugin.header_height' : _("""Height of header in mm. Set to None if you want no header."""),
179
180
  'lino.modlib.weasyprint.Plugin.footer_height' : _("""Height of footer in mm. Set to None if you want no header."""),
@@ -59,6 +59,7 @@ class TestCase(DemoTestCase):
59
59
 
60
60
  def test_ipdict(self):
61
61
  if not settings.SITE.use_ipdict:
62
+ # print("20250126 no test because use_ipdict is False")
62
63
  return
63
64
  ipdict = dd.plugins.ipdict
64
65
 
@@ -100,7 +101,7 @@ class TestCase(DemoTestCase):
100
101
  # every new failure will now blacklist it again, the
101
102
  # max_failed_auth_per_ip no longer counts.
102
103
 
103
- time.sleep(1)
104
+ time.sleep(1.5)
104
105
  self.assertEqual(login("bad"), "Failed to sign in as robin.")
105
106
  self.assertEqual(rec.login_failures, 5)
106
107
  self.assertEqual(
@@ -108,8 +109,10 @@ class TestCase(DemoTestCase):
108
109
  )
109
110
  self.assertEqual(rec.login_failures, 5)
110
111
 
111
- time.sleep(1)
112
- self.assertEqual(login(dd.plugins.users.demo_password), "Now signed in as Robin Rood")
112
+ time.sleep(1.5)
113
+ self.assertEqual(
114
+ login(dd.plugins.users.demo_password),
115
+ "Now signed in as Robin Rood")
113
116
 
114
117
  # Once you manage to authenticate, your ip address gets removed from the
115
118
  # blacklist, i.e. when you log out and in for some reason, you get again
@@ -1,4 +1,4 @@
1
- # Copyright 2016-2023 Rumma & Ko Ltd
1
+ # Copyright 2016-2025 Rumma & Ko Ltd
2
2
  # License: GNU Affero General Public License v3 (see file COPYING for details)
3
3
  """
4
4
  Adds some demo comments.
@@ -61,7 +61,9 @@ def objects():
61
61
  if dd.get_plugin_setting("uploads", "with_volumes", False):
62
62
  Upload = rt.models.uploads.Upload
63
63
  SCREENSHOTS = Cycler(Upload.objects.filter(volume__ref="screenshots"))
64
- assert len(SCREENSHOTS) > 0
64
+ if len(SCREENSHOTS) == 0:
65
+ # e.g. when lino_book is not installed
66
+ SCREENSHOTS = None
65
67
  else:
66
68
  SCREENSHOTS = None
67
69
 
lino/utils/dbfreader.py CHANGED
@@ -1,20 +1,26 @@
1
- # Copyright 2003-2009-2016 Luc Saffre
1
+ # Copyright 2003-2025 Rumma & Ko Ltd
2
2
  # License: GNU Affero General Public License v3 (see file COPYING for details)
3
3
 
4
- # Based on original work by Lars Garshol
5
- # http://www.garshol.priv.no/download/software/python/dbfreader.py
6
-
7
- # modified by Luc Saffre who is interested in support for Clipper
8
- # rather than FoxPro support.
9
4
  """
10
- What's the format of a Clipper .dbf file?
11
- http://www.the-oasis.net/clipper-12.html#ss12.4
12
5
 
13
- http://www.clicketyclick.dk/databases/xbase/format/
6
+ Defines the :class:`DBFFile` class, used by :doc:`lino_xl.lib.tim2lino` to read
7
+ DBF and DBT files when both settings :attr:`use_dbfread
8
+ <lino_xl.lib.tim2lino.Plugin.use_dbfread>` and :attr:`use_dbf_py
9
+ <lino_xl.lib.tim2lino.Plugin.use_dbf_py>` are `False` (which is default).
10
+
11
+ Based on original work by Lars Garshol
12
+ http://www.garshol.priv.no/download/software/python/dbfreader.py
13
+
14
+ Modified by Luc Saffre to add support for Clipper dialect.
15
+
16
+ Sources of information:
17
+
18
+ - `What's the format of a Clipper .dbf file?
19
+ <https://www.the-oasis.net/clipper-12.html#ss12.4>`__ (broken link)
20
+
21
+ `Xbase & dBASE File Format Description by Erik Bachmann
22
+ <https://www.clicketyclick.dk/databases/xbase/format/>`__
14
23
  """
15
- # from builtins import hex
16
- # from builtins import str
17
- # from builtins import object
18
24
 
19
25
  import datetime
20
26
  from dateutil import parser as dateparser
@@ -56,20 +62,8 @@ def hex_analyze(number):
56
62
  print("%s\t%s\t%d" % (hex(ch), ch, ch))
57
63
 
58
64
 
59
- # def sort_by_key(list,key_func):
60
- # for ix in range(len(list)):
61
- # list[ix]=(key_func(list[ix]),list[ix])
62
-
63
- # list.sort()
64
-
65
- # for ix in range(len(list)):
66
- # list[ix]=list[ix][1]
67
-
68
- # return list
69
-
70
65
  # --- A class for the entire file
71
66
 
72
-
73
67
  class DBFFile(object):
74
68
  "Represents a single DBF file."
75
69
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lino
3
- Version: 25.1.5
3
+ Version: 25.1.6
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,10 +1,10 @@
1
1
  lino/.cvsignore,sha256=1vrrWoP-WD8hPfCszHHIiJEi8KUMRCt5WvoKB9TSB1k,28
2
2
  lino/SciTEDirectory.properties,sha256=rCYi_e-6h8Yx5DwXhAa6MBPlVINcl6Vv9BQDYZV2_go,28
3
- lino/__init__.py,sha256=Mra9LM9wR3fgRgjFBaSaezhNxDMo36zcQqJfCHpCRhY,5584
3
+ lino/__init__.py,sha256=0yrHbVQ2XWyabku43gsxie9HdEs3B8JvaUfMah_yJXM,5584
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=N78O2lzBeNWW_eKh6PSyTLR9ye7-MA4xf0ZLPG1i6vc,90797
7
+ lino/help_texts.py,sha256=xLCUrDYM6fiYJSevxi6iq8xAO7XyKikm29HEJMv8HLo,90895
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=-mjuoflZilnFM97we-N1H_sEf1TQiNs62JwZ5m4XV1s,7813
@@ -28,7 +28,7 @@ lino/config/unused/403.html,sha256=ePwDIUXhz1iD8xXWWyt5xEvpcGIHU4LMnXma8x0ik1c,2
28
28
  lino/config/unused/404.html,sha256=GOJrAyF6NcM69ETdSHgjff_-lvYs_-bOYhyZBem7x3I,220
29
29
  lino/config/unused/500.html,sha256=aWmP37uPoMS-PJgPuBloxdx0nEreU7AvkXxsex3yVYs,544
30
30
  lino/core/__init__.py,sha256=T7106QxQpa3jXAouGTIer6AXEwpkJ0NAQ9B7Q3-K6qE,686
31
- lino/core/actions.py,sha256=RiyuaK5F-VE6S7FVgSivOBx74F9H4uwGFOMEhXt66Rg,46395
31
+ lino/core/actions.py,sha256=B8jCkE__GNIL820LCc10yOzJ7inCUyxn9u1KupS9y84,46398
32
32
  lino/core/actors.py,sha256=lsp-w2kC_t_-iqeHtIYIkIPoS_jbHgZ3MZlGJWH2dyc,73663
33
33
  lino/core/boundaction.py,sha256=tb0C4WwbJpAP3yKbR6OaibzcAkwVs3nfeuD0RjXTjIg,6665
34
34
  lino/core/callbacks.py,sha256=xkosb1l48o6WeSdj82k5udK9OmjI7-p6x4AJFjXiOf8,7518
@@ -97,7 +97,7 @@ lino/locale/zh_Hant/LC_MESSAGES/django.po,sha256=KWejkd_imTiK-SX6BG_bfEGtGIWEQ-b
97
97
  lino/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
98
98
  lino/management/commands/__init__.py,sha256=raVDRiXns3SegyXEhaLZMcxfEDs7ggy2nFUN5D0f5F0,47
99
99
  lino/management/commands/buildcache.py,sha256=QjhvKKdp1mX6rl8Y5rcS6kUK2LVOBVAd6wrUKLYSGF8,448
100
- lino/management/commands/demotest.py,sha256=543acKUeqliMSgI_21ylSMvMlMpnjJej065MdSIkzNo,4920
100
+ lino/management/commands/demotest.py,sha256=zb9gSrgqOH2S-OJSKUNezprUEbJLBQf8tVGSVdSENik,5017
101
101
  lino/management/commands/diag.py,sha256=vt-NlZUx5gf7T4EpbM-gle3tAwMuwfPQY8lUgxjFaUw,478
102
102
  lino/management/commands/dump2py.py,sha256=DyvhXYPJY7-Tt_xyw4_U5WjVeobcOU5AhWRZB6l4esI,20329
103
103
  lino/management/commands/dump_settings.py,sha256=tGOR4h_ueVe2DOk84ILFvzvndt0doshvaxRkybB-rnY,2009
@@ -180,7 +180,7 @@ lino/modlib/comments/roles.py,sha256=z3gctvlTa_5PAs-D4pounyzNyuEc31jTFq9g33r6Z1w
180
180
  lino/modlib/comments/ui.py,sha256=w72vOmK8fn6H13t2aPS7ydYU1fCsbbMH2-TSNWt3pwA,9799
181
181
  lino/modlib/comments/config/comments/comments.js,sha256=7oAnNyx_MKM1iWPu-QSp6iKfnOVdgq7EciQPpxTvYU8,242
182
182
  lino/modlib/comments/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
183
- lino/modlib/comments/fixtures/demo2.py,sha256=mi1LY0-hotH-BG34bGgvCXkvDhVJPQ4uDfzKCicSIRM,25248
183
+ lino/modlib/comments/fixtures/demo2.py,sha256=FGsX1_r9h2Zz11wbemkqx_AcFIRmYKMx9TineWs_ic0,25328
184
184
  lino/modlib/dashboard/__init__.py,sha256=_PFbmakUn8DShXyJY3EfAcuZtX5ofWnS-8dk7s1CrLw,1420
185
185
  lino/modlib/dashboard/models.py,sha256=EgRNg88dmz-OlIdi1SyEuerWMsRqKIfqE2MgKL7kApw,3510
186
186
  lino/modlib/dupable/__init__.py,sha256=fIQ8wj-T8ZbkjwQgW_-ankJsHLjPMepOTo32mJXNCvI,532
@@ -4605,7 +4605,7 @@ lino/utils/cycler.py,sha256=2LGMhMJX5At5ln4yZvmNleWROs-CA_YE_UCzxzvxK4U,1548
4605
4605
  lino/utils/daemoncommand.py,sha256=NjGShiz09fddIV0WU0jK2nzO_CwPj1MfdmgwAOYZi4M,11525
4606
4606
  lino/utils/dataserializer.py,sha256=-_xHXaGwDSO6-sYEHEa2BtEmKS8bW6gsYx4dV-GbvDs,3779
4607
4607
  lino/utils/dates.py,sha256=eWF5WxA5uJf51Y9PKvDVBWD8yIf6yBF6oO6TeU3ujzw,1030
4608
- lino/utils/dbfreader.py,sha256=lTIHkqmWJnKTdMwtF7amlSVBZZe2bW81fWF22Y4f5nM,12131
4608
+ lino/utils/dbfreader.py,sha256=4sXOGBKX6DFQCEPkCMfnJAVneHMyDzJQB5tsYAq90vQ,12205
4609
4609
  lino/utils/dblogger.py,sha256=kr0YxQY6veymvNg5A4tsvkqW8haRWdwqL0C-_9_QTg0,721
4610
4610
  lino/utils/diag.py,sha256=evkU818hZSGpWdL0Du11QakT5_frvc5z4C93IEBlECg,18307
4611
4611
  lino/utils/djangotest.py,sha256=Phz1qNp0wDonZRja5dxbCk0Xl3a73gZNiKK8v9tAgZg,8334
@@ -4649,8 +4649,8 @@ lino/utils/xml.py,sha256=4Z44W1e5HvTVrU8erkohgnwqY-5Cr2NHywaAJ5OgRvw,989
4649
4649
  lino/utils/mldbc/__init__.py,sha256=QqWRlzeXaOmFfbCk-vTY3SZMn1-FCf67XnpZdd_Nim0,1134
4650
4650
  lino/utils/mldbc/fields.py,sha256=tAX8G5UKigr9c6g0F3ARIjZZtg406mdaZ--PWSbiH9E,2873
4651
4651
  lino/utils/mldbc/mixins.py,sha256=CkYe5jDa7xp9fJq_V8zcZf8ocxgIjUgHc9KZccvA_Yw,1945
4652
- lino-25.1.5.dist-info/METADATA,sha256=wGSveOojnYjUFx-8Ag72a9SoTwNUYFaaJ-Ce9LfUzPA,42534
4653
- lino-25.1.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
4654
- lino-25.1.5.dist-info/licenses/AUTHORS.rst,sha256=8VEm_G4HOmYEa4oi1nVoKKsdo4JanekEJCefWd2E8vk,981
4655
- lino-25.1.5.dist-info/licenses/COPYING,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
4656
- lino-25.1.5.dist-info/RECORD,,
4652
+ lino-25.1.6.dist-info/METADATA,sha256=WqVqvSO_n0TLfSy-ydW7pz01iQW5IDz8nz90x5fge4I,42534
4653
+ lino-25.1.6.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
4654
+ lino-25.1.6.dist-info/licenses/AUTHORS.rst,sha256=8VEm_G4HOmYEa4oi1nVoKKsdo4JanekEJCefWd2E8vk,981
4655
+ lino-25.1.6.dist-info/licenses/COPYING,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
4656
+ lino-25.1.6.dist-info/RECORD,,
File without changes