lino 25.3.3__py3-none-any.whl → 25.4.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. lino/__init__.py +7 -1
  2. lino/api/dd.py +1 -1
  3. lino/config/admin_main_base.html +4 -3
  4. lino/help_texts.py +12 -14
  5. lino/locale/bn/LC_MESSAGES/django.po +1112 -907
  6. lino/locale/de/LC_MESSAGES/django.mo +0 -0
  7. lino/locale/de/LC_MESSAGES/django.po +1066 -918
  8. lino/locale/django.pot +1041 -900
  9. lino/locale/es/LC_MESSAGES/django.po +1103 -902
  10. lino/locale/et/LC_MESSAGES/django.po +1103 -915
  11. lino/locale/fr/LC_MESSAGES/django.po +1105 -916
  12. lino/locale/nl/LC_MESSAGES/django.po +1102 -917
  13. lino/locale/pt_BR/LC_MESSAGES/django.po +1099 -900
  14. lino/locale/zh_Hant/LC_MESSAGES/django.po +1099 -900
  15. lino/management/commands/buildcache.py +48 -3
  16. lino/management/commands/prep.py +1 -1
  17. lino/mixins/duplicable.py +1 -1
  18. lino/modlib/__init__.py +0 -1
  19. lino/modlib/checkdata/models.py +33 -15
  20. lino/modlib/comments/fixtures/demo2.py +1 -9
  21. lino/modlib/extjs/views.py +2 -3
  22. lino/modlib/linod/mixins.py +94 -41
  23. lino/modlib/linod/models.py +1 -1
  24. lino/modlib/memo/__init__.py +4 -0
  25. lino/modlib/memo/models.py +47 -1
  26. lino/modlib/users/ui.py +4 -2
  27. lino/modlib/weasyprint/__init__.py +12 -20
  28. lino/modlib/weasyprint/config/weasyprint/base.weasy.html +13 -2
  29. lino/sphinxcontrib/logo/__init__.py +2 -1
  30. lino/utils/__init__.py +1 -0
  31. lino/utils/dbhash.py +5 -3
  32. lino/utils/format_date.py +9 -4
  33. {lino-25.3.3.dist-info → lino-25.4.0.dist-info}/METADATA +1 -1
  34. {lino-25.3.3.dist-info → lino-25.4.0.dist-info}/RECORD +37 -38
  35. lino/management/commands/buildsite.py +0 -67
  36. {lino-25.3.3.dist-info → lino-25.4.0.dist-info}/WHEEL +0 -0
  37. {lino-25.3.3.dist-info → lino-25.4.0.dist-info}/licenses/AUTHORS.rst +0 -0
  38. {lino-25.3.3.dist-info → lino-25.4.0.dist-info}/licenses/COPYING +0 -0
lino/modlib/users/ui.py CHANGED
@@ -46,8 +46,8 @@ class UserDetail(dd.DetailLayout):
46
46
  """
47
47
 
48
48
  main = """
49
- box1 box2 #MembershipsByUser:20
50
- remarks:40 AuthoritiesGiven:20 SocialAuthsByUser:30
49
+ box1 box2 #MembershipsByUser:20 remarks
50
+ AuthoritiesGiven:20 AuthoritiesTaken:20 SocialAuthsByUser:30
51
51
  """
52
52
 
53
53
  # main_m = """
@@ -203,6 +203,7 @@ class AuthoritiesGiven(Authorities):
203
203
  label = _("Authorities given")
204
204
  column_names = "authorized"
205
205
  auto_fit_column_widths = True
206
+ details_of_master_template = _("%(details)s by %(master)s")
206
207
 
207
208
 
208
209
  class AuthoritiesTaken(Authorities):
@@ -211,6 +212,7 @@ class AuthoritiesTaken(Authorities):
211
212
  label = _("Authorities taken")
212
213
  column_names = "user"
213
214
  auto_fit_column_widths = True
215
+ details_of_master_template = _("%(details)s by %(master)s")
214
216
 
215
217
 
216
218
  if has_socialauth and dd.get_plugin_setting("users", "third_party_authentication"):
@@ -1,4 +1,4 @@
1
- # Copyright 2016-2021 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
  """This plugins installs two build methods for generating
4
4
  :term:`printable documents <printable document>` using `weasyprint
@@ -25,31 +25,17 @@ from lino.api import ad, _
25
25
 
26
26
 
27
27
  class Plugin(ad.Plugin):
28
- "See :doc:`/dev/plugins`."
29
28
 
30
29
  verbose_name = _("WeasyPrint")
31
-
32
30
  needs_plugins = ["lino.modlib.jinja"]
33
31
 
34
32
  header_height = 20
35
- """Height of header in mm. Set to `None` if you want no header."""
36
-
37
33
  footer_height = 20
38
- """Height of footer in mm. Set to `None` if you want no header."""
39
-
40
34
  top_right_width = None
41
- """Width of top-right.jpg in mm. If not given, Lino computes it based on height.
42
- """
43
-
35
+ page_background_image = None
44
36
  top_right_image = None
45
- """The first image file found in config named either top-right.jpg or top-right.png."""
46
-
47
37
  header_image = None
48
- """The first image file found in config named either header.jpg or header.png."""
49
-
50
38
  margin = 10
51
- """Top and bottom page margin in mm."""
52
-
53
39
  margin_left = 17
54
40
  margin_right = 10
55
41
 
@@ -57,8 +43,8 @@ class Plugin(ad.Plugin):
57
43
  yield "imagesize"
58
44
 
59
45
  def pre_site_startup(self, site):
60
- if self.header_height:
61
- for ext in ("jpg", "png"):
46
+ for ext in ("jpg", "png"):
47
+ if self.header_height:
62
48
  fn = site.confdirs.find_config_file("top-right." + ext, "weasyprint")
63
49
  if fn:
64
50
  self.top_right_image = fn
@@ -70,6 +56,12 @@ class Plugin(ad.Plugin):
70
56
  self.top_right_width = self.header_height * w / h
71
57
  fn = site.confdirs.find_config_file("header." + ext, "weasyprint")
72
58
  if fn:
59
+ # site.logger.info("Found header_image %s", fn)
73
60
  self.header_image = fn
74
-
75
- super(Plugin, self).pre_site_startup(site)
61
+ if self.page_background_image is None:
62
+ fn = site.confdirs.find_config_file(
63
+ "page-background." + ext, "weasyprint")
64
+ if fn:
65
+ # site.logger.info("Found page_background_image %s", fn)
66
+ self.page_background_image = fn
67
+ super().pre_site_startup(site)
@@ -53,10 +53,12 @@ p {
53
53
  }
54
54
 
55
55
  div.recipient {
56
- position:relative; left:80mm;
56
+ position:relative; left:{{100-dd.plugins.weasyprint.margin_left}}mm;
57
57
  height:30mm;
58
58
  width:80mm;
59
- border: 1px solid grey;
59
+ border: 1px solid lightgray;
60
+ border-radius: 2mm;
61
+ background-color: lightgray;
60
62
  padding: 1em;
61
63
  margin: 1em;
62
64
  }
@@ -80,6 +82,15 @@ div.recipient {
80
82
  {%- endif -%}
81
83
  margin-left: {{dd.plugins.weasyprint.margin_left}}mm;
82
84
  margin-right: {{dd.plugins.weasyprint.margin_right}}mm;
85
+ {%- if dd.plugins.weasyprint.page_background_image -%}
86
+ {#
87
+ background: url(file://{{dd.plugins.weasyprint.page_background_image}}) no-repeat center center fixed;
88
+ #}
89
+ background-image: url(file://{{dd.plugins.weasyprint.page_background_image}});
90
+ background-repeat: no-repeat;
91
+ background-attachment: fixed;
92
+ background-size: contain;
93
+ {%- endif -%}
83
94
  font-family: "Liberation sans", "arial";
84
95
  font-size: 10pt;
85
96
  {%- block bottomleft %}
@@ -44,7 +44,8 @@ def config_inited(app, config):
44
44
 
45
45
  def copy_custom_files(app, env, docnames):
46
46
  if app.builder.format == "html":
47
- staticdir = Path(app.builder.outdir / "_static")
47
+ # In older Sphinx version the builder.outdir was a simple string
48
+ staticdir = Path(app.builder.outdir) / "_static"
48
49
  staticdir.mkdir(exist_ok=True)
49
50
  (staticdir / "favicons").mkdir(exist_ok=True)
50
51
  for fn in ("synodal-logo.png", "favicons/favicon.ico"):
lino/utils/__init__.py CHANGED
@@ -23,6 +23,7 @@ function for general use. It has also many subpackages and submodules.
23
23
  djangotest
24
24
  dpy
25
25
  fieldutils
26
+ format_date
26
27
  html
27
28
  html2odf
28
29
  html2xhtml
lino/utils/dbhash.py CHANGED
@@ -91,15 +91,17 @@ def check_virgin(restore=True, verbose=True):
91
91
  if not can_restore:
92
92
  raise Exception(
93
93
  "Cannot restore database because some rows have been deleted")
94
- # print(f"Tidy up {len(must_delete)} rows from database")
95
- # It can happen that some rows refer to each other with a protected fk
96
- # We call bulk delete() to avoid Lino deleting the items of an invoice
97
94
  must_delete = list(must_delete.items())
95
+ if verbose:
96
+ print(f"Tidy up {len(must_delete)} rows from database: {must_delete}.")
98
97
  while len(must_delete):
99
98
  todo = []
100
99
  hope = False
101
100
  for m, added in must_delete:
102
101
  try:
102
+ # It can happen that some rows refer to each other with a
103
+ # protected fk, so we call bulk delete() to avoid Lino deleting
104
+ # the items of an invoice.
103
105
  m.objects.filter(pk__in=added).delete()
104
106
  # obj.delete()
105
107
  hope = True
lino/utils/format_date.py CHANGED
@@ -1,5 +1,5 @@
1
1
  # -*- coding: UTF-8 -*-
2
- # Copyright 2009-2023 Rumma & Ko Ltd
2
+ # Copyright 2009-2025 Rumma & Ko Ltd
3
3
  # License: GNU Affero General Public License v3 (see file COPYING for details)
4
4
  """See :doc:`/topics/datetime`.
5
5
  """
@@ -111,6 +111,11 @@ def day_and_weekday(d):
111
111
 
112
112
  def ftl(t):
113
113
  # "format time long"
114
- return "{} ({})".format(
115
- t.strftime(settings.SITE.datetime_format_strftime), naturaltime(t)
116
- )
114
+ return "{} {}".format(
115
+ t.strftime(settings.SITE.date_format_strftime),
116
+ t.strftime(settings.SITE.time_format_strftime))
117
+
118
+
119
+ def ftf(t):
120
+ # "format time full"
121
+ return "{} ({})".format(ftl(t), naturaltime(t))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lino
3
- Version: 25.3.3
3
+ Version: 25.4.0
4
4
  Summary: A framework for writing desktop-like web applications using Django and ExtJS or React
5
5
  Project-URL: Homepage, https://www.lino-framework.org
6
6
  Project-URL: Repository, https://gitlab.com/lino-framework/lino
@@ -1,20 +1,20 @@
1
1
  lino/.cvsignore,sha256=1vrrWoP-WD8hPfCszHHIiJEi8KUMRCt5WvoKB9TSB1k,28
2
2
  lino/SciTEDirectory.properties,sha256=rCYi_e-6h8Yx5DwXhAa6MBPlVINcl6Vv9BQDYZV2_go,28
3
- lino/__init__.py,sha256=yyhUdRFDF6YNOft_vdDCiieTETtc-ISKZtJ1-AvJR8c,5915
3
+ lino/__init__.py,sha256=hX67Z8YgYIUBNNmzsKRsa1ltkl1uwshB28hWTFIKLIU,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=RMFC74eOV6v5TO7dv-1jM9FFham2AyuuuzDTJgOIKfU,91231
7
+ lino/help_texts.py,sha256=fyiY0oSJ8iGNjKdw36QbrLu2y38SvIeddW3FH3y0Nbw,90988
8
8
  lino/api/__init__.py,sha256=WmzHU-rHdZ68se_nI0SmepQTGE8-cd9tPpovHRH9aag,512
9
9
  lino/api/ad.py,sha256=F6SrcKPRRalHKOZ7QLwsRWGq9hhykQIeo0b85cEk9NQ,314
10
- lino/api/dd.py,sha256=R0Hx5McdTz86Veba9SttWSOIn2lTDXdpTQEEK10XEsw,7426
10
+ lino/api/dd.py,sha256=FSv9gDstKcKM1qFgSSJpJOGhvT0bDTIqwjcPA9pbMm8,7431
11
11
  lino/api/doctest.py,sha256=87j1_xGpomQlEmUUh8CprBFbbqKuQe1OWr5iIXABWag,24028
12
12
  lino/api/rt.py,sha256=OCYWhrWnMcL988MdvBLBEP8qKQJEGXQhVoam_X0sotU,1376
13
13
  lino/api/selenium.py,sha256=bOu8UaNz3Q7lGVvxjmvrtYtSWn1xfI1f5MN5sVcdYr8,9383
14
14
  lino/api/shell.py,sha256=epyjwEZ396TiJ0AHqhVIvzX8TBIXU8xR4UHJlYOrRhc,536
15
15
  lino/config/about.html.tmpl,sha256=Vt3drpxP5f26wb1meXq_Kc8ZUAl_TGfr1bcuWuz-7L4,705
16
16
  lino/config/admin_main.html,sha256=uq179bSDST-ACy0iuOFqMfs501mdwnR7Zw9ICDFZfsc,37
17
- lino/config/admin_main_base.html,sha256=J_686VOAe9MBpDEwVovwhCSvr7zhK877bME9BhvBkSk,3969
17
+ lino/config/admin_main_base.html,sha256=oTcu3ZNQi1R45WuwzY1OTP3X800m9LeUQCUcLxutV8s,4021
18
18
  lino/config/apps.html.tmpl,sha256=UxRVdZq1BEVJWD77_mhxIB4ILenVO_Ml-w3LgumG22Y,696
19
19
  lino/config/letter_margin_bottom.html,sha256=BzASupSu5l49EGrPFpUcrK4DDm_sijoOd28HC8kmpBg,66
20
20
  lino/config/letter_margin_top.html,sha256=mTKb62bWXX0rH9FyIrwJUmptJmoC8_ZATxGUm0YW4RI,216
@@ -76,28 +76,27 @@ lino/core/auth/middleware.py,sha256=1c_z4lP_Rhbw7pdCapprGkjIXX40OJgIlFyQew4O-Nc,
76
76
  lino/core/auth/utils.py,sha256=Nv7QbINYi64hGZZxV-Ix1iwhrb_KOfUfhJXAzoKy2ng,4130
77
77
  lino/core/management/__init__.py,sha256=fp1cONBXgq1IftPk5c4b63gRlYOWpT5VzCIKrx0aGlE,61
78
78
  lino/fake_migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
- lino/locale/django.pot,sha256=dHb03JkAaWWR22EfURJE5JBiFUbcyJ6jwwZ5ASh-Dps,152924
79
+ lino/locale/django.pot,sha256=goFkSiD0gouaH_DfRBy6ZnL5nwW9RnpRjlRylFwDLmA,155927
80
80
  lino/locale/bn/LC_MESSAGES/django.mo,sha256=ygs6NvTycQXv5Dwl8bpyy13u-uMIcNK2-xpJM3zSy3Y,14893
81
- lino/locale/bn/LC_MESSAGES/django.po,sha256=DCTpcQcLOTC4DpA4NRvYoLVv5_Yvpp804BnjQgX6roM,192740
82
- lino/locale/de/LC_MESSAGES/django.mo,sha256=iLKQzGYhaGPt9rUvOmbv-oJQA99SHZgdvtECCjEqS7o,27552
83
- lino/locale/de/LC_MESSAGES/django.po,sha256=OWtq6Xr7u1me7oqkuetAUr7vjqpU-iIZWFqKxp29KUk,167411
81
+ lino/locale/bn/LC_MESSAGES/django.po,sha256=VYjH2lFyUBPzuF615e1awfROkLT_LCrcX7LUrqzNhyo,197503
82
+ lino/locale/de/LC_MESSAGES/django.mo,sha256=ruza9tRjC0VGHOgB98dKpRHXJtu2CnE3DpTTaB39VUw,27714
83
+ lino/locale/de/LC_MESSAGES/django.po,sha256=hbEOw7V7N6RtzPg7fKYlvgjmCd-l2fHMDlBh3_4WVmw,170816
84
84
  lino/locale/es/LC_MESSAGES/django.mo,sha256=r2zi4aulC-1zX1XcoGddo0mpdOpuuOpUxpWxGoYh8qc,2357
85
- lino/locale/es/LC_MESSAGES/django.po,sha256=0ZILbxeYQJ8nru55rqWK6-3Oty2WvIbzZovvKWV8gqw,155257
85
+ lino/locale/es/LC_MESSAGES/django.po,sha256=ZpZ7KkMNIGBOOEyfBgRmQ4ko9N0NY0wkx8ahxQ81zDA,159687
86
86
  lino/locale/et/LC_MESSAGES/django.mo,sha256=1RH5dX6YOBgk2tX_xpkriBRDh6qkxJDPrWysVeio_eM,5519
87
- lino/locale/et/LC_MESSAGES/django.po,sha256=1g1z5CWOZTWxKqJax7vaa4x5a8ndY5vuyPuZwysn5kc,218934
87
+ lino/locale/et/LC_MESSAGES/django.po,sha256=1bPkMDWyRR1Pin8t4Xt8wYXsdSXp6Bu1qhYG70aO5pU,223311
88
88
  lino/locale/fr/LC_MESSAGES/django.mo,sha256=N7TxEPKmUBjDLu-EabjGUm1VB-CqKjZH1AzRRJ2M5OM,18078
89
- lino/locale/fr/LC_MESSAGES/django.po,sha256=hzwUrF6zQc6Uvr7b_3ygpOh-M7ogsjhXnkfB9e858VQ,164385
89
+ lino/locale/fr/LC_MESSAGES/django.po,sha256=6H0Hirw7XAq97lBRrzsbIf0-kCROLN7KP3n2umLxAMU,168821
90
90
  lino/locale/nl/LC_MESSAGES/django.mo,sha256=cQ3DTQqc4dbwrAdm5d95Kf4pDoYqKdMdElAaRerC0XA,8115
91
- lino/locale/nl/LC_MESSAGES/django.po,sha256=1fmmyBEEPuLpsLQMRbBEHotcf7lDWvkksKU11ZgQNkk,340860
91
+ lino/locale/nl/LC_MESSAGES/django.po,sha256=Jps9IYWSCQ0m7kOxhWzH19xhSwIoXCtrm5MC-dSzQVU,345196
92
92
  lino/locale/pt/LC_MESSAGES/django.mo,sha256=OCKgnomRXLl_QsikdFsqUwKXkVexvLvSWf5kizPJrRE,42461
93
93
  lino/locale/pt/LC_MESSAGES/django.po,sha256=pMhpgCeuj2O7G37gDSr-8jdAKs1P3hEy-K2Lg-GbCIU,80311
94
94
  lino/locale/pt_BR/LC_MESSAGES/django.mo,sha256=OCKgnomRXLl_QsikdFsqUwKXkVexvLvSWf5kizPJrRE,42461
95
- lino/locale/pt_BR/LC_MESSAGES/django.po,sha256=61QR27iyU4ZXcErTj5DZj7GlyL-Fpwmn3E-tbXq1hyI,154284
96
- lino/locale/zh_Hant/LC_MESSAGES/django.po,sha256=JeP8cSTQ5bjX12Nr3EcCVhIaR-1pBYls5qSYv8iFRDs,154206
95
+ lino/locale/pt_BR/LC_MESSAGES/django.po,sha256=nDmkf5MQtIj9trPVTZcNNMghM4rH8nZetGkw_agPPlA,158635
96
+ lino/locale/zh_Hant/LC_MESSAGES/django.po,sha256=J9IELaIaZmBI2Vfu9HPIVA-g45QTYIxFzftWAB1U-s0,158557
97
97
  lino/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
98
98
  lino/management/commands/__init__.py,sha256=raVDRiXns3SegyXEhaLZMcxfEDs7ggy2nFUN5D0f5F0,47
99
- lino/management/commands/buildcache.py,sha256=QjhvKKdp1mX6rl8Y5rcS6kUK2LVOBVAd6wrUKLYSGF8,448
100
- lino/management/commands/buildsite.py,sha256=BsXoKjQEA8sT57nD-_8Fd5ji9lARQ4ymkNMdhgyiXj0,2256
99
+ lino/management/commands/buildcache.py,sha256=MrOio6uBtQNW5gnbRrPIjarwUe18R-irxC7dLBBCpR4,1949
101
100
  lino/management/commands/demotest.py,sha256=yvxpl1G0Clt-iu7lY0DK9HVhaWyl_tQhYx0YUpddTWM,5041
102
101
  lino/management/commands/diag.py,sha256=vt-NlZUx5gf7T4EpbM-gle3tAwMuwfPQY8lUgxjFaUw,478
103
102
  lino/management/commands/dump2py.py,sha256=X2u6OVkSb4MVQucF6jOKDDwRc8TCBNakW3UX_9S-n-U,20344
@@ -110,7 +109,7 @@ lino/management/commands/makeui.py,sha256=qYz68fnUKNXicZfGy3GXdjIZubhg1KyQnqjMbl
110
109
  lino/management/commands/mergedata.py,sha256=-dPvBtyc-AqKpQeL4TUd2IKHGe8EaaW8Citcsp_hwEU,2527
111
110
  lino/management/commands/monitor.py,sha256=-axtsW-uzk87ESR6-GSfUL0Y2ylB5BwHC6Xlx3fPxo4,5113
112
111
  lino/management/commands/passwd.py,sha256=S-7qyUWOaBnqRo_quwWewJjzwonqK4PBP2j8fuBGy3c,3012
113
- lino/management/commands/prep.py,sha256=V5pEHmw5ldav9flgJNfW96Z5TI5Z1rz5gMN5l0e32mg,2107
112
+ lino/management/commands/prep.py,sha256=23bnkHQrFHDPjGDI7Y2epXAC2bJ3oBYg0ZZV7g6ibTM,2124
114
113
  lino/management/commands/qtclient.py,sha256=ltZyz-SmIevotRmv26TmPiW8VTXKK37DUwdwwMUzrHI,4715
115
114
  lino/management/commands/resetsequences.py,sha256=v7MdzJCw-rBXljttCsgoMIi-cgubCPptXDlcNO0pCjw,978
116
115
  lino/management/commands/run.py,sha256=MiK53KIACYKDTKF6knJGwU-uzEApGnDxByi-3_nrTjQ,1115
@@ -119,7 +118,7 @@ lino/management/commands/syncscreenshots.py,sha256=XYZhqfm5_RwJzVFNGhHJKucl4j6T6
119
118
  lino/management/commands/update_conf.py,sha256=saAaQdPhn3mNOoHcBxOFSf_vBEgM-aopTHq1sJN20Bo,1026
120
119
  lino/mixins/__init__.py,sha256=ADIq0rPGlAY4ifSaMvqahXvCMnbFzq2qAWcyyUkx4Ds,8930
121
120
  lino/mixins/dupable.py,sha256=ofyYrcT9WiYdVTkzgXyXaBu1kS-y197YnFTnZNALUHo,10233
122
- lino/mixins/duplicable.py,sha256=fjbHvavi8lTM0NMncttQMF9c5UP94pagS1qmRFgxBR0,4246
121
+ lino/mixins/duplicable.py,sha256=a5-1jZZWX-kgKg5GNhV6yaSGOgfTyd2lWHtY35bVmes,4247
123
122
  lino/mixins/human.py,sha256=YDIfIHHAaVmzd3uGsJp_vDvkaBWOp09I7i4AGNy9YsQ,13255
124
123
  lino/mixins/periods.py,sha256=iFqUCUZlgUW2GmEHRl9suwJedztrXLluQhgFpu7Uj54,11479
125
124
  lino/mixins/polymorphic.py,sha256=MLbfOeIYRoDZO4048X2oWhG5cxds2pLkwciXcw1xjVQ,9393
@@ -127,7 +126,7 @@ lino/mixins/printable.py,sha256=4U8M1lrTjUeuaPwrcWoanCBo53iAxiNpSTsVctI-gI0,199
127
126
  lino/mixins/ref.py,sha256=ZnyTcpHgcbYwDwgaBwLc5cGLQqz8MmjAypSEgPB7Ql4,5272
128
127
  lino/mixins/registrable.py,sha256=0m68YGlipRhE83IsEvXATZtvyxtMsH-Dpd5TGZh_GzE,6936
129
128
  lino/mixins/sequenced.py,sha256=6FiHJX2ZIraqUofdnb082b978PISNbpd2Vr87YA_1pg,16460
130
- lino/modlib/__init__.py,sha256=TRu6zfFj6MhGJ_90D0zNzw2T0dzVWyld3l1tsgrLF3k,950
129
+ lino/modlib/__init__.py,sha256=cO31gNu2oRkp7o2v3D9gK2H7j4jF9rbVyPxPZhZQwrQ,940
131
130
  lino/modlib/about/__init__.py,sha256=jhqGQIXU1o7KkmmQjfwPKJc3buibB09Fy55carAmi7U,342
132
131
  lino/modlib/about/choicelists.py,sha256=2bxDb2u7cFacBOgLoEWrMmzQ4BJ3x1pmhdgqxzUp-Rw,1424
133
132
  lino/modlib/about/models.py,sha256=X5yJJlyoQ58GN9RsdlUA1KsumvRtkureWnxLPPAXWlE,5131
@@ -165,7 +164,7 @@ lino/modlib/changes/models.py,sha256=LvtiDewZAx-4z0uPtsznHBXUKtngXac5t-q7a7uB6BY
165
164
  lino/modlib/changes/utils.py,sha256=4jz8QXgaBxfmCBUvDeZeh7lkdwfTq7OBXBiFhMmANqA,2550
166
165
  lino/modlib/checkdata/__init__.py,sha256=raUCoYi4WZLKVLG3GqH0ml1eH_YJXqY-EgXsKUe6iRY,2829
167
166
  lino/modlib/checkdata/choicelists.py,sha256=OGv3mmr5DPPahoBliAOFIx_H6ysuW3ZpcrI4fIq1SB0,5244
168
- lino/modlib/checkdata/models.py,sha256=bfoj_Hf8vmgmYRuAlZ4B-wAw9uvLZtj158vdwjqZz30,12790
167
+ lino/modlib/checkdata/models.py,sha256=AfqGbL9z61kxFqA6OIuOlozUmqrlOy_uRR1rwXVXcU8,13538
169
168
  lino/modlib/checkdata/roles.py,sha256=xjQ882-BxYUoHbv2pzebs7MWl6snA2fKivFDTRzW7sQ,295
170
169
  lino/modlib/checkdata/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
171
170
  lino/modlib/checkdata/fixtures/checkdata.py,sha256=TY9yIBwB5nEw0e6RTXqRwYdiCaLkkYTwWmFGcVBw2ow,332
@@ -180,7 +179,7 @@ lino/modlib/comments/roles.py,sha256=z3gctvlTa_5PAs-D4pounyzNyuEc31jTFq9g33r6Z1w
180
179
  lino/modlib/comments/ui.py,sha256=OYeYHJZUvou3d21OcChVhCWtCd7ildGNxIgRoM37Gng,9955
181
180
  lino/modlib/comments/config/comments/comments.js,sha256=7oAnNyx_MKM1iWPu-QSp6iKfnOVdgq7EciQPpxTvYU8,242
182
181
  lino/modlib/comments/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
183
- lino/modlib/comments/fixtures/demo2.py,sha256=C3e0CnDtXuvcJ_OKpXGhcCc1Nrsd8wOcFcmWo3IWsUU,59688
182
+ lino/modlib/comments/fixtures/demo2.py,sha256=GB8ADRsQPNCEZ16LFWHMlYNZIPlPmWbUgW4VjRvy4ho,25317
184
183
  lino/modlib/dashboard/__init__.py,sha256=_PFbmakUn8DShXyJY3EfAcuZtX5ofWnS-8dk7s1CrLw,1420
185
184
  lino/modlib/dashboard/models.py,sha256=EgRNg88dmz-OlIdi1SyEuerWMsRqKIfqE2MgKL7kApw,3510
186
185
  lino/modlib/dupable/__init__.py,sha256=fIQ8wj-T8ZbkjwQgW_-ankJsHLjPMepOTo32mJXNCvI,532
@@ -190,7 +189,7 @@ lino/modlib/export_excel/__init__.py,sha256=k11dEbh1VgA7cMaUdMhiJvHNboX4BqN0Z5Wj
190
189
  lino/modlib/export_excel/models.py,sha256=MoGj3RyAj8PBy75HFGBv9Y1QnsG-H_ajRK27UDpZPKo,5094
191
190
  lino/modlib/extjs/__init__.py,sha256=6UBWAWSROwy3DfTXQmVUVJTF6eZ_e2k3BEfE4wtqVhU,10172
192
191
  lino/modlib/extjs/ext_renderer.py,sha256=FAuqvEpmX8skaGXN6mXZuB7cq2pC38lxACxntiJ7RvU,60614
193
- lino/modlib/extjs/views.py,sha256=qliDEfWYxv7XGRPnX8EHAjOgeYii9864XTGO1SwFywc,26308
192
+ lino/modlib/extjs/views.py,sha256=M9282Qayd2z_cXIMs155ZTUeHt6HdwL2PwhwpeDaVDY,26297
194
193
  lino/modlib/extjs/config/extjs/index.html,sha256=jO5hdNpFSkm9t0xhHD5hc8Hw1fSr6xb3zYq9aMyOI7Q,8603
195
194
  lino/modlib/extjs/config/extjs/linoweb.js,sha256=I4VYGmkK4htqZvHM9g-6psJF3pp7SvgHEI0I02Sxpvo,175127
196
195
  lino/modlib/extjs/config/extjs/service-worker.js,sha256=KEKWeehTlfBHk3r8NbsP9C5av_DukHORybxFOwbjYaQ,1767
@@ -3536,8 +3535,8 @@ lino/modlib/languages/fixtures/iso-639-3_20100707.tab,sha256=u8PwI2s8shy0_Val5-s
3536
3535
  lino/modlib/linod/__init__.py,sha256=efmj_Kz3OO2zF1lvs7P459iufYGimH1-6Ge6Cbq85tQ,2665
3537
3536
  lino/modlib/linod/choicelists.py,sha256=Cu82s1QpcGFmKUXJsg-7TSqpaESBCZKOEfxzFlJP06I,2626
3538
3537
  lino/modlib/linod/consumers.py,sha256=XBjA1fflJ-e9yWRMKXyQAhrOklYzs5JRhEeGMOKWFqM,6730
3539
- lino/modlib/linod/mixins.py,sha256=LL2V2S2Y_s1dsV_xFjQHUX8A_q7wQOfC-ndi-zgBVfc,10926
3540
- lino/modlib/linod/models.py,sha256=_5usJGbYR6EW2hPjyQ2uNLW2bC9xcFMqbZHS1LSpeVc,2344
3538
+ lino/modlib/linod/mixins.py,sha256=yE0J51bRA8u5YekrNnAlWoOBee3z5rqDE8yxHgiqGMM,12739
3539
+ lino/modlib/linod/models.py,sha256=tbPKNk3BLnnAPWvbNrWhz713b3IPM0z8UoctJcwVhhw,2357
3541
3540
  lino/modlib/linod/routing.py,sha256=FiG0JVqp9TWWkNpl9Y_50UCAJ7ZEImDXkQUhlg4aGL4,2094
3542
3541
  lino/modlib/linod/utils.py,sha256=dE973Xib6Be1DvNsZ0M5wzY_jpkk35R21WKs-jQPorM,339
3543
3542
  lino/modlib/linod/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -3545,9 +3544,9 @@ lino/modlib/linod/fixtures/linod.py,sha256=qCFU2IktRVEdt1lChwu6kZLLnd4Ppfq_x9_2q
3545
3544
  lino/modlib/linod/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3546
3545
  lino/modlib/linod/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3547
3546
  lino/modlib/linod/management/commands/linod.py,sha256=RsUgUBz-soF8wkfgUE8KJiLZltrhEeCm1m7AFNthUps,3826
3548
- lino/modlib/memo/__init__.py,sha256=5cyWewD1umtSh5rqsSTwO0uR73ZJR-6mIHR05MClq0Q,5254
3547
+ lino/modlib/memo/__init__.py,sha256=GdzNURo3v_o5PxTBZ_KNkzrjlcDzn4AO95pYBbHmk8Q,5389
3549
3548
  lino/modlib/memo/mixins.py,sha256=Ij_bFcBY_ivo5t2HWArEeRkxIQhg61iP0sTNnhZpRac,11246
3550
- lino/modlib/memo/models.py,sha256=2UbKaixPWCnP1ZkoJx_DDTtltpfYVbU3uJ1hmsZDU8A,3146
3549
+ lino/modlib/memo/models.py,sha256=zUEvWu0dK5QhkU3DeMqNqsrzSUzOl6DLZaJBNytfgrs,4388
3551
3550
  lino/modlib/memo/parser.py,sha256=YbGf1EdJqTI4rqM05ZPTdufN_-aWeV_Z85Nh47HH8Pw,12996
3552
3551
  lino/modlib/memo/views.py,sha256=H3g_nuiMzguptXLSWaWLJClU7BefXPFn9Rh8UIVVBeg,555
3553
3552
  lino/modlib/notify/__init__.py,sha256=suo7EMVdyTPTPFwuU2KZL25PwIEstTvvR4Turgdz7UE,6926
@@ -4412,7 +4411,7 @@ lino/modlib/users/choicelists.py,sha256=-X76C1NxIs5e7rFHp5Z0kjJkA1NlOP2vdLKGkI2w
4412
4411
  lino/modlib/users/mixins.py,sha256=muW6-LwHF2L6uvGO0h3qIh1_SeJrgaeooPvjqBiXbAI,14277
4413
4412
  lino/modlib/users/models.py,sha256=tdROzvtd3cMxsXKtYZjcUv2XJU7hQLbyBCiE0zVvaOo,16470
4414
4413
  lino/modlib/users/roles.py,sha256=yi29ELbWU1VtteGARaxetxmsCkZQHA2oJiD0dXujMiE,320
4415
- lino/modlib/users/ui.py,sha256=JggYwyKnAOuDl3Jme5k04_0xJ6t2IRp7Y594e9s1tq8,13133
4414
+ lino/modlib/users/ui.py,sha256=ZbA8NaAWR3SIUmC6GXbUumJfsOQlskwSE1gDYBVAXY8,13278
4416
4415
  lino/modlib/users/utils.py,sha256=bD0DJZsUy59xw9N-tx3W_h30_R10GT2qXZVzYtGWMa8,1963
4417
4416
  lino/modlib/users/config/users/verification_response.html,sha256=8X1sEn53ploQgB6ds0UfmmkZpcvP9KSwWiQjRE_q970,772
4418
4417
  lino/modlib/users/config/users/welcome_email.eml,sha256=bPSPbJKIPFRVWPDCuhNquQYwQtXzYGZgs7wICoiutS8,1078
@@ -4422,10 +4421,10 @@ lino/modlib/users/fixtures/demo.py,sha256=YHPhvjqAh-V9WHgFct2GQlQATZmS-W3Nry-X6m
4422
4421
  lino/modlib/users/fixtures/demo2.py,sha256=j2ke91wvpHs3kHpeztzV3nOG4rJvavkHv2YJo0dISdI,495
4423
4422
  lino/modlib/users/fixtures/demo_users.py,sha256=FJz5gW95PbgxrPD8BMSVnpA8SJJSPWtjyi3LMdytd5o,1805
4424
4423
  lino/modlib/users/fixtures/std.py,sha256=Eo_TdqFC7NPryLeGRfp-nbOXw3hDqxTUpddFTxUuZ74,712
4425
- lino/modlib/weasyprint/__init__.py,sha256=_kLw0xg5_ByLv4l5VvQbZjTtloTM4c9WrpfFgOGMPVc,2344
4424
+ lino/modlib/weasyprint/__init__.py,sha256=81eULMBEUKB_2eKtWloEEh7ijOiSoxEgGigK6LJFrGo,2253
4426
4425
  lino/modlib/weasyprint/choicelists.py,sha256=SaqDFfJLx9IFjhtOUtnBGZNpihUAzLvj0W49YHCZt0I,1396
4427
4426
  lino/modlib/weasyprint/models.py,sha256=op6CRRBC8NatqGgGdQHU4zcVG4fu4mRS9Mz8STG3B3g,168
4428
- lino/modlib/weasyprint/config/weasyprint/base.weasy.html,sha256=l6Xd4G7bBIcF4RsSMnYfM8tWkDwbdMLcijCMbchQXPw,4127
4427
+ lino/modlib/weasyprint/config/weasyprint/base.weasy.html,sha256=SSDxOOKj_0o5JmUUDEoXHDb_eC5tT0dyjRa9l4ta3-o,4609
4429
4428
  lino/modlib/wkhtmltopdf/__init__.py,sha256=1nqwVpOQH4YMhegnzrcfvXW_Xy9CIdHBHzrNvDGyVxg,773
4430
4429
  lino/modlib/wkhtmltopdf/choicelists.py,sha256=Mq7LySs-HJIXnyUHN5PR55nQyg2cgPjEQuN9JUhBmUY,1818
4431
4430
  lino/modlib/wkhtmltopdf/models.py,sha256=T7lHSSQKNcUWceNnNzq_bKEguXQ1THK5qyCDgeV6xfM,294
@@ -4437,7 +4436,7 @@ lino/sphinxcontrib/__init__.py,sha256=cz8sRK--NVr9thlToiuHRfJVelqdiYdRYmK2kyQKHq
4437
4436
  lino/sphinxcontrib/actordoc.py,sha256=CrHbqW15V1w_6Rm1bZzRBZv1CduDRZKpCcJQtOJqOCM,20710
4438
4437
  lino/sphinxcontrib/base.py,sha256=pq5u4bFSxMgPm9OMDo8xPVGhuS6MZAUd9bF6rQCCHJs,1193
4439
4438
  lino/sphinxcontrib/help_texts_extractor.py,sha256=mlHyeiIdzbfzQXkT8j8skdcBQ-FV3zAPW2DXnY8Hs1I,10385
4440
- lino/sphinxcontrib/logo/__init__.py,sha256=z4niIvjyZbxSG-Cr1lixdB6wd_ecxBrHSnVevRSnIcg,2184
4439
+ lino/sphinxcontrib/logo/__init__.py,sha256=dCHNLzhlMdSYVMui3vc2ybzPU6D4GikiRP-G9SCu1TA,2257
4441
4440
  lino/sphinxcontrib/logo/make_favicons.py,sha256=cDFmh937qfYngnxajIOmuxPRyZ9X9iNWCiRlJjq6QKI,224
4442
4441
  lino/sphinxcontrib/logo/src/lino-web-logo.xcf,sha256=AN4PbfN_HpdvW00PxkqbKmYQSOdmIXW5_zAmHxrC2Eo,68662
4443
4442
  lino/sphinxcontrib/logo/src/logo_web.xcf,sha256=Tv9JaH1WXtPkgrx39Q_H_iIr2wlU7uFToNIkVQ2h57w,119207
@@ -4579,7 +4578,7 @@ lino/templates_old/404.html,sha256=9O5EJgULwLws0X1LjNig3xT4l9Hw04MBIGswD-EAlnw,2
4579
4578
  lino/templates_old/500.html,sha256=inOR744w4FGJM_fCSQcnlk-OIYQpaBTxUQWgXQozon4,496
4580
4579
  lino/templates_old/base.html,sha256=qYqj5-u1UPtpatrFkqBr3MnwS0oFUXCyQRcuNZczDfk,1641
4581
4580
  lino/templates_old/base_site.html,sha256=NcLEk0kBT1b-SrhoGpDPUej7NExqJ9-dP1kbrvwBzrs,255
4582
- lino/utils/__init__.py,sha256=MFwWwBqgr6pPomfpfB9DvsXiB16EVBpWSSNanmI7Vqw,18391
4581
+ lino/utils/__init__.py,sha256=r3PhUv44LoVlci5lARpqvq-8re6IwmfXxbTjDU-FVDs,18407
4583
4582
  lino/utils/addressable.py,sha256=o7bmLbyvrmOoAT478s7XqjWKvnZ7zSXj4k7Xf0ccqf8,2213
4584
4583
  lino/utils/ajax.py,sha256=npCS0WumhTQlBzXxQPKnp2sYCRcPsYcbFqzE2ykVc4Q,3254
4585
4584
  lino/utils/choosers.py,sha256=9jjeLz-QcWVBfR8_GdY4PNYoqIYM63OI3OvOL2l1ZaU,17604
@@ -4590,13 +4589,13 @@ lino/utils/daemoncommand.py,sha256=NjGShiz09fddIV0WU0jK2nzO_CwPj1MfdmgwAOYZi4M,1
4590
4589
  lino/utils/dataserializer.py,sha256=-_xHXaGwDSO6-sYEHEa2BtEmKS8bW6gsYx4dV-GbvDs,3779
4591
4590
  lino/utils/dates.py,sha256=eWF5WxA5uJf51Y9PKvDVBWD8yIf6yBF6oO6TeU3ujzw,1030
4592
4591
  lino/utils/dbfreader.py,sha256=4sXOGBKX6DFQCEPkCMfnJAVneHMyDzJQB5tsYAq90vQ,12205
4593
- lino/utils/dbhash.py,sha256=9qZS64tri2A88fX7iKRQVx0Xks7ow2r9oo020paYmSg,3368
4592
+ lino/utils/dbhash.py,sha256=S2jCCYUItovF8Qkc2kVk5WS14U1c3RjijkUGqYs20_c,3450
4594
4593
  lino/utils/dblogger.py,sha256=kr0YxQY6veymvNg5A4tsvkqW8haRWdwqL0C-_9_QTg0,721
4595
4594
  lino/utils/diag.py,sha256=8BGsPrLd1_Fympy3PKiTpX1MdMWGApXr6IBoVOkWRxE,18314
4596
4595
  lino/utils/djangotest.py,sha256=Phz1qNp0wDonZRja5dxbCk0Xl3a73gZNiKK8v9tAgZg,8334
4597
4596
  lino/utils/dpy.py,sha256=Hw4ofFnhRPAE2PsPf9r5RpzcfVLQdIjtOe-XtMMLtuE,20661
4598
4597
  lino/utils/fieldutils.py,sha256=IfwuTpSirKYEk5h1URxQ9CF6i0ZPcsuNQHyk-LQOdRE,2874
4599
- lino/utils/format_date.py,sha256=HZ3wbN-1OjhawYG8-w2_TwgT33yYDuUvU877j-3QX7Q,2888
4598
+ lino/utils/format_date.py,sha256=esVElXGtmc_M5CAoFyomVr1hoi3ITn95e1ToZ09li-U,3008
4600
4599
  lino/utils/html.py,sha256=pcE0UQmdQGxxmb-p0mBb47zNbRMXLP9cxxrXTLs4gbY,3143
4601
4600
  lino/utils/html2odf.py,sha256=Hxw4HiIHY1ZCjb4_JLykVHbr6yAMhhHrnrCnLNDYKAs,4826
4602
4601
  lino/utils/html2xhtml.py,sha256=fvrIoLBFpiXtYO3UYaIgAIDjf6ATvrxolQX4etxS57Y,2119
@@ -4634,8 +4633,8 @@ lino/utils/xml.py,sha256=EGDnO1UaREst9fS7KTESdbHnrrVCwKbRQdvut6B6GmQ,1612
4634
4633
  lino/utils/mldbc/__init__.py,sha256=QqWRlzeXaOmFfbCk-vTY3SZMn1-FCf67XnpZdd_Nim0,1134
4635
4634
  lino/utils/mldbc/fields.py,sha256=tAX8G5UKigr9c6g0F3ARIjZZtg406mdaZ--PWSbiH9E,2873
4636
4635
  lino/utils/mldbc/mixins.py,sha256=CkYe5jDa7xp9fJq_V8zcZf8ocxgIjUgHc9KZccvA_Yw,1945
4637
- lino-25.3.3.dist-info/METADATA,sha256=Y4RzsZ45wfffloOg3bOkXYPu6vWSMGL2KB4_LzpDusE,42534
4638
- lino-25.3.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
4639
- lino-25.3.3.dist-info/licenses/AUTHORS.rst,sha256=8VEm_G4HOmYEa4oi1nVoKKsdo4JanekEJCefWd2E8vk,981
4640
- lino-25.3.3.dist-info/licenses/COPYING,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
4641
- lino-25.3.3.dist-info/RECORD,,
4636
+ lino-25.4.0.dist-info/METADATA,sha256=ebewMi9c7NVn3fuBa28StXDO0GH1KOGbD70Js5S4a9s,42534
4637
+ lino-25.4.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
4638
+ lino-25.4.0.dist-info/licenses/AUTHORS.rst,sha256=8VEm_G4HOmYEa4oi1nVoKKsdo4JanekEJCefWd2E8vk,981
4639
+ lino-25.4.0.dist-info/licenses/COPYING,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
4640
+ lino-25.4.0.dist-info/RECORD,,
@@ -1,67 +0,0 @@
1
- # -*- coding: UTF-8 -*-
2
- # Copyright 2009-2023 Rumma & Ko Ltd.
3
- # License: GNU Affero General Public License v3 (see file COPYING for details)
4
-
5
- from click import confirm
6
- from django.core.management.base import BaseCommand, CommandError
7
- from django.core.management import call_command
8
- from django.conf import settings
9
- from lino import logger
10
-
11
-
12
- class Command(BaseCommand):
13
- """Build the site cache files and optionally run collectstatic for this Lino site."""
14
-
15
- def add_arguments(self, parser):
16
- super().add_arguments(parser)
17
- parser.add_argument(
18
- "-b", "--batch", "--noinput",
19
- action="store_false",
20
- dest="interactive",
21
- default=True,
22
- help="Do not prompt for input of any kind.",
23
- ),
24
- parser.add_argument(
25
- "-c", "--collectstatic",
26
- action="store_true",
27
- dest="collectstatic",
28
- default=False,
29
- help="Also run collectstatic.",
30
- ),
31
-
32
- def handle(self, *args, **options):
33
- interactive = options.get("interactive")
34
- verbosity = options.get("verbosity")
35
- project_dir = settings.SITE.project_dir
36
- collectstatic = options.get("collectstatic")
37
-
38
- options = dict(interactive=False, verbosity=verbosity)
39
-
40
- if interactive:
41
- msg = "Build everything for ({})".format(project_dir)
42
- msg += ".\nAre you sure?"
43
- if not confirm(msg, default=True):
44
- raise CommandError("User abort.")
45
-
46
- # the following log message was useful on Travis 20150104
47
- if verbosity > 0:
48
- logger.info("`buildsite` started on %s.", project_dir)
49
-
50
- # pth = project_dir / "settings.py"
51
- # if pth.exists():
52
- # pth.touch()
53
-
54
- if collectstatic:
55
- call_command("collectstatic", **options)
56
-
57
- settings.SITE.build_site_cache(force=True, verbosity=verbosity)
58
-
59
- # if settings.SITE.is_installed("help"):
60
- # call_command("makehelp", verbosity=verbosity)
61
-
62
- # for p in settings.SITE.installed_plugins:
63
- # p.on_buildsite(settings.SITE, verbosity=verbosity)
64
-
65
- # settings.SITE.clear_site_config()
66
-
67
- logger.info("`buildsite` finished on %s.", project_dir)
File without changes