lino 25.4.2__py3-none-any.whl → 25.4.4__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 (45) hide show
  1. lino/__init__.py +1 -1
  2. lino/core/kernel.py +33 -7
  3. lino/core/renderer.py +3 -3
  4. lino/core/site.py +10 -36
  5. lino/help_texts.py +3 -3
  6. lino/management/commands/demotest.py +16 -22
  7. lino/mixins/__init__.py +5 -5
  8. lino/mixins/dupable.py +2 -4
  9. lino/mixins/registrable.py +5 -2
  10. lino/modlib/about/models.py +2 -2
  11. lino/modlib/checkdata/choicelists.py +4 -4
  12. lino/modlib/checkdata/models.py +11 -3
  13. lino/modlib/comments/fixtures/demo2.py +4 -0
  14. lino/modlib/comments/models.py +1 -1
  15. lino/modlib/dupable/mixins.py +3 -5
  16. lino/modlib/extjs/ext_renderer.py +1 -1
  17. lino/modlib/extjs/views.py +1 -1
  18. lino/modlib/help/fixtures/demo2.py +3 -2
  19. lino/modlib/jinja/mixins.py +18 -5
  20. lino/modlib/linod/models.py +1 -1
  21. lino/modlib/linod/routing.py +49 -46
  22. lino/modlib/memo/mixins.py +3 -2
  23. lino/modlib/notify/api.py +33 -14
  24. lino/modlib/notify/mixins.py +4 -3
  25. lino/modlib/printing/mixins.py +1 -1
  26. lino/modlib/publisher/choicelists.py +41 -20
  27. lino/modlib/publisher/config/publisher/page.pub.html +24 -0
  28. lino/modlib/publisher/fixtures/demo2.py +12 -0
  29. lino/modlib/publisher/fixtures/std.py +2 -1
  30. lino/modlib/publisher/fixtures/synodalworld.py +17 -0
  31. lino/modlib/publisher/mixins.py +7 -0
  32. lino/modlib/publisher/models.py +77 -7
  33. lino/modlib/publisher/ui.py +5 -5
  34. lino/modlib/publisher/views.py +9 -2
  35. lino/modlib/system/models.py +1 -1
  36. lino/modlib/uploads/models.py +2 -2
  37. lino/static/bootstrap.css +1 -1
  38. lino/utils/dbfreader.py +64 -32
  39. lino/utils/dbhash.py +3 -2
  40. {lino-25.4.2.dist-info → lino-25.4.4.dist-info}/METADATA +1 -1
  41. {lino-25.4.2.dist-info → lino-25.4.4.dist-info}/RECORD +44 -43
  42. lino/management/commands/monitor.py +0 -160
  43. {lino-25.4.2.dist-info → lino-25.4.4.dist-info}/WHEEL +0 -0
  44. {lino-25.4.2.dist-info → lino-25.4.4.dist-info}/licenses/AUTHORS.rst +0 -0
  45. {lino-25.4.2.dist-info → lino-25.4.4.dist-info}/licenses/COPYING +0 -0
@@ -285,7 +285,7 @@ class UploadChecker(Checker):
285
285
  verbose_name = _("Check metadata of upload files")
286
286
  model = "uploads.Upload"
287
287
 
288
- def get_checkdata_problems(self, obj, fix=False):
288
+ def get_checkdata_problems(self, ar, obj, fix=False):
289
289
  if obj.file:
290
290
  if not exists(join(settings.MEDIA_ROOT, obj.file.name)):
291
291
  yield (
@@ -311,7 +311,7 @@ UploadChecker.activate()
311
311
  class UploadsFolderChecker(Checker):
312
312
  verbose_name = _("Find orphaned files in uploads folder")
313
313
 
314
- def get_checkdata_problems(self, obj, fix=False):
314
+ def get_checkdata_problems(self, ar, obj, fix=False):
315
315
  assert obj is None # this is an unbound checker
316
316
  Upload = rt.models.uploads.Upload
317
317
  pth = dd.plugins.uploads.uploads_root
lino/static/bootstrap.css CHANGED
@@ -1,7 +1,7 @@
1
1
  /* styles to be applied after bootstrap css */
2
2
 
3
3
  .publisher-document {
4
- width: 840px;
4
+ max-width: 840px;
5
5
  }
6
6
 
7
7
  .publisher-toc {
lino/utils/dbfreader.py CHANGED
@@ -9,9 +9,10 @@ DBF and DBT files when both settings :attr:`use_dbfread
9
9
  <lino_xl.lib.tim2lino.Plugin.use_dbf_py>` are `False` (which is default).
10
10
 
11
11
  Based on original work by Lars Garshol
12
- http://www.garshol.priv.no/download/software/python/dbfreader.py
12
+ https://www.garshol.priv.no/download/software/python/dbfreader.py
13
13
 
14
- Modified by Luc Saffre to add support for Clipper dialect.
14
+ Modified by Luc Saffre to add support for Clipper dialect. And to work under
15
+ Python 3. And to support char fields longer than 255 characters.
15
16
 
16
17
  Sources of information:
17
18
 
@@ -20,6 +21,7 @@ Sources of information:
20
21
 
21
22
  `Xbase & dBASE File Format Description by Erik Bachmann
22
23
  <https://www.clicketyclick.dk/databases/xbase/format/>`__
24
+
23
25
  """
24
26
 
25
27
  import datetime
@@ -37,16 +39,11 @@ codepages = {
37
39
 
38
40
 
39
41
  def unpack_long(number):
40
- # print(f"20250123 unpack_long {number}")
41
- return number[0] + 256 * (
42
- number[1] + 256 * (number[2] + 256 * number[3])
43
- )
42
+ return number[0] + 256 * (number[1] + 256 * (number[2] + 256 * number[3]))
44
43
 
45
44
 
46
45
  def unpack_long_rev(number):
47
- return number[3] + 256 * (
48
- number[2] + 256 * (number[1] + 256 * number[0])
49
- )
46
+ return number[3] + 256 * (number[2] + 256 * (number[1] + 256 * number[0]))
50
47
 
51
48
 
52
49
  def unpack_int(number):
@@ -64,6 +61,7 @@ def hex_analyze(number):
64
61
 
65
62
  # --- A class for the entire file
66
63
 
64
+
67
65
  class DBFFile(object):
68
66
  "Represents a single DBF file."
69
67
 
@@ -88,7 +86,10 @@ class DBFFile(object):
88
86
  day = header[3]
89
87
  self.lastUpdate = datetime.date(year, month, day)
90
88
  # print(f"20250123 Loading {filename} (last updated {self.lastUpdate})")
89
+
90
+ # Number of records in data file:
91
91
  self.rec_num = unpack_long(header[4:8])
92
+ # length of header structure. Stored as binary (little endian), unsigned:
92
93
  self.first_rec = unpack_int(header[8:10])
93
94
  self.rec_len = unpack_int(header[10:12])
94
95
  self.codepage = codepage # s[header[29]]
@@ -99,13 +100,21 @@ class DBFFile(object):
99
100
  while 1:
100
101
  ch = infile.read(1)
101
102
  # if ch == 0x0D:
102
- if ch == b'\r':
103
+ # if ch == b'\r':
104
+ if ch == b'\x0D':
103
105
  break
104
106
  field = DBFField(ch + infile.read(31), self)
105
107
  self.fields[field.name] = field
106
108
  self.field_list.append(field)
107
109
  # if len(self.field_list) > 20:
108
110
  # sys.exit(1)
111
+ # print(f"20250423 {self.field_list}")
112
+ # n = 0
113
+ # for fld in self.field_list:
114
+ # print(f"20250423 {fld.name} {fld.field_type} {
115
+ # fld.field_len} {fld.field_places}")
116
+ # n += fld.get_len()
117
+ # print(f"20250423 {n}")
109
118
 
110
119
  infile.close()
111
120
  if self.has_memo():
@@ -155,8 +164,11 @@ class DBFFile(object):
155
164
  def get_next_record(self):
156
165
  values = {}
157
166
  ch = self.infile.read(1)
167
+ if len(ch) == 0:
168
+ raise Exception("Unexpected end of file")
158
169
  self.recno += 1
159
- if ch == 0x1A or len(ch) == 0:
170
+ # if ch == 0x1A or len(ch) == 0:
171
+ if ch == b'\x1A':
160
172
  return None
161
173
  if ch == b"*":
162
174
  deleted = True
@@ -170,6 +182,7 @@ class DBFFile(object):
170
182
  values[field.get_name()] = field.interpret(data)
171
183
  if deleted and not self.deleted:
172
184
  return self.get_next_record()
185
+ # print(f"20250423 found {values}")
173
186
  return DBFRecord(self, values, deleted)
174
187
 
175
188
  def close(self):
@@ -255,11 +268,25 @@ class DBFField(object):
255
268
  self.name = buf[:pos].decode()
256
269
  # print(f"20250123 field {self.name}")
257
270
  self.field_type = chr(buf[11])
258
- self.field_pos = unpack_long(buf[12:16])
271
+ # self.field_pos = unpack_long(buf[12:16])
272
+ # self.field_pos_raw = buf[12:16]
259
273
  self.field_len = buf[16]
260
- self.field_places = buf[17]
274
+ if self.field_type == "C":
275
+ self.field_places = 0
276
+ self.field_len += 256 * buf[17]
277
+ # https://www.clicketyclick.dk/databases/xbase/format/data_types.html
278
+ # Character fields can be up to 32 KB long (in Clipper and FoxPro)
279
+ # using decimal count (field_places) as high byte in field length.
280
+ # It's possible to use up to 64KB long fields by reading length as
281
+ # unsigned.
282
+ else:
283
+ self.field_places = buf[17]
261
284
  self.dbf = dbf
262
285
 
286
+ def __repr__(self):
287
+ return (f"DBFField({self.name}, {self.field_type}, "
288
+ f"{self.field_len}, {self.field_places})")
289
+
263
290
  # if self.field_type=="M" or self.field_type=="P" or \
264
291
  # self.field_type=="G" :
265
292
  # self.blockfile=blockfile
@@ -267,8 +294,8 @@ class DBFField(object):
267
294
  def get_name(self):
268
295
  return self.name
269
296
 
270
- def get_pos(self):
271
- return self.field_pos
297
+ # def get_pos(self):
298
+ # return self.field_pos
272
299
 
273
300
  def get_type(self):
274
301
  return self.field_type
@@ -283,7 +310,7 @@ class DBFField(object):
283
310
  # raise Exception("20250123 good")
284
311
  # print(f"20250123 interpret {repr(self.field_type)}")
285
312
  if self.field_type == "C":
286
- if not self.dbf.codepage is None:
313
+ if self.dbf.codepage is not None:
287
314
  data = data.decode(self.dbf.codepage)
288
315
  data = data.strip()
289
316
  # ~ if len(data) == 0: return None
@@ -301,6 +328,8 @@ class DBFField(object):
301
328
  # ~ return None
302
329
  return ""
303
330
  raise Exception("bad memo block number %s" % repr(data))
331
+ # print("20250422 bad memo block number %s" % repr(data))
332
+ # return ""
304
333
  return self.dbf.blockfile.get_block(num)
305
334
 
306
335
  elif self.field_type == "N":
@@ -316,7 +345,10 @@ class DBFField(object):
316
345
  try:
317
346
  return dateparser.parse(data)
318
347
  except ValueError as e:
319
- raise ValueError("Invalid date value %r (%s)" % (data, e))
348
+ raise ValueError("Invalid date value %r (%s) in field %s" %
349
+ (data, e, self.name))
350
+ # print("20250422 Invalid date value %r (%s) in field %s" %
351
+ # (data, e, self.name))
320
352
  # ~ return data # string "YYYYMMDD", use the time module or mxDateTime
321
353
  else:
322
354
  raise NotImplementedError("Unknown data type " + self.field_type)
@@ -401,21 +433,21 @@ class DBTFile(object):
401
433
  # primary key
402
434
 
403
435
 
404
- class DBFHash(object):
405
- def __init__(self, file, key):
406
- self.file = DBFFile(file)
407
- self.hash = {}
408
- self.key = key
409
-
410
- self.file.open()
411
- while 1:
412
- rec = self.file.get_next_record()
413
- if rec is None:
414
- break
415
- self.hash[rec[self.key]] = rec
416
-
417
- def __getitem__(self, key):
418
- return self.hash[key]
436
+ # class DBFHash(object):
437
+ # def __init__(self, file, key):
438
+ # self.file = DBFFile(file)
439
+ # self.hash = {}
440
+ # self.key = key
441
+ #
442
+ # self.file.open()
443
+ # while 1:
444
+ # rec = self.file.get_next_record()
445
+ # if rec is None:
446
+ # break
447
+ # self.hash[rec[self.key]] = rec
448
+ #
449
+ # def __getitem__(self, key):
450
+ # return self.hash[key]
419
451
 
420
452
 
421
453
  # --- Utility functions
lino/utils/dbhash.py CHANGED
@@ -14,8 +14,9 @@ from django.conf import settings
14
14
  from django.apps import apps
15
15
  from django.db.models.deletion import ProtectedError
16
16
 
17
- mod = import_module(settings.SETTINGS_MODULE)
18
- HASH_FILE = Path(mod.__file__).parent / "dbhash.json"
17
+ # mod = import_module(settings.SETTINGS_MODULE)
18
+ # HASH_FILE = Path(mod.__file__).parent / "dbhash.json"
19
+ HASH_FILE = settings.SITE.site_dir / "dbhash.json"
19
20
 
20
21
 
21
22
  def fmn(m):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lino
3
- Version: 25.4.2
3
+ Version: 25.4.4
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=vPakvNPcc39olTexcyLdrhwTrq7ulMVBrgPP5ZFuzIA,6176
3
+ lino/__init__.py,sha256=UvUTsw4pGmG-8l3eqcbQdedQ1jGLYfZdqOF3no5VCZI,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=RPD-0OJQz8DZtJvr4FuZxiOnnGzNK9jdVYJykoSFWRc,91431
7
+ lino/help_texts.py,sha256=n0cYycLTZFF72ybnYAwMkF-FxpLPyS4fNxQaUNpNTAQ,91428
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=-mxiSJS27LGCWyOgboA8qDudTkE9vg9vmUGOT08Hq6A,7410
@@ -47,7 +47,7 @@ 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=Qd_PGEn0yMXNYVPI0wCv1vvo2CNdlPkyoBmKZELOtGM,13422
50
- lino/core/kernel.py,sha256=BY86dmUaU95zw22RlhZXbbBGpuOvsxfanMqzFr6Us0w,46939
50
+ lino/core/kernel.py,sha256=oeBQb5rbsSKWPXW67gHRTup5IXKGBptVbPAfiUjHVog,47664
51
51
  lino/core/keyboard.py,sha256=W3jA6qtB5HMppoNnd_6PgIM7ZlyHilJEhBvdeZTY7Xk,1283
52
52
  lino/core/layouts.py,sha256=Wojx5UUyhy7PsZE8FWmiXcmZDj4wz2y_1_wlz1G560Q,28663
53
53
  lino/core/menus.py,sha256=W0Co9K-ayvfX5Zt5rgSxJrFRejtiYrwIR5EecdYXPNc,10857
@@ -55,11 +55,11 @@ lino/core/merge.py,sha256=sKtTeZtHdoDKerdHj4NXuXXNzpKDsfdPaiq-CY0NqQc,9094
55
55
  lino/core/model.py,sha256=YENZ-v1sggtdTitgmC8jBmuihN1EsKXQMlbPAuTSat8,36870
56
56
  lino/core/permissions.py,sha256=Fnemz3NwWz21X0YATI9Q7ba2FcAdg-EMLHjIcbt_AVU,6840
57
57
  lino/core/plugin.py,sha256=8FdxFF5tqHK-N8aXANzpWXY97hj6Lty4ulM6PWcq5A8,6833
58
- lino/core/renderer.py,sha256=auQn2v9bBp6jLIH3hXRQXbrjFrTmsO1o0DwaoXBn1eE,47310
58
+ lino/core/renderer.py,sha256=C00J0L41hLv9b2sAzqSSrT0Lz5Fc78JnwHiq9LqF81c,47310
59
59
  lino/core/requests.py,sha256=xIq6kXhjLoYbSkW40_BH-uj0WvmfkvOVLGm2piiGtJo,95835
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=9Ji_aj1Q3HHY6d3VqS1La4JP5K7S0tAg17Ns7gQ_TYg,83676
62
+ lino/core/site.py,sha256=WRbYscZ7H8OnYMX0ptxjzNs9R6RvyBUy80f3kETo5Jw,82697
63
63
  lino/core/store.py,sha256=6pd4J5Y-U7Muz4mKFSL6K9KEZpJUbpM-I7RQTWyCo-8,51483
64
64
  lino/core/tables.py,sha256=Yoj-H2ASW9xIger8kuW8xst5A_tEmtWpV17L11Ebca0,24348
65
65
  lino/core/urls.py,sha256=06QlmN1vpxjmb5snO3SPpP6lX1pMdE60bTiBiC77_vQ,2677
@@ -97,7 +97,7 @@ lino/locale/zh_Hant/LC_MESSAGES/django.po,sha256=J9IELaIaZmBI2Vfu9HPIVA-g45QTYIx
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=MrOio6uBtQNW5gnbRrPIjarwUe18R-irxC7dLBBCpR4,1949
100
- lino/management/commands/demotest.py,sha256=yvxpl1G0Clt-iu7lY0DK9HVhaWyl_tQhYx0YUpddTWM,5041
100
+ lino/management/commands/demotest.py,sha256=NCUr3ttqU0oorOIc3Z6R_cNNgw5_OzHDbQf0HWlcB1g,4877
101
101
  lino/management/commands/diag.py,sha256=vt-NlZUx5gf7T4EpbM-gle3tAwMuwfPQY8lUgxjFaUw,478
102
102
  lino/management/commands/dump2py.py,sha256=X2u6OVkSb4MVQucF6jOKDDwRc8TCBNakW3UX_9S-n-U,20344
103
103
  lino/management/commands/dump_settings.py,sha256=tGOR4h_ueVe2DOk84ILFvzvndt0doshvaxRkybB-rnY,2009
@@ -107,7 +107,6 @@ lino/management/commands/makemigdump.py,sha256=TvNnFFjD6XRMFLbX8IEMSNDKTMPLTBCi8
107
107
  lino/management/commands/makescreenshots.py,sha256=fJF7ATZz7_s1IWkkYMEHVTLB5r5C1ny-kJp253BeoKM,8667
108
108
  lino/management/commands/makeui.py,sha256=qYz68fnUKNXicZfGy3GXdjIZubhg1KyQnqjMblFN_LY,4813
109
109
  lino/management/commands/mergedata.py,sha256=-dPvBtyc-AqKpQeL4TUd2IKHGe8EaaW8Citcsp_hwEU,2527
110
- lino/management/commands/monitor.py,sha256=-axtsW-uzk87ESR6-GSfUL0Y2ylB5BwHC6Xlx3fPxo4,5113
111
110
  lino/management/commands/passwd.py,sha256=S-7qyUWOaBnqRo_quwWewJjzwonqK4PBP2j8fuBGy3c,3012
112
111
  lino/management/commands/prep.py,sha256=23bnkHQrFHDPjGDI7Y2epXAC2bJ3oBYg0ZZV7g6ibTM,2124
113
112
  lino/management/commands/qtclient.py,sha256=ltZyz-SmIevotRmv26TmPiW8VTXKK37DUwdwwMUzrHI,4715
@@ -116,20 +115,20 @@ lino/management/commands/run.py,sha256=MiK53KIACYKDTKF6knJGwU-uzEApGnDxByi-3_nrT
116
115
  lino/management/commands/show.py,sha256=dS_TotAEeH8zo_wufQgca6q0Yj9qeWsJUOUcss6YD7E,1439
117
116
  lino/management/commands/syncscreenshots.py,sha256=XYZhqfm5_RwJzVFNGhHJKucl4j6T6mYo2GsDaUzvjAs,1561
118
117
  lino/management/commands/update_conf.py,sha256=saAaQdPhn3mNOoHcBxOFSf_vBEgM-aopTHq1sJN20Bo,1026
119
- lino/mixins/__init__.py,sha256=tUVJjAWMZv3gNOWKWodxeHXXOmEcxqvMCNXpltmXXO4,8832
120
- lino/mixins/dupable.py,sha256=ofyYrcT9WiYdVTkzgXyXaBu1kS-y197YnFTnZNALUHo,10233
118
+ lino/mixins/__init__.py,sha256=7_gW-TzHryL9hvcOx90Op-uBGvivtEj4e6bfNp6j_OE,8854
119
+ lino/mixins/dupable.py,sha256=9DNZ9xsgSFsxchqzlo86jQVecXABuDeEZ62tamj-X9A,10235
121
120
  lino/mixins/duplicable.py,sha256=a5-1jZZWX-kgKg5GNhV6yaSGOgfTyd2lWHtY35bVmes,4247
122
121
  lino/mixins/human.py,sha256=YDIfIHHAaVmzd3uGsJp_vDvkaBWOp09I7i4AGNy9YsQ,13255
123
122
  lino/mixins/periods.py,sha256=iFqUCUZlgUW2GmEHRl9suwJedztrXLluQhgFpu7Uj54,11479
124
123
  lino/mixins/polymorphic.py,sha256=MLbfOeIYRoDZO4048X2oWhG5cxds2pLkwciXcw1xjVQ,9393
125
124
  lino/mixins/printable.py,sha256=4U8M1lrTjUeuaPwrcWoanCBo53iAxiNpSTsVctI-gI0,199
126
125
  lino/mixins/ref.py,sha256=ZnyTcpHgcbYwDwgaBwLc5cGLQqz8MmjAypSEgPB7Ql4,5272
127
- lino/mixins/registrable.py,sha256=0m68YGlipRhE83IsEvXATZtvyxtMsH-Dpd5TGZh_GzE,6936
126
+ lino/mixins/registrable.py,sha256=I9KqbYf0kZdbpD4UBUwNK7_OhRdWQDVqK0tkSU-M2ZU,7114
128
127
  lino/mixins/sequenced.py,sha256=6FiHJX2ZIraqUofdnb082b978PISNbpd2Vr87YA_1pg,16460
129
128
  lino/modlib/__init__.py,sha256=cO31gNu2oRkp7o2v3D9gK2H7j4jF9rbVyPxPZhZQwrQ,940
130
129
  lino/modlib/about/__init__.py,sha256=jhqGQIXU1o7KkmmQjfwPKJc3buibB09Fy55carAmi7U,342
131
130
  lino/modlib/about/choicelists.py,sha256=2bxDb2u7cFacBOgLoEWrMmzQ4BJ3x1pmhdgqxzUp-Rw,1424
132
- lino/modlib/about/models.py,sha256=7dbWnw5DXy0BWsvj9bW9ugRQIxD8B_My3yA_ReLUP5o,5126
131
+ lino/modlib/about/models.py,sha256=bT62zZrvdEF1JprwB152v_VmRMfEIbdXrkN7VZISfEg,5141
133
132
  lino/modlib/awesomeuploader/__init__.py,sha256=pUUnpdglJ0IDMBgW-ZQwnTOPHDRjItEiIWbSwv4qvBM,1825
134
133
  lino/modlib/awesomeuploader/models.py,sha256=LaK6IzLoCX4qMkVhsgdPfgawyFPe5rcHUgBFY0PbzWg,801
135
134
  lino/modlib/awesomeuploader/config/awesomeuploader/snippet.js,sha256=cZCGi0e9lDW96vCg3KVJ5DUtg2KHLNdnPo5KPRrQxv8,1792
@@ -163,8 +162,8 @@ lino/modlib/changes/__init__.py,sha256=3-CO7xI-U-rKDu_-WJg7N4FaIgqmFcj81uzyQlNYr
163
162
  lino/modlib/changes/models.py,sha256=wflXkqKSC-0ZynPGEd6PR4agP6zMuYO6v6v2NcRJgoo,9537
164
163
  lino/modlib/changes/utils.py,sha256=4jz8QXgaBxfmCBUvDeZeh7lkdwfTq7OBXBiFhMmANqA,2550
165
164
  lino/modlib/checkdata/__init__.py,sha256=raUCoYi4WZLKVLG3GqH0ml1eH_YJXqY-EgXsKUe6iRY,2829
166
- lino/modlib/checkdata/choicelists.py,sha256=OGv3mmr5DPPahoBliAOFIx_H6ysuW3ZpcrI4fIq1SB0,5244
167
- lino/modlib/checkdata/models.py,sha256=AfqGbL9z61kxFqA6OIuOlozUmqrlOy_uRR1rwXVXcU8,13538
165
+ lino/modlib/checkdata/choicelists.py,sha256=JlBK8VeJK6yAFiqeU1Zx7m2wpDtTpZ1o6YPjnig6g70,5260
166
+ lino/modlib/checkdata/models.py,sha256=csN69hFVkQQcSwxPmY02ofXsWZvA7z2T-N1Pg19t3Wk,13758
168
167
  lino/modlib/checkdata/roles.py,sha256=xjQ882-BxYUoHbv2pzebs7MWl6snA2fKivFDTRzW7sQ,295
169
168
  lino/modlib/checkdata/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
170
169
  lino/modlib/checkdata/fixtures/checkdata.py,sha256=TY9yIBwB5nEw0e6RTXqRwYdiCaLkkYTwWmFGcVBw2ow,332
@@ -174,22 +173,22 @@ lino/modlib/checkdata/management/commands/checkdata.py,sha256=CjtGm26qPxIWgkn5a9
174
173
  lino/modlib/comments/__init__.py,sha256=XoRLIB-pSsz4EfA2FhsbKQ27fsW_AAvS7SyA0_vhHv8,1678
175
174
  lino/modlib/comments/choicelists.py,sha256=SIA7P_KwtaayqOJxCkwyZouK0Z23-2v4ZFV9a0Zexnk,3314
176
175
  lino/modlib/comments/mixins.py,sha256=h1VvM4h-6rEixziz0r7vJCptM7T7K6i4r50Scz5riws,4413
177
- lino/modlib/comments/models.py,sha256=bEfmLjLcugG8Fhfg7Sn2yXRm9m_pfayqNzi31XWJR7k,15922
176
+ lino/modlib/comments/models.py,sha256=6QMihylQW0z0nbNyVznp0pU_tWGSor79KczoYPjwtIw,15926
178
177
  lino/modlib/comments/roles.py,sha256=z3gctvlTa_5PAs-D4pounyzNyuEc31jTFq9g33r6Z1w,751
179
178
  lino/modlib/comments/ui.py,sha256=OYeYHJZUvou3d21OcChVhCWtCd7ildGNxIgRoM37Gng,9955
180
179
  lino/modlib/comments/config/comments/comments.js,sha256=7oAnNyx_MKM1iWPu-QSp6iKfnOVdgq7EciQPpxTvYU8,242
181
180
  lino/modlib/comments/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
182
- lino/modlib/comments/fixtures/demo2.py,sha256=GB8ADRsQPNCEZ16LFWHMlYNZIPlPmWbUgW4VjRvy4ho,25317
181
+ lino/modlib/comments/fixtures/demo2.py,sha256=DSIqNtGOQlwbg8k43nE2ax1x-H_ifRsozvw6LZM330Y,25407
183
182
  lino/modlib/dashboard/__init__.py,sha256=_PFbmakUn8DShXyJY3EfAcuZtX5ofWnS-8dk7s1CrLw,1420
184
183
  lino/modlib/dashboard/models.py,sha256=EgRNg88dmz-OlIdi1SyEuerWMsRqKIfqE2MgKL7kApw,3510
185
184
  lino/modlib/dupable/__init__.py,sha256=fIQ8wj-T8ZbkjwQgW_-ankJsHLjPMepOTo32mJXNCvI,532
186
- lino/modlib/dupable/mixins.py,sha256=B7JRVDRszf7ojFBAeb-Md_fJMc9Sp5u-emLEAtR6s2g,6318
185
+ lino/modlib/dupable/mixins.py,sha256=SZ2Exe5q3ANYsP7gnEXQuQczwCDKdRfFvOavreu4mYI,6324
187
186
  lino/modlib/dupable/models.py,sha256=0watviKwTiVwlArC54V3IxVVfcB1Yg5kO6ed2xCM9a0,4595
188
187
  lino/modlib/export_excel/__init__.py,sha256=HrsrhXjIMvMHRGu8whH3A_WijZWrH35p2cQsFXK60DY,356
189
188
  lino/modlib/export_excel/models.py,sha256=A-lFS-xFDSPHcVbY0OI7VsuGr82jJyLDhXH2Dcv80Os,5039
190
189
  lino/modlib/extjs/__init__.py,sha256=6UBWAWSROwy3DfTXQmVUVJTF6eZ_e2k3BEfE4wtqVhU,10172
191
- lino/modlib/extjs/ext_renderer.py,sha256=DVUoCmy-knDO_i6s8yVGy8xI2qsWBA8GByiv29Lm8ts,60609
192
- lino/modlib/extjs/views.py,sha256=7IlzseAwtGPZtpsbow103mEV8VuKIH9uhfZmv9StneA,26292
190
+ lino/modlib/extjs/ext_renderer.py,sha256=KkzvGe7pyOB-_tMiiifqeDI2KuKZd-nGNic9XbV3uu0,60616
191
+ lino/modlib/extjs/views.py,sha256=CrX_tPshJtSkHT7raDDqn4B_XYamujRs-CgLzY4CBxg,26299
193
192
  lino/modlib/extjs/config/extjs/index.html,sha256=jO5hdNpFSkm9t0xhHD5hc8Hw1fSr6xb3zYq9aMyOI7Q,8603
194
193
  lino/modlib/extjs/config/extjs/linoweb.js,sha256=I4VYGmkK4htqZvHM9g-6psJF3pp7SvgHEI0I02Sxpvo,175127
195
194
  lino/modlib/extjs/config/extjs/service-worker.js,sha256=KEKWeehTlfBHk3r8NbsP9C5av_DukHORybxFOwbjYaQ,1767
@@ -3507,7 +3506,7 @@ lino/modlib/help/config/makehelp/models.tpl.rst,sha256=6N_-CRztf1-bdKUr3Q7IXA-f2
3507
3506
  lino/modlib/help/config/makehelp/plugin.tpl.rst,sha256=D2eXEv_GFzsutTUtk64u6R-X2ACRD0UElCVH7RBZXec,492
3508
3507
  lino/modlib/help/config/makehelp/plugins.tpl.rst,sha256=rj9uRsag-u2gY_VcqkzuBepXhC5nRSRpoxJGvJHBVN8,352
3509
3508
  lino/modlib/help/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3510
- lino/modlib/help/fixtures/demo2.py,sha256=3FcLnr2KJYMiZ-mSpjvWCbn49VaGp7vM2wY1ZDtLb5M,814
3509
+ lino/modlib/help/fixtures/demo2.py,sha256=P719oIom7C7l_65-pKrZgsD6lhWUzoQCaNTQyVgeyoo,892
3511
3510
  lino/modlib/help/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3512
3511
  lino/modlib/help/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3513
3512
  lino/modlib/help/management/commands/makehelp.py,sha256=ylVcT9TNOYK7N-hCm0d3ZQ76CTzRxUd8nXV2PbJ2JYs,18600
@@ -3518,7 +3517,7 @@ lino/modlib/ipdict/models.py,sha256=9-pjj_xXdndhQaQI8sgXcmODxurST_aFcShGwomiYKk,
3518
3517
  lino/modlib/jinja/__init__.py,sha256=XSa-e1qZGabl8EmRDKPRtmzgBRole5ZbxAUBR_m-ds0,3418
3519
3518
  lino/modlib/jinja/choicelists.py,sha256=QHjWQWLnJCKSGnLIKeGqnCw41JYvcbTkCeXjBpWh23w,1466
3520
3519
  lino/modlib/jinja/loader.py,sha256=MX027X_UuQPqq0wOUr06QnOkdTzGpksNv0Om1CGp61I,1765
3521
- lino/modlib/jinja/mixins.py,sha256=FU0AcDyJwcip4EAlkG5vjuLFVZFLyiXqPXU4bjGx-S0,2490
3520
+ lino/modlib/jinja/mixins.py,sha256=X9ARAUsrD72sVj69cN3fl-auNnmz_0gVfG_-WXPHx_o,2837
3522
3521
  lino/modlib/jinja/models.py,sha256=vXNFS78qP-qIzeSmnXJNOpvW_IfH1h6hhPgYjfkvvD0,207
3523
3522
  lino/modlib/jinja/renderer.py,sha256=PtjhJdidlOOGzRdyUQlaEIj2FhFFuthFB80-bkSfsoM,6156
3524
3523
  lino/modlib/jinja/config/jinja/status.jinja.rst,sha256=XEsfXd82B0fLsBfds5-pXdeDWVr4ccTv7WyGa9ayigk,312
@@ -3536,8 +3535,8 @@ lino/modlib/linod/__init__.py,sha256=efmj_Kz3OO2zF1lvs7P459iufYGimH1-6Ge6Cbq85tQ
3536
3535
  lino/modlib/linod/choicelists.py,sha256=Cu82s1QpcGFmKUXJsg-7TSqpaESBCZKOEfxzFlJP06I,2626
3537
3536
  lino/modlib/linod/consumers.py,sha256=XBjA1fflJ-e9yWRMKXyQAhrOklYzs5JRhEeGMOKWFqM,6730
3538
3537
  lino/modlib/linod/mixins.py,sha256=gZci22_m3GNUNycLSvMelG1sUQLCCho2gniPTegopMs,13027
3539
- lino/modlib/linod/models.py,sha256=tbPKNk3BLnnAPWvbNrWhz713b3IPM0z8UoctJcwVhhw,2357
3540
- lino/modlib/linod/routing.py,sha256=FiG0JVqp9TWWkNpl9Y_50UCAJ7ZEImDXkQUhlg4aGL4,2094
3538
+ lino/modlib/linod/models.py,sha256=yqGytDq7KxkHBCZpwF-7GQdR3nGh6-rBB-gLkvqoouQ,2361
3539
+ lino/modlib/linod/routing.py,sha256=3pYJT6FbaVMj6rKkDVv3E5VTFFc9nglIDeo6dgAKu8Q,2399
3541
3540
  lino/modlib/linod/utils.py,sha256=dE973Xib6Be1DvNsZ0M5wzY_jpkk35R21WKs-jQPorM,339
3542
3541
  lino/modlib/linod/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3543
3542
  lino/modlib/linod/fixtures/linod.py,sha256=qCFU2IktRVEdt1lChwu6kZLLnd4Ppfq_x9_2qGYelTY,1173
@@ -3545,16 +3544,16 @@ lino/modlib/linod/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
3545
3544
  lino/modlib/linod/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3546
3545
  lino/modlib/linod/management/commands/linod.py,sha256=RsUgUBz-soF8wkfgUE8KJiLZltrhEeCm1m7AFNthUps,3826
3547
3546
  lino/modlib/memo/__init__.py,sha256=GdzNURo3v_o5PxTBZ_KNkzrjlcDzn4AO95pYBbHmk8Q,5389
3548
- lino/modlib/memo/mixins.py,sha256=Ij_bFcBY_ivo5t2HWArEeRkxIQhg61iP0sTNnhZpRac,11246
3547
+ lino/modlib/memo/mixins.py,sha256=wk1bwb28GTBwXI2QJSo-6kJLfpjFwXTf5S8McjmZ0Gw,11251
3549
3548
  lino/modlib/memo/models.py,sha256=zUEvWu0dK5QhkU3DeMqNqsrzSUzOl6DLZaJBNytfgrs,4388
3550
3549
  lino/modlib/memo/parser.py,sha256=AKMfdbNFl9ehxl8TTFWwQ-ngfx7CD7hUjVA6bUNBY1c,12997
3551
3550
  lino/modlib/memo/views.py,sha256=H3g_nuiMzguptXLSWaWLJClU7BefXPFn9Rh8UIVVBeg,555
3552
3551
  lino/modlib/notify/__init__.py,sha256=suo7EMVdyTPTPFwuU2KZL25PwIEstTvvR4Turgdz7UE,6926
3553
3552
  lino/modlib/notify/actions.py,sha256=ClRKDjmgx3m43IZ5cx0TdxXN_pU6hLIlo_jCwEW2LhY,2468
3554
- lino/modlib/notify/api.py,sha256=dIuyn7uRF1dDgoGAqvFQvuJImLl1Q0g79skBJvnXMYs,3339
3553
+ lino/modlib/notify/api.py,sha256=xs5gAqIEJjkRYbRHAIMy47a1gHuIR6ZaPeK_0gk7EcU,4054
3555
3554
  lino/modlib/notify/choicelists.py,sha256=7ZkYNMOXNDfyTvdx8Sn-Gsma9f31o-6G1CtivXmQDmA,1324
3556
3555
  lino/modlib/notify/consumers.py,sha256=YaEAhAi_Oq5ovakuP5DI21YIAMvRqQcf4K8MBilcN2w,1529
3557
- lino/modlib/notify/mixins.py,sha256=E_PZuljGnE0Xwzxloe3vorCFTBZTsXhpTfHX0BrPvV4,3928
3556
+ lino/modlib/notify/mixins.py,sha256=rwsTgqpzvyiekOqHpxQRTPPdOhv2ZIPrW03YSATfdeE,3903
3558
3557
  lino/modlib/notify/models.py,sha256=LtefhX8wYtP2EYpFN1-VTV8ZAjSTbbbVoAh68LHU1KE,18464
3559
3558
  lino/modlib/notify/utils.py,sha256=e4TAJr8mgicwEjgyuP-bOiw1VGNA6tVo_hab1q-oSNc,328
3560
3559
  lino/modlib/notify/views.py,sha256=Ar2L_Tv1qqU5giHu2b0h_AKc3utvgfZwda4qncqoBsk,957
@@ -3583,25 +3582,27 @@ lino/modlib/periods/fixtures/std.py,sha256=iV6a2DNAhfYvO1VspGkcncEmygHK94zWdDZlH
3583
3582
  lino/modlib/printing/__init__.py,sha256=u1fq44d073-IDH_t8hWs1sQdlAHdsCP85sfEOMSW5L4,689
3584
3583
  lino/modlib/printing/actions.py,sha256=2-JORKcjJYuzK2kYmhqZl0gRR-4CrG7ul8mcFNfYYAI,11766
3585
3584
  lino/modlib/printing/choicelists.py,sha256=DM929pej7NUi1gm38nUr0t3-VANV95eqCLeW5ubh8y8,9712
3586
- lino/modlib/printing/mixins.py,sha256=WSgd7nbxcuIPeCG-zQd-jqTHzaTIuFtrGtn1kwMWIqU,8349
3585
+ lino/modlib/printing/mixins.py,sha256=4MLDD-A0zzuJNVcWJzbhyPfC9l6UUgKhm-m8DokN0aM,8353
3587
3586
  lino/modlib/printing/models.py,sha256=fd-BEKSLpgxPnkh9U7fg2tjNy39exBi3xJC9VzJuXdU,185
3588
3587
  lino/modlib/printing/utils.py,sha256=LUO9769wJvHCPZIqeVQ9XAS6UKJ6BfJbiwO8Dt1kHc4,737
3589
3588
  lino/modlib/printing/config/report/Default.odt,sha256=4X8UD9H_5Th2CELP0C6DTe4g0ZNUPXAg1C00xP3Qluc,10930
3590
3589
  lino/modlib/printing/config/report/Default.wk.html,sha256=4Ssx2LWm1gVpXf0Q4XoSY15WkhqRvx51Upab-IS1nm0,96
3591
3590
  lino/modlib/publisher/__init__.py,sha256=bGQduKmgzr_lU2N6H4q4I5ZmW-3iwdPuT2D8dpiVOiI,2644
3592
- lino/modlib/publisher/choicelists.py,sha256=fxvf0-1Y9YnBXaJVs8ZaNfLLQwyJO4BR3Uz_UeZtM7Q,8066
3593
- lino/modlib/publisher/mixins.py,sha256=eMEZeMQdaEp9tDkA5_YdqFGQec1q7Z1DAJZvU1cmoRM,6229
3594
- lino/modlib/publisher/models.py,sha256=DtlqvzFieGvtK9NtphnhPICB9RyAR380IHWKAtdAiKY,14449
3591
+ lino/modlib/publisher/choicelists.py,sha256=gVzjyp1sJ-XewAW-I_bCrKdTLgygLzh1ZwFI1rKyPdo,9070
3592
+ lino/modlib/publisher/mixins.py,sha256=yRxAtFSNe9aVvdY-th_a5wmQ76jBfKYWzeNUn-efJMA,6651
3593
+ lino/modlib/publisher/models.py,sha256=3g_tPavQ6ZFQsHYkzbBe_LXPeq0TUgsU1JrR6bxuRT0,17149
3595
3594
  lino/modlib/publisher/renderer.py,sha256=9RoyVMQcbwh_GcbDJO8BWhCKe1kpbDc9M45hrMqzpNs,1922
3596
- lino/modlib/publisher/ui.py,sha256=Evh97oxIut8FMyEzy8KFfNFEsNbVeKb7s1Fy3hOJOWk,4451
3597
- lino/modlib/publisher/views.py,sha256=Ompti6ywm4KrH5DLJ0TqIdHfGMNYb1Fe7mwOFEyT708,2149
3595
+ lino/modlib/publisher/ui.py,sha256=qWp3JWhO6zN_HSZvSlolmNTgiZgoJeY2_TIDh9nYf3Q,4491
3596
+ lino/modlib/publisher/views.py,sha256=_0ktDagke4TOWVekJOnaRJBrbKqn27Yfz3SC2UnHKTM,2423
3598
3597
  lino/modlib/publisher/config/publisher/base.html,sha256=nrWuN4lhP1O4ORdYTaY3fS2pc90yfUnfDYfm2Jtr7hQ,198
3599
3598
  lino/modlib/publisher/config/publisher/default_list.pub.html,sha256=3ePc4U3xZxE-pqtzlnB9CRQWu8OQrtfXKEjyuc8BBUQ,578
3600
3599
  lino/modlib/publisher/config/publisher/item.pub.html,sha256=973RYgCAYG1SYIB4bwfVZFVTUo0WD2I98PsoPgjQ8XA,154
3601
3600
  lino/modlib/publisher/config/publisher/login.html,sha256=_j_MmwVv_UohMnEDADo99XQmUqGvOWTlCDPW1oaSWpo,495
3602
- lino/modlib/publisher/config/publisher/page.pub.html,sha256=Oxo9FD968sNRgY4GZulRMBZ4A2LHj2oVoWBVNxS7imE,1279
3601
+ lino/modlib/publisher/config/publisher/page.pub.html,sha256=jnWP-uhhJZ0fjNHJ1Fo-0AIsiOFopzesOdyVtuSuM_w,2264
3603
3602
  lino/modlib/publisher/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3604
- lino/modlib/publisher/fixtures/std.py,sha256=PtFH0JoN5rCGHCzFTYeyX9bBidD3cLdkXPygCrUGdwU,945
3603
+ lino/modlib/publisher/fixtures/demo2.py,sha256=KrF672tNLlhMX6EkxKDfcvvE9pGH4k9NgF7Rk5DkiLg,366
3604
+ lino/modlib/publisher/fixtures/std.py,sha256=7xpMOr4kd-4SX8uhwxagktUlcXAr6fdZfD-H519CR6g,987
3605
+ lino/modlib/publisher/fixtures/synodalworld.py,sha256=aoHrQOu7qPWsPWbvEOfoVMdWQPFYBM85EUmJgcbS0tI,398
3605
3606
  lino/modlib/restful/__init__.py,sha256=9CqWTQkJ2KpLW5MI1bKqKZU_7nXxodxl7HSgc8Agwmw,1506
3606
3607
  lino/modlib/restful/fields.py,sha256=8dik0q2LaCtJhQX1lu-fe-y_38xdhAWy1ZX3EKmJWfs,567
3607
3608
  lino/modlib/restful/serializers.py,sha256=AVyA19UkRUJ9AjlUN0fJyrj1LgfOyp-a2ANcVkecWtA,1143
@@ -3639,7 +3640,7 @@ lino/modlib/system/__init__.py,sha256=cXb8cPBr3t18mXtiY_ScqscdUgd6MvSrsHebfqY-SH
3639
3640
  lino/modlib/system/actions.py,sha256=jmSYPQDvIQxDth8MaJ9GpkmSCufLGWjmAjKdHAIWE48,1126
3640
3641
  lino/modlib/system/choicelists.py,sha256=hClsYGgEDAuEYztCiivJlgReBdpDs8z3T_HRcS83ZFg,9578
3641
3642
  lino/modlib/system/mixins.py,sha256=fpj0O1218KgwGhRr8IHYRBXsNt5uXN87qVrx7dxvjys,19031
3642
- lino/modlib/system/models.py,sha256=3BYWRbd1jCIJvUVLHUw53ayQmquNotXVNCH_rVzFSmU,10902
3643
+ lino/modlib/system/models.py,sha256=9cXmONc-LPYMhc9-K63TTC20HrC3S6dHxVA1J7Bt4FQ,10906
3643
3644
  lino/modlib/system/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3644
3645
  lino/modlib/system/fixtures/std.py,sha256=ko6TxoQ6hQvUJT6BYOFBB8-F_kxu8VlRhlEcUg248Uc,102
3645
3646
  lino/modlib/tinymce/__init__.py,sha256=do3zN5Mo2ftsegHTV_KUVaHl44RJ8WHBSS4Jb7BExHs,4879
@@ -4397,7 +4398,7 @@ lino/modlib/uploads/choicelists.py,sha256=-7SODzA_0afrBgPh7-j8kpz0VdzDXy2U7dLhhw
4397
4398
  lino/modlib/uploads/dummy_upload.odt,sha256=VHG2YkykCg8VqoXx8Hm37QYunvdbmg_jCyygiZseKF8,10447
4398
4399
  lino/modlib/uploads/dummy_upload.pdf,sha256=hdAx7s3V10lqVekSGugzkn_Hqxx3V4OkCNVNQI2OsFY,18730
4399
4400
  lino/modlib/uploads/mixins.py,sha256=Vpr7BB0NvDIyG59KnR-j-4KH8CleSGmtjUSrS5YGeu0,8356
4400
- lino/modlib/uploads/models.py,sha256=aqneUEaai_wgmZTtm1Tj5RNc9k3yGQVPzLE2aj7MdCw,17527
4401
+ lino/modlib/uploads/models.py,sha256=d90XVswkatb5MtIGLJMNtxBaKTToVuNyxoqOR691gTc,17535
4401
4402
  lino/modlib/uploads/roles.py,sha256=ae0wf_vC4O6MffDx8abpjW1M2oWOp5VzOvt_ckk72Cc,191
4402
4403
  lino/modlib/uploads/ui.py,sha256=gVQQJUJEfBAESkU5ueKXs_XKZYiXYaIMh1CyNXBrcyk,8666
4403
4404
  lino/modlib/uploads/utils.py,sha256=MQAJbI5sUe0RCXCrkxpNKUJFxHpz1bOMqKQy3QsA76o,3343
@@ -4492,7 +4493,7 @@ lino/sphinxcontrib/logo/templates/links.html,sha256=SccaqiI_Fg4lYT_nxDWfGZXLLD8F
4492
4493
  lino/sphinxcontrib/logo/templates/part-of-synodalsoft.html,sha256=tHh0SfRoIqpoxkA5ZA5_Obc_9Bs5Uh4d3qUSC3oprdw,1427
4493
4494
  lino/sphinxcontrib/logo/templates/unused_copyright.html,sha256=ct3QmWrUk0IS6hvr_XH5fMbseTH7CTzKhRH1UOUTWG8,205
4494
4495
  lino/static/blueprint.css,sha256=meK9oC38foNI4x_YuylIU9TJdGiZi4HM4PFAWpjoiiw,131
4495
- lino/static/bootstrap.css,sha256=-8bGCqxOzajs3T4lvqWjTUGvvQ1uwVH886fr4cIKPs4,1156
4496
+ lino/static/bootstrap.css,sha256=_fWS3mQj4XzXZVo5KGhZe31uHWjJqXHIck5gRv7AZLY,1160
4496
4497
  lino/static/contacts.Person.jpg,sha256=rNjIfwxfjh0kgrQBeNWyJvBdr5j2y6fo9_VwHU9JNAE,31796
4497
4498
  lino/static/favicon1.ico,sha256=0dr7FW9j_qWDl_z5kKtNhWELExVUblctxH0bfaVoNo0,2238
4498
4499
  lino/static/favicon2.ico,sha256=gtVZpKmRoZqWCgP6GgJkviX1FwPocx8K1P5fTGFOPo0,3906
@@ -4588,8 +4589,8 @@ lino/utils/cycler.py,sha256=2LGMhMJX5At5ln4yZvmNleWROs-CA_YE_UCzxzvxK4U,1548
4588
4589
  lino/utils/daemoncommand.py,sha256=NjGShiz09fddIV0WU0jK2nzO_CwPj1MfdmgwAOYZi4M,11525
4589
4590
  lino/utils/dataserializer.py,sha256=-_xHXaGwDSO6-sYEHEa2BtEmKS8bW6gsYx4dV-GbvDs,3779
4590
4591
  lino/utils/dates.py,sha256=eWF5WxA5uJf51Y9PKvDVBWD8yIf6yBF6oO6TeU3ujzw,1030
4591
- lino/utils/dbfreader.py,sha256=4sXOGBKX6DFQCEPkCMfnJAVneHMyDzJQB5tsYAq90vQ,12205
4592
- lino/utils/dbhash.py,sha256=S2jCCYUItovF8Qkc2kVk5WS14U1c3RjijkUGqYs20_c,3450
4592
+ lino/utils/dbfreader.py,sha256=KrGsBAFV2tF9pAd9jsmBAFpZ-yw-CRymZHEn_q9IL90,13784
4593
+ lino/utils/dbhash.py,sha256=TMnUGhOFbaip6L2Y4ENhCOS79ujJiO0CyYcOCZyHiK4,3505
4593
4594
  lino/utils/dblogger.py,sha256=kr0YxQY6veymvNg5A4tsvkqW8haRWdwqL0C-_9_QTg0,721
4594
4595
  lino/utils/diag.py,sha256=8BGsPrLd1_Fympy3PKiTpX1MdMWGApXr6IBoVOkWRxE,18314
4595
4596
  lino/utils/djangotest.py,sha256=Phz1qNp0wDonZRja5dxbCk0Xl3a73gZNiKK8v9tAgZg,8334
@@ -4633,8 +4634,8 @@ lino/utils/xml.py,sha256=EGDnO1UaREst9fS7KTESdbHnrrVCwKbRQdvut6B6GmQ,1612
4633
4634
  lino/utils/mldbc/__init__.py,sha256=QqWRlzeXaOmFfbCk-vTY3SZMn1-FCf67XnpZdd_Nim0,1134
4634
4635
  lino/utils/mldbc/fields.py,sha256=tAX8G5UKigr9c6g0F3ARIjZZtg406mdaZ--PWSbiH9E,2873
4635
4636
  lino/utils/mldbc/mixins.py,sha256=CkYe5jDa7xp9fJq_V8zcZf8ocxgIjUgHc9KZccvA_Yw,1945
4636
- lino-25.4.2.dist-info/METADATA,sha256=8d3X3OB46Yp6iZ6qzfVpolugwultuOMXphYCLHdK7eg,42534
4637
- lino-25.4.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
4638
- lino-25.4.2.dist-info/licenses/AUTHORS.rst,sha256=8VEm_G4HOmYEa4oi1nVoKKsdo4JanekEJCefWd2E8vk,981
4639
- lino-25.4.2.dist-info/licenses/COPYING,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
4640
- lino-25.4.2.dist-info/RECORD,,
4637
+ lino-25.4.4.dist-info/METADATA,sha256=PnRkn-GRvLWsBi5pyAO6iggfwDKypr8ZWdiuhYqRN0Y,42534
4638
+ lino-25.4.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
4639
+ lino-25.4.4.dist-info/licenses/AUTHORS.rst,sha256=8VEm_G4HOmYEa4oi1nVoKKsdo4JanekEJCefWd2E8vk,981
4640
+ lino-25.4.4.dist-info/licenses/COPYING,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
4641
+ lino-25.4.4.dist-info/RECORD,,