lino 25.1.4__py3-none-any.whl → 25.1.5__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 +1 -1
- lino/core/requests.py +1 -1
- lino/management/commands/demotest.py +5 -5
- lino/management/commands/makescreenshots.py +3 -2
- lino/modlib/comments/fixtures/demo2.py +28 -8
- lino/modlib/uploads/__init__.py +5 -7
- lino/modlib/uploads/fixtures/demo.py +53 -0
- lino/modlib/uploads/ui.py +1 -1
- lino/modlib/users/__init__.py +1 -0
- lino/modlib/users/fixtures/demo2.py +4 -3
- lino/modlib/users/ui.py +3 -7
- {lino-25.1.4.dist-info → lino-25.1.5.dist-info}/METADATA +1 -1
- {lino-25.1.4.dist-info → lino-25.1.5.dist-info}/RECORD +16 -15
- {lino-25.1.4.dist-info → lino-25.1.5.dist-info}/WHEEL +0 -0
- {lino-25.1.4.dist-info → lino-25.1.5.dist-info}/licenses/AUTHORS.rst +0 -0
- {lino-25.1.4.dist-info → lino-25.1.5.dist-info}/licenses/COPYING +0 -0
lino/__init__.py
CHANGED
lino/core/requests.py
CHANGED
@@ -495,7 +495,7 @@ class BaseRequest:
|
|
495
495
|
if self.actor is not None:
|
496
496
|
if master is None:
|
497
497
|
master = self.actor.master
|
498
|
-
if master_type
|
498
|
+
if master_type and ContentType is not None:
|
499
499
|
try:
|
500
500
|
master = ContentType.objects.get(pk=master_type).model_class()
|
501
501
|
except ContentType.DoesNotExist:
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# -*- coding: UTF-8 -*-
|
2
|
-
# Copyright 2021 Rumma & Ko Ltd
|
2
|
+
# Copyright 2021-2025 Rumma & Ko Ltd
|
3
3
|
# License: GNU Affero General Public License v3 (see file COPYING for details)
|
4
4
|
|
5
5
|
from lino import logger
|
@@ -18,7 +18,7 @@ from lino.utils.test import DemoTestCase
|
|
18
18
|
|
19
19
|
|
20
20
|
class TestCase(DemoTestCase):
|
21
|
-
tested_urls = ("/", "/?su=3", "/?su=
|
21
|
+
tested_urls = ("/", "/?su=3", "/?su=123")
|
22
22
|
|
23
23
|
def test_get(self):
|
24
24
|
if False:
|
@@ -43,7 +43,7 @@ class TestCase(DemoTestCase):
|
|
43
43
|
if settings.SITE.user_model:
|
44
44
|
for user in settings.SITE.user_model.objects.all():
|
45
45
|
if user.user_type:
|
46
|
-
d = self.login(user.username,
|
46
|
+
d = self.login(user.username, dd.plugins.users.demo_password)
|
47
47
|
# self.client.force_login(user)
|
48
48
|
for url in self.tested_urls:
|
49
49
|
# logger.debug("%s gets %s", user.username, url)
|
@@ -93,7 +93,7 @@ class TestCase(DemoTestCase):
|
|
93
93
|
|
94
94
|
# Even with the right password you cannot unlock a blacklisted ip
|
95
95
|
self.assertEqual(
|
96
|
-
login(
|
96
|
+
login(dd.plugins.users.demo_password), "Too many authentication failures from 127.0.0.1"
|
97
97
|
)
|
98
98
|
|
99
99
|
# After max_blacklist_time, the IP gets removed from the blacklist, but
|
@@ -109,7 +109,7 @@ class TestCase(DemoTestCase):
|
|
109
109
|
self.assertEqual(rec.login_failures, 5)
|
110
110
|
|
111
111
|
time.sleep(1)
|
112
|
-
self.assertEqual(login(
|
112
|
+
self.assertEqual(login(dd.plugins.users.demo_password), "Now signed in as Robin Rood")
|
113
113
|
|
114
114
|
# Once you manage to authenticate, your ip address gets removed from the
|
115
115
|
# blacklist, i.e. when you log out and in for some reason, you get again
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# -*- coding: UTF-8 -*-
|
2
|
-
# Copyright 2012-
|
2
|
+
# Copyright 2012-2025 Rumma & Ko Ltd
|
3
3
|
# License: GNU Affero General Public License v3 (see file COPYING for details)
|
4
4
|
"""
|
5
5
|
Writes screenshots to <project_dir>/media/cache/screenshots
|
@@ -36,6 +36,7 @@ from django.test.testcases import StoppableWSGIServer
|
|
36
36
|
|
37
37
|
from lino.core.utils import obj2str, full_model_name, sorted_models_list
|
38
38
|
from lino.utils import screenshots
|
39
|
+
from lino.api import dd
|
39
40
|
from rstgen.utils import SubProcessParent
|
40
41
|
|
41
42
|
PHANTOMJS = "/home/luc/snapshots/phantomjs-1.9.0-linux-i686/bin/phantomjs"
|
@@ -223,7 +224,7 @@ class Command(BaseCommand):
|
|
223
224
|
ctx = dict(
|
224
225
|
url=url, target=target, username=ss.ar.get_user().username
|
225
226
|
)
|
226
|
-
ctx.update(password=
|
227
|
+
ctx.update(password=dd.plugins.users.demo_password)
|
227
228
|
ctx.update(remote_user_header=settings.SITE.remote_user_header)
|
228
229
|
f = file("tmp.js", "wt")
|
229
230
|
f.write(JS_SRC % ctx)
|
@@ -44,11 +44,26 @@ def objects():
|
|
44
44
|
# use_linod = settings.SITE.use_linod
|
45
45
|
# settings.SITE.use_linod = False
|
46
46
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
47
|
+
# Add two empty bodies that will be filled later:
|
48
|
+
BODIES.items.insert(0, "")
|
49
|
+
BODIES.items.insert(0, "")
|
50
|
+
MENTIONED = Cycler()
|
51
|
+
for model in rt.models_by_base(Commentable):
|
52
|
+
if model.memo_command is not None:
|
53
|
+
MENTIONED.items += list(model.objects.all())
|
54
|
+
|
55
|
+
# if dd.is_installed("contacts"):
|
56
|
+
# BODIES.items.append("")
|
57
|
+
# MENTIONED = Cycler()
|
58
|
+
# MENTIONED.items += list(rt.models.contacts.Person.objects.all())
|
59
|
+
# MENTIONED.items += list(rt.models.contacts.Company.objects.all())
|
60
|
+
|
61
|
+
if dd.get_plugin_setting("uploads", "with_volumes", False):
|
62
|
+
Upload = rt.models.uploads.Upload
|
63
|
+
SCREENSHOTS = Cycler(Upload.objects.filter(volume__ref="screenshots"))
|
64
|
+
assert len(SCREENSHOTS) > 0
|
65
|
+
else:
|
66
|
+
SCREENSHOTS = None
|
52
67
|
|
53
68
|
for model in rt.models_by_base(Commentable):
|
54
69
|
OWNERS = Cycler(model.objects.order_by("-id"))
|
@@ -73,9 +88,14 @@ def objects():
|
|
73
88
|
# txt = TXT.pop() # txt = "Hackerish comment"
|
74
89
|
body = BODIES.pop()
|
75
90
|
if not body:
|
76
|
-
|
77
|
-
|
78
|
-
|
91
|
+
if SCREENSHOTS is None or i % 2:
|
92
|
+
cmd1 = MENTIONED.pop().obj2memo()
|
93
|
+
cmd2 = MENTIONED.pop().obj2memo()
|
94
|
+
body = f"This is a comment about {cmd1} and {cmd2}."
|
95
|
+
else:
|
96
|
+
upload = SCREENSHOTS.pop()
|
97
|
+
body = f"Here is a screenshot:\n\n [file {upload.pk}]"
|
98
|
+
|
79
99
|
obj = Comment(user=u, owner=owner, body=body, reply_to=reply_to)
|
80
100
|
obj.on_create(ses)
|
81
101
|
obj.after_ui_create(ses)
|
lino/modlib/uploads/__init__.py
CHANGED
@@ -29,13 +29,11 @@ class Plugin(ad.Plugin):
|
|
29
29
|
"""Whether to use PIL, the Python Imaging Library.
|
30
30
|
"""
|
31
31
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
#
|
36
|
-
#
|
37
|
-
# print("20240907 created", self.get_uploads_root())
|
38
|
-
# print("20240907 created", self.get_volumes_root())
|
32
|
+
with_volumes = True
|
33
|
+
"""Whether to use library files (volumes).
|
34
|
+
"""
|
35
|
+
# TODO: Also remove the Volume model and its actors when with_volumes is set
|
36
|
+
# to False.
|
39
37
|
|
40
38
|
def get_uploads_root(self):
|
41
39
|
# return join(self.site.django_settings["MEDIA_ROOT"], "uploads")
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
# Copyright 2015-2025 Rumma & Ko Ltd
|
3
|
+
# License: GNU Affero General Public License v3 (see file COPYING for details)
|
4
|
+
|
5
|
+
import os
|
6
|
+
from lino.api import dd, rt
|
7
|
+
from lino.modlib.uploads.mixins import make_uploaded_file
|
8
|
+
|
9
|
+
try:
|
10
|
+
from lino_book import DEMO_DATA
|
11
|
+
except ImportError:
|
12
|
+
DEMO_DATA = None
|
13
|
+
|
14
|
+
def walk(p):
|
15
|
+
# print("20230331", p)
|
16
|
+
for c in sorted(p.iterdir()):
|
17
|
+
if c.is_dir():
|
18
|
+
for cc in walk(c):
|
19
|
+
yield cc
|
20
|
+
else:
|
21
|
+
yield c
|
22
|
+
|
23
|
+
def objects():
|
24
|
+
|
25
|
+
if DEMO_DATA is None:
|
26
|
+
# logger.info("No demo data because lino_book is not installed")
|
27
|
+
return
|
28
|
+
if not dd.plugins.uploads.with_volumes:
|
29
|
+
return
|
30
|
+
|
31
|
+
Upload = rt.models.uploads.Upload
|
32
|
+
Volume = rt.models.uploads.Volume
|
33
|
+
|
34
|
+
def load_vol(root_dir, ref, desc, **kwargs):
|
35
|
+
vol = Volume(ref=ref, description=desc, root_dir=root_dir)
|
36
|
+
yield vol
|
37
|
+
kwargs.update(volume=vol)
|
38
|
+
chop = len(str(root_dir)) + 1
|
39
|
+
for fn in walk(root_dir):
|
40
|
+
fns = str(fn)[chop:]
|
41
|
+
# print("20230325 {}".format(fn))
|
42
|
+
yield Upload(
|
43
|
+
library_file=fns,
|
44
|
+
description=fns.replace('_', ' ').replace('/', ' '),
|
45
|
+
**kwargs)
|
46
|
+
|
47
|
+
if dd.is_installed('sources'):
|
48
|
+
yield (luc := rt.models.sources.Author(first_name="Luc", last_name="Saffre"))
|
49
|
+
yield (source := rt.models.sources.Source(
|
50
|
+
author=luc, year_published="2022", title="Private collection"))
|
51
|
+
yield load_vol(DEMO_DATA / 'photos', "photos", "Photo album", source=source)
|
52
|
+
|
53
|
+
yield load_vol(DEMO_DATA / 'screenshots', "screenshots", "Screenshots")
|
lino/modlib/uploads/ui.py
CHANGED
@@ -81,7 +81,7 @@ class Uploads(dd.Table):
|
|
81
81
|
model = "uploads.Upload"
|
82
82
|
# required_roles = dd.login_required((OfficeUser, OfficeOperator))
|
83
83
|
required_roles = dd.login_required(UploadsReader)
|
84
|
-
column_names = "file type user owner
|
84
|
+
column_names = "id description file type user owner *"
|
85
85
|
order_by = ["-id"]
|
86
86
|
default_display_modes = {
|
87
87
|
70: constants.DISPLAY_MODE_LIST,
|
lino/modlib/users/__init__.py
CHANGED
@@ -1,17 +1,18 @@
|
|
1
1
|
# -*- coding: UTF-8 -*-
|
2
|
-
# Copyright 2012-
|
2
|
+
# Copyright 2012-2025 Rumma & Ko Ltd
|
3
3
|
# License: GNU Affero General Public License v3 (see file COPYING for details)
|
4
4
|
"""
|
5
|
-
Set password
|
5
|
+
Set password to :setting:`users.demo_password` for all users.
|
6
6
|
|
7
7
|
This is an additive fixture designed to work also on existing data.
|
8
8
|
|
9
9
|
"""
|
10
10
|
|
11
11
|
from django.conf import settings
|
12
|
+
from lino.api import dd
|
12
13
|
|
13
14
|
|
14
15
|
def objects():
|
15
16
|
for u in settings.SITE.user_model.objects.exclude(user_type=""):
|
16
|
-
u.set_password(
|
17
|
+
u.set_password(dd.plugins.users.demo_password)
|
17
18
|
yield u
|
lino/modlib/users/ui.py
CHANGED
@@ -1,11 +1,7 @@
|
|
1
1
|
# -*- coding: UTF-8 -*-
|
2
|
-
# Copyright 2011-
|
2
|
+
# Copyright 2011-2025 Rumma & Ko Ltd
|
3
3
|
# License: GNU Affero General Public License v3 (see file COPYING for details)
|
4
|
-
|
5
|
-
|
6
|
-
Documentation is in :doc:`/specs/users` and :doc:`/dev/users`
|
7
|
-
|
8
|
-
"""
|
4
|
+
# Documentation: :doc:`/specs/users` and :doc:`/dev/users`
|
9
5
|
|
10
6
|
from datetime import datetime
|
11
7
|
from textwrap import wrap
|
@@ -135,7 +131,7 @@ class UsersOverview(Users):
|
|
135
131
|
def row_as_paragraph(cls, ar, self):
|
136
132
|
pv = dict(username=self.username)
|
137
133
|
if settings.SITE.is_demo_site:
|
138
|
-
pv.update(password=
|
134
|
+
pv.update(password=dd.plugins.users.demo_password)
|
139
135
|
btn = rt.models.about.About.get_action_by_name("sign_in")
|
140
136
|
# print btn.get_row_permission(ar, None, None)
|
141
137
|
btn = btn.request(
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: lino
|
3
|
-
Version: 25.1.
|
3
|
+
Version: 25.1.5
|
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=
|
3
|
+
lino/__init__.py,sha256=Mra9LM9wR3fgRgjFBaSaezhNxDMo36zcQqJfCHpCRhY,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
|
@@ -56,7 +56,7 @@ lino/core/model.py,sha256=MNTlg53WbKXPIne5wOHtO5V3nLdxoYTBMosz9JdFQJU,36386
|
|
56
56
|
lino/core/permissions.py,sha256=Fnemz3NwWz21X0YATI9Q7ba2FcAdg-EMLHjIcbt_AVU,6840
|
57
57
|
lino/core/plugin.py,sha256=oVvTsGoBBYmjvRgtyiFPIiHZQErH0ZlNjiUFtOk2dOM,6834
|
58
58
|
lino/core/renderer.py,sha256=jIXxNSpljZhb9tBMhUfDNbZD3XmxYzaS6SlipHx29L4,47291
|
59
|
-
lino/core/requests.py,sha256=
|
59
|
+
lino/core/requests.py,sha256=DAen9Jys3RfDMRQNbQFAo_h7iUipe7khhXTVT4RvcNY,92822
|
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=lEPAEF4OyBsF8NLy3y9O0GOcC5C1REc9ug9mIZR-mIs,83150
|
@@ -97,14 +97,14 @@ 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=
|
100
|
+
lino/management/commands/demotest.py,sha256=543acKUeqliMSgI_21ylSMvMlMpnjJej065MdSIkzNo,4920
|
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
|
104
104
|
lino/management/commands/initdb.py,sha256=U1yu7JoPG3sDVYmn985Z73oux1zPHl7Ur_U5UJbMBb4,11467
|
105
105
|
lino/management/commands/install.py,sha256=PljQJecr9s8rk5caR4rW0Fg1mL3S9JJHp6NqgB8bWTs,1888
|
106
106
|
lino/management/commands/makemigdump.py,sha256=TvNnFFjD6XRMFLbX8IEMSNDKTMPLTBCi8i5SRNcpYD8,1279
|
107
|
-
lino/management/commands/makescreenshots.py,sha256=
|
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
110
|
lino/management/commands/monitor.py,sha256=-axtsW-uzk87ESR6-GSfUL0Y2ylB5BwHC6Xlx3fPxo4,5113
|
@@ -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=
|
183
|
+
lino/modlib/comments/fixtures/demo2.py,sha256=mi1LY0-hotH-BG34bGgvCXkvDhVJPQ4uDfzKCicSIRM,25248
|
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
|
@@ -4388,7 +4388,7 @@ lino/modlib/tinymce/static/tinymce-4.1.10/skins/lightgray/img/loader.gif,sha256=
|
|
4388
4388
|
lino/modlib/tinymce/static/tinymce-4.1.10/skins/lightgray/img/object.gif,sha256=5qFeUrxKF7CFBzuo3r1HCOrWrj1MvrOIDGXLevxIl3c,152
|
4389
4389
|
lino/modlib/tinymce/static/tinymce-4.1.10/skins/lightgray/img/trans.gif,sha256=nPAg18O7p_WrEM2lSqvvk0-QbU-aOs-Z6efcbJhXljU,43
|
4390
4390
|
lino/modlib/tinymce/static/tinymce-4.1.10/themes/modern/theme.min.js,sha256=w41NrMzqdGEDk6OhjeuElBHlIr5Ntt_QpdoxNRFXa3Q,6431
|
4391
|
-
lino/modlib/uploads/__init__.py,sha256=
|
4391
|
+
lino/modlib/uploads/__init__.py,sha256=S6RNBs5vwCTnoAkPGRGWBQdKp1uOzWngc_B19iAmGsg,2675
|
4392
4392
|
lino/modlib/uploads/actions.py,sha256=lSdMmMmFaJRkJ2JkMX0aOVFNiisGVcI3PP3WqSQmK1E,1402
|
4393
4393
|
lino/modlib/uploads/choicelists.py,sha256=RVKLCEDly9VUa183ul5U9DRla8yOkMxrP4qMjTC5410,1327
|
4394
4394
|
lino/modlib/uploads/dummy_upload.odt,sha256=VHG2YkykCg8VqoXx8Hm37QYunvdbmg_jCyygiZseKF8,10447
|
@@ -4396,24 +4396,25 @@ lino/modlib/uploads/dummy_upload.pdf,sha256=hdAx7s3V10lqVekSGugzkn_Hqxx3V4OkCNVN
|
|
4396
4396
|
lino/modlib/uploads/mixins.py,sha256=4CSTEDU0ZBfdCV5RqV9SGc3r0rH7TlaGdB7tGGlVN-o,8000
|
4397
4397
|
lino/modlib/uploads/models.py,sha256=ATLVrV1cbmUj7Kv_pLOmBz3IkKpvYBjGriv74AkjD0M,16528
|
4398
4398
|
lino/modlib/uploads/roles.py,sha256=ae0wf_vC4O6MffDx8abpjW1M2oWOp5VzOvt_ckk72Cc,191
|
4399
|
-
lino/modlib/uploads/ui.py,sha256=
|
4399
|
+
lino/modlib/uploads/ui.py,sha256=dc17OUf8R6jqFFt6qzfCkBHIiMKEhoOBGFw0esWfA2g,8456
|
4400
4400
|
lino/modlib/uploads/utils.py,sha256=MQAJbI5sUe0RCXCrkxpNKUJFxHpz1bOMqKQy3QsA76o,3343
|
4401
4401
|
lino/modlib/uploads/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4402
|
+
lino/modlib/uploads/fixtures/demo.py,sha256=XY5oNgPvlPcL3B3nBMkqpAkfRZ0WGsr_2edOlpWTcF8,1661
|
4402
4403
|
lino/modlib/uploads/fixtures/demo3.py,sha256=q0bwZrx5XtRsRlFpsa33fL0sCl7IdCYaP9E1rhCnJt4,547
|
4403
|
-
lino/modlib/users/__init__.py,sha256=
|
4404
|
+
lino/modlib/users/__init__.py,sha256=40f-PheIyHqAzGXQbkvEKAnZ9_bb8RkaLAKIqNE96qg,3215
|
4404
4405
|
lino/modlib/users/actions.py,sha256=Nik2CoxKZWoGIsPT50mWESzHSTQx9WiBXWG64CUFyS8,18074
|
4405
4406
|
lino/modlib/users/choicelists.py,sha256=-X76C1NxIs5e7rFHp5Z0kjJkA1NlOP2vdLKGkI2wZRU,3876
|
4406
4407
|
lino/modlib/users/mixins.py,sha256=cMmTtR1-w9iWgdPlNF5kMybDR41D5kd1waGxEROSvSE,14150
|
4407
4408
|
lino/modlib/users/models.py,sha256=tdROzvtd3cMxsXKtYZjcUv2XJU7hQLbyBCiE0zVvaOo,16470
|
4408
4409
|
lino/modlib/users/roles.py,sha256=yi29ELbWU1VtteGARaxetxmsCkZQHA2oJiD0dXujMiE,320
|
4409
|
-
lino/modlib/users/ui.py,sha256=
|
4410
|
+
lino/modlib/users/ui.py,sha256=WA1bqVx1Z4yQzydHhvw_d5yE-teKdkHqd36ynz9ivPk,13127
|
4410
4411
|
lino/modlib/users/utils.py,sha256=bD0DJZsUy59xw9N-tx3W_h30_R10GT2qXZVzYtGWMa8,1963
|
4411
4412
|
lino/modlib/users/config/users/verification_response.html,sha256=8X1sEn53ploQgB6ds0UfmmkZpcvP9KSwWiQjRE_q970,772
|
4412
4413
|
lino/modlib/users/config/users/welcome_email.eml,sha256=bPSPbJKIPFRVWPDCuhNquQYwQtXzYGZgs7wICoiutS8,1078
|
4413
4414
|
lino/modlib/users/config/users/User/welcome.body.html,sha256=5k1cVYdYUd0vDLUzyRBtGy52A027wpRiGYLbdgaOKs0,141
|
4414
4415
|
lino/modlib/users/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4415
4416
|
lino/modlib/users/fixtures/demo.py,sha256=YHPhvjqAh-V9WHgFct2GQlQATZmS-W3Nry-X6mI05z8,199
|
4416
|
-
lino/modlib/users/fixtures/demo2.py,sha256=
|
4417
|
+
lino/modlib/users/fixtures/demo2.py,sha256=j2ke91wvpHs3kHpeztzV3nOG4rJvavkHv2YJo0dISdI,495
|
4417
4418
|
lino/modlib/users/fixtures/demo_users.py,sha256=FJz5gW95PbgxrPD8BMSVnpA8SJJSPWtjyi3LMdytd5o,1805
|
4418
4419
|
lino/modlib/users/fixtures/std.py,sha256=Eo_TdqFC7NPryLeGRfp-nbOXw3hDqxTUpddFTxUuZ74,712
|
4419
4420
|
lino/modlib/weasyprint/__init__.py,sha256=_kLw0xg5_ByLv4l5VvQbZjTtloTM4c9WrpfFgOGMPVc,2344
|
@@ -4648,8 +4649,8 @@ lino/utils/xml.py,sha256=4Z44W1e5HvTVrU8erkohgnwqY-5Cr2NHywaAJ5OgRvw,989
|
|
4648
4649
|
lino/utils/mldbc/__init__.py,sha256=QqWRlzeXaOmFfbCk-vTY3SZMn1-FCf67XnpZdd_Nim0,1134
|
4649
4650
|
lino/utils/mldbc/fields.py,sha256=tAX8G5UKigr9c6g0F3ARIjZZtg406mdaZ--PWSbiH9E,2873
|
4650
4651
|
lino/utils/mldbc/mixins.py,sha256=CkYe5jDa7xp9fJq_V8zcZf8ocxgIjUgHc9KZccvA_Yw,1945
|
4651
|
-
lino-25.1.
|
4652
|
-
lino-25.1.
|
4653
|
-
lino-25.1.
|
4654
|
-
lino-25.1.
|
4655
|
-
lino-25.1.
|
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,,
|
File without changes
|
File without changes
|
File without changes
|