wagtail-cjkcms 25.1.9__py2.py3-none-any.whl → 25.2.1__py2.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.
- cjkcms/__init__.py +1 -1
- cjkcms/blocks/html_blocks.py +1 -0
- cjkcms/migrations/0022_cjkcmspage_breadcrumb_label_and_more.py +16 -7
- cjkcms/migrations/0023_alter_navbar_language.py +11 -4
- cjkcms/models/cms_models.py +3 -1
- cjkcms/models/integration_models.py +16 -18
- cjkcms/models/page_models.py +5 -0
- cjkcms/project_template/basic/home/blocks/__init__.py +12 -2
- cjkcms/project_template/basic/home/blocks/blocks.py +2 -2
- cjkcms/project_template/basic/home/models/cms_models.py +1 -0
- cjkcms/project_template/webpack/home/blocks/__init__.py +12 -2
- cjkcms/project_template/webpack/home/blocks/blocks.py +2 -2
- cjkcms/project_template/webpack/home/models/cms_models.py +1 -0
- cjkcms/templates/cjkcms/pages/search.html +14 -7
- cjkcms/templates/cjkcms/snippets/frontend_scripts.html +5 -7
- cjkcms/templatetags/friendly_loader.py +1 -0
- cjkcms/tests/media/images/test_e3WjdNA.original.png +0 -0
- cjkcms/tests/media/images/test_qOYmckb.original.png +0 -0
- cjkcms/tests/media/original_images/test_e3WjdNA.png +0 -0
- cjkcms/tests/media/original_images/test_qOYmckb.png +0 -0
- cjkcms/tests/settings.py +1 -0
- cjkcms/tests/test_search_blocks.py +36 -10
- cjkcms/tests/testapp/models.py +3 -0
- cjkcms/views.py +58 -15
- cjkcms/wagtail_hooks.py +0 -16
- {wagtail_cjkcms-25.1.9.dist-info → wagtail_cjkcms-25.2.1.dist-info}/METADATA +1 -1
- {wagtail_cjkcms-25.1.9.dist-info → wagtail_cjkcms-25.2.1.dist-info}/RECORD +41 -37
- /cjkcms/tests/media/images/{test_6zOjMLi.original.png → test_IocDjKv.original.png} +0 -0
- /cjkcms/tests/media/images/{test_DqyysqG.original.png → test_LH2dPwn.original.png} +0 -0
- /cjkcms/tests/media/images/{test_XhwqhpE.original.png → test_O3GLriA.original.png} +0 -0
- /cjkcms/tests/media/images/{test_erEkAMT.original.png → test_WUJDfCh.original.png} +0 -0
- /cjkcms/tests/media/images/{test_q64YMWd.original.png → test_ZfGlHpM.original.png} +0 -0
- /cjkcms/tests/media/original_images/{test_6zOjMLi.png → test_IocDjKv.png} +0 -0
- /cjkcms/tests/media/original_images/{test_DqyysqG.png → test_LH2dPwn.png} +0 -0
- /cjkcms/tests/media/original_images/{test_XhwqhpE.png → test_O3GLriA.png} +0 -0
- /cjkcms/tests/media/original_images/{test_erEkAMT.png → test_WUJDfCh.png} +0 -0
- /cjkcms/tests/media/original_images/{test_q64YMWd.png → test_ZfGlHpM.png} +0 -0
- {wagtail_cjkcms-25.1.9.dist-info → wagtail_cjkcms-25.2.1.dist-info}/LICENSE +0 -0
- {wagtail_cjkcms-25.1.9.dist-info → wagtail_cjkcms-25.2.1.dist-info}/WHEEL +0 -0
- {wagtail_cjkcms-25.1.9.dist-info → wagtail_cjkcms-25.2.1.dist-info}/entry_points.txt +0 -0
- {wagtail_cjkcms-25.1.9.dist-info → wagtail_cjkcms-25.2.1.dist-info}/top_level.txt +0 -0
cjkcms/__init__.py
CHANGED
cjkcms/blocks/html_blocks.py
CHANGED
@@ -6,18 +6,27 @@ from django.db import migrations, models
|
|
6
6
|
class Migration(migrations.Migration):
|
7
7
|
|
8
8
|
dependencies = [
|
9
|
-
(
|
9
|
+
("cjkcms", "0021_remove_layoutsettings_navbar_color_scheme_and_more"),
|
10
10
|
]
|
11
11
|
|
12
12
|
operations = [
|
13
13
|
migrations.AddField(
|
14
|
-
model_name=
|
15
|
-
name=
|
16
|
-
field=models.CharField(
|
14
|
+
model_name="cjkcmspage",
|
15
|
+
name="breadcrumb_label",
|
16
|
+
field=models.CharField(
|
17
|
+
blank=True,
|
18
|
+
help_text="If empty, page title will be used.",
|
19
|
+
max_length=128,
|
20
|
+
verbose_name="Breadcrumb label",
|
21
|
+
),
|
17
22
|
),
|
18
23
|
migrations.AddField(
|
19
|
-
model_name=
|
20
|
-
name=
|
21
|
-
field=models.BooleanField(
|
24
|
+
model_name="cjkcmspage",
|
25
|
+
name="breadcrumbs_visible",
|
26
|
+
field=models.BooleanField(
|
27
|
+
default=True,
|
28
|
+
help_text="Show breadcrumbs in this page header. For global change, see Settings->Layout",
|
29
|
+
verbose_name="Breadcrumbs",
|
30
|
+
),
|
22
31
|
),
|
23
32
|
]
|
@@ -6,13 +6,20 @@ from django.db import migrations, models
|
|
6
6
|
class Migration(migrations.Migration):
|
7
7
|
|
8
8
|
dependencies = [
|
9
|
-
(
|
9
|
+
("cjkcms", "0022_cjkcmspage_breadcrumb_label_and_more"),
|
10
10
|
]
|
11
11
|
|
12
12
|
operations = [
|
13
13
|
migrations.AlterField(
|
14
|
-
model_name=
|
15
|
-
name=
|
16
|
-
field=models.CharField(
|
14
|
+
model_name="navbar",
|
15
|
+
name="language",
|
16
|
+
field=models.CharField(
|
17
|
+
blank=True,
|
18
|
+
choices=[],
|
19
|
+
default="_all_",
|
20
|
+
help_text="Select a language to limit display to specific locale.",
|
21
|
+
max_length=10,
|
22
|
+
verbose_name="Show in language",
|
23
|
+
),
|
17
24
|
),
|
18
25
|
]
|
cjkcms/models/cms_models.py
CHANGED
@@ -4,6 +4,7 @@ without having to create a new page types.
|
|
4
4
|
Feel free to replace this file with your own configuration,
|
5
5
|
in your Wagtail project. Copy+paste and modify as needed.
|
6
6
|
"""
|
7
|
+
|
7
8
|
from django.utils.translation import gettext_lazy as _
|
8
9
|
from . import (
|
9
10
|
CjkcmsArticlePage,
|
@@ -59,8 +60,8 @@ class ArticleIndexPage(CjkcmsArticleIndexPage):
|
|
59
60
|
|
60
61
|
# Only allow ArticlePages beneath this page.
|
61
62
|
subpage_types = ["cjkcms.ArticlePage"]
|
62
|
-
|
63
63
|
template = "cjkcms/pages/article_index_page.html"
|
64
|
+
search_filterable = True
|
64
65
|
|
65
66
|
|
66
67
|
class WebPage(CjkcmsWebPage):
|
@@ -78,3 +79,4 @@ class WebPage(CjkcmsWebPage):
|
|
78
79
|
verbose_name = _("Web Page")
|
79
80
|
|
80
81
|
template = "cjkcms/pages/web_page.html"
|
82
|
+
search_filterable = True
|
@@ -23,9 +23,9 @@ class MailchimpSubscriberIntegrationWidget(Input):
|
|
23
23
|
list_library = self.build_list_library()
|
24
24
|
ctx["widget"]["value"] = json.dumps(json_value)
|
25
25
|
ctx["widget"]["extra_js"] = self.render_js(name, list_library, json_value)
|
26
|
-
ctx["widget"][
|
27
|
-
|
28
|
-
|
26
|
+
ctx["widget"]["selectable_mailchimp_lists"] = (
|
27
|
+
self.get_selectable_mailchimp_lists(list_library)
|
28
|
+
)
|
29
29
|
ctx["widget"]["stored_mailchimp_list"] = self.get_stored_mailchimp_list(
|
30
30
|
json_value
|
31
31
|
)
|
@@ -81,23 +81,21 @@ class MailchimpSubscriberIntegrationWidget(Input):
|
|
81
81
|
"interest_categories": {},
|
82
82
|
}
|
83
83
|
|
84
|
-
list_library[mlist["id"]][
|
85
|
-
"merge_fields"
|
86
|
-
|
87
|
-
list_library[mlist["id"]][
|
88
|
-
"
|
89
|
-
|
90
|
-
|
91
|
-
|
84
|
+
list_library[mlist["id"]]["merge_fields"] = (
|
85
|
+
mailchimp.get_merge_fields_for_list(mlist["id"])["merge_fields"]
|
86
|
+
)
|
87
|
+
list_library[mlist["id"]]["interest_categories"] = (
|
88
|
+
mailchimp.get_interest_categories_for_list(mlist["id"])[
|
89
|
+
"categories"
|
90
|
+
]
|
91
|
+
)
|
92
92
|
|
93
93
|
for category in list_library[mlist["id"]]["interest_categories"]:
|
94
|
-
category[
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
)
|
99
|
-
"interests"
|
100
|
-
]
|
94
|
+
category["interests"] = (
|
95
|
+
mailchimp.get_interests_for_interest_category(
|
96
|
+
mlist["id"], category["id"]
|
97
|
+
)["interests"]
|
98
|
+
)
|
101
99
|
|
102
100
|
return list_library
|
103
101
|
|
cjkcms/models/page_models.py
CHANGED
@@ -373,6 +373,11 @@ class CjkcmsPage(WagtailCacheMixin, SeoMixin, Page, metaclass=CjkcmsPageMeta):
|
|
373
373
|
edit_handler = TabbedInterface(panels)
|
374
374
|
return edit_handler.bind_to_model(cls)
|
375
375
|
|
376
|
+
@property
|
377
|
+
def search_name(self) -> str:
|
378
|
+
"""Unless override, get the verbose name of the model"""
|
379
|
+
return self._meta.verbose_name
|
380
|
+
|
376
381
|
@property
|
377
382
|
def breadcrumb_title(self) -> str:
|
378
383
|
"""
|
@@ -1,2 +1,12 @@
|
|
1
|
-
from .blocks import
|
2
|
-
|
1
|
+
from .blocks import HOME_CONTENT_STREAMBLOCKS, HOME_LAYOUT_STREAMBLOCKS # noqa
|
2
|
+
|
3
|
+
# from otherapp.blocks import OTHERAPP_CONTENT_STREAMBLOCKS, OTHERAPP_LAYOUT_STREAMBLOCKS # noqa
|
4
|
+
|
5
|
+
|
6
|
+
# add your own content block
|
7
|
+
PROJECT_CONTENT_STREAMBLOCKS = (
|
8
|
+
HOME_CONTENT_STREAMBLOCKS # + OTHERAPP_CONTENT_STREAMBLOCKS
|
9
|
+
)
|
10
|
+
|
11
|
+
# add your own layout blocks
|
12
|
+
PROJECT_LAYOUT_STREAMBLOCKS = HOME_LAYOUT_STREAMBLOCKS # + OTHERAPP_LAYOUT_STREAMBLOCKS
|
@@ -66,11 +66,11 @@ class EventPresentationBlock(BaseBlock):
|
|
66
66
|
|
67
67
|
|
68
68
|
# add your own content block
|
69
|
-
|
69
|
+
HOME_CONTENT_STREAMBLOCKS = [
|
70
70
|
("event_presentation", EventPresentationBlock()),
|
71
71
|
]
|
72
72
|
|
73
73
|
# add your own layout blocks
|
74
|
-
|
74
|
+
HOME_LAYOUT_STREAMBLOCKS = [
|
75
75
|
# ("custom_block", CustomBlock()),
|
76
76
|
]
|
@@ -1,2 +1,12 @@
|
|
1
|
-
from .blocks import
|
2
|
-
|
1
|
+
from .blocks import HOME_CONTENT_STREAMBLOCKS, HOME_LAYOUT_STREAMBLOCKS # noqa
|
2
|
+
|
3
|
+
# from otherapp.blocks import OTHERAPP_CONTENT_STREAMBLOCKS, OTHERAPP_LAYOUT_STREAMBLOCKS # noqa
|
4
|
+
|
5
|
+
|
6
|
+
# add your own content block
|
7
|
+
PROJECT_CONTENT_STREAMBLOCKS = (
|
8
|
+
HOME_CONTENT_STREAMBLOCKS # + OTHERAPP_CONTENT_STREAMBLOCKS
|
9
|
+
)
|
10
|
+
|
11
|
+
# add your own layout blocks
|
12
|
+
PROJECT_LAYOUT_STREAMBLOCKS = HOME_LAYOUT_STREAMBLOCKS # + OTHERAPP_LAYOUT_STREAMBLOCKS
|
@@ -66,11 +66,11 @@ class EventPresentationBlock(BaseBlock):
|
|
66
66
|
|
67
67
|
|
68
68
|
# add your own content block
|
69
|
-
|
69
|
+
HOME_CONTENT_STREAMBLOCKS = [
|
70
70
|
("event_presentation", EventPresentationBlock()),
|
71
71
|
]
|
72
72
|
|
73
73
|
# add your own layout blocks
|
74
|
-
|
74
|
+
HOME_LAYOUT_STREAMBLOCKS = [
|
75
75
|
# ("custom_block", CustomBlock()),
|
76
76
|
]
|
@@ -35,19 +35,26 @@
|
|
35
35
|
</form>
|
36
36
|
{# endif #}
|
37
37
|
|
38
|
-
{% if
|
38
|
+
{% if results_by_model %}
|
39
39
|
{% query_update request.GET 'p' None as qs_nop %}
|
40
40
|
<div class="mt-5">
|
41
41
|
<ul class="nav nav-pills">
|
42
42
|
<li class="nav-item">
|
43
43
|
{% query_update qs_nop 't' None as qs_t %}
|
44
|
-
<a class="nav-link {% if not form.t.value %}active{% endif %}" href="?{{qs_t.urlencode}}">{% trans 'All Results' %}</a>
|
45
|
-
</li>
|
46
|
-
{% for pt in pagetypes %}
|
47
|
-
<li class="nav-item">
|
48
|
-
{% query_update qs_nop 't' pt.content_type.model as qs_t %}
|
49
|
-
<a class="nav-link {% if form.t.value == pt.content_type.model %}active{% endif %}" href="?{{qs_t.urlencode}}">{{pt|get_plural_name_of_class}}</a>
|
44
|
+
<a class="nav-link {% if not form.t.value %}active{% endif %}" href="?{{ qs_t.urlencode }}">{% trans 'All Results' %}</a>
|
50
45
|
</li>
|
46
|
+
{% for key, result in results_by_model.items %}
|
47
|
+
{% if result.count > 0 %}
|
48
|
+
{% query_update qs_nop 't' key as qs_t %}
|
49
|
+
<li class="nav-item">
|
50
|
+
<a class="nav-link {% if form.t.value == key %}active{% endif %}" href="?{{ qs_t.urlencode }}">{{ result.model|get_plural_name_of_class }}
|
51
|
+
<span class="badge badge-info">
|
52
|
+
{{ result.count }}
|
53
|
+
<span class="visually-hidden">search results</span>
|
54
|
+
</span>
|
55
|
+
</a>
|
56
|
+
</li>
|
57
|
+
{% endif %}
|
51
58
|
{% endfor %}
|
52
59
|
</ul>
|
53
60
|
</div>
|
@@ -2,13 +2,11 @@
|
|
2
2
|
{% friendly_load webpack_loader %}
|
3
3
|
|
4
4
|
{% if settings.cjkcms.LayoutSettings.frontend_theme == 'python-webpack' %}
|
5
|
-
{%
|
6
|
-
{%
|
7
|
-
|
8
|
-
{%
|
9
|
-
|
10
|
-
{% endif %}
|
11
|
-
{% endif_has_tag %}
|
5
|
+
{% if app_name %}
|
6
|
+
{% if_has_tag javascript_pack %}{% javascript_pack 'app' app_name attrs='charset="UTF-8"' %}{% endif_has_tag %}
|
7
|
+
{% else %}
|
8
|
+
{% if_has_tag javascript_pack %}{% javascript_pack 'app' attrs='charset="UTF-8"' %}{% endif_has_tag %}
|
9
|
+
{% endif %}
|
12
10
|
{% else %}
|
13
11
|
<script src="{% theme_js %}"
|
14
12
|
crossorigin="anonymous"></script>
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
cjkcms/tests/settings.py
CHANGED
@@ -5,6 +5,8 @@ from django.urls import reverse
|
|
5
5
|
from django.test import Client, TestCase, override_settings
|
6
6
|
|
7
7
|
from cjkcms.models.cms_models import ArticlePage
|
8
|
+
from wagtail.models import Locale
|
9
|
+
from wagtail.search import index as search_index
|
8
10
|
|
9
11
|
|
10
12
|
@override_settings(
|
@@ -81,9 +83,12 @@ class TestSearchBlocks(TestCase):
|
|
81
83
|
def create_article_page(self):
|
82
84
|
# Get the HomePage
|
83
85
|
home_page = Page.objects.get(path="00010001")
|
84
|
-
|
85
|
-
|
86
|
-
|
86
|
+
article_page = ArticlePage(
|
87
|
+
title="Test Article",
|
88
|
+
seo_title="Test Article",
|
89
|
+
locale_id=Locale.get_default().id,
|
90
|
+
body=None,
|
91
|
+
)
|
87
92
|
home_page.add_child(instance=article_page)
|
88
93
|
article_page.save_revision().publish()
|
89
94
|
|
@@ -92,13 +97,35 @@ class TestSearchBlocks(TestCase):
|
|
92
97
|
article_page.body = content
|
93
98
|
article_page.save_revision().publish()
|
94
99
|
|
100
|
+
# Manually update the search index after publishing the page
|
101
|
+
search_index.insert_or_update_object(article_page)
|
102
|
+
|
95
103
|
def test_page_type_in_search_results(self):
|
96
104
|
response = self.client.get(
|
97
105
|
reverse("cjkcms_search"), {"s": "doesn't matter"}, follow=True
|
98
106
|
)
|
99
107
|
|
100
108
|
self.assertEqual(response.status_code, 200)
|
101
|
-
self.
|
109
|
+
self.assertIn(
|
110
|
+
"ArticlePage",
|
111
|
+
[pagetype.__name__ for pagetype in response.context["pagetypes"]],
|
112
|
+
)
|
113
|
+
|
114
|
+
def test_search_article_title(self):
|
115
|
+
# Manually update the search index after publishing the page
|
116
|
+
article_page = ArticlePage.objects.get(title="Test Article")
|
117
|
+
search_index.insert_or_update_object(article_page)
|
118
|
+
|
119
|
+
response = self.client.get(
|
120
|
+
reverse("cjkcms_search"), {"s": "Test", "t": ""}, follow=True
|
121
|
+
)
|
122
|
+
self.assertEqual(len(response.context["results"]), 1)
|
123
|
+
|
124
|
+
response = self.client.get(
|
125
|
+
reverse("cjkcms_search"), {"s": "Best Article"}, follow=True
|
126
|
+
)
|
127
|
+
|
128
|
+
self.assertEqual(len(response.context["results"]), 0)
|
102
129
|
|
103
130
|
def test_search_richtext(self):
|
104
131
|
self.set_article_body(self.block_richtext)
|
@@ -113,7 +140,7 @@ class TestSearchBlocks(TestCase):
|
|
113
140
|
reverse("cjkcms_search"), {"s": "daisies"}, follow=True
|
114
141
|
)
|
115
142
|
|
116
|
-
self.assertEqual(len(response.context["results"]),
|
143
|
+
self.assertEqual(len(response.context["results"]), 1)
|
117
144
|
|
118
145
|
def test_search_button(self):
|
119
146
|
self.set_article_body(self.block_button_link)
|
@@ -127,8 +154,7 @@ class TestSearchBlocks(TestCase):
|
|
127
154
|
response = self.client.get(
|
128
155
|
reverse("cjkcms_search"), {"s": "Benjamin"}, follow=True
|
129
156
|
)
|
130
|
-
|
131
|
-
self.assertEqual(len(response.context["results"]), 2)
|
157
|
+
self.assertEqual(len(response.context["results"]), 1)
|
132
158
|
|
133
159
|
def test_search_html(self):
|
134
160
|
self.set_article_body(self.block_html)
|
@@ -143,7 +169,7 @@ class TestSearchBlocks(TestCase):
|
|
143
169
|
reverse("cjkcms_search"), {"s": "from HTML"}, follow=True
|
144
170
|
)
|
145
171
|
|
146
|
-
self.assertEqual(len(response.context["results"]),
|
172
|
+
self.assertEqual(len(response.context["results"]), 1)
|
147
173
|
|
148
174
|
def test_search_quote(self):
|
149
175
|
self.set_article_body(self.block_quote)
|
@@ -158,10 +184,10 @@ class TestSearchBlocks(TestCase):
|
|
158
184
|
reverse("cjkcms_search"), {"s": "quotably"}, follow=True
|
159
185
|
)
|
160
186
|
|
161
|
-
self.assertEqual(len(response.context["results"]),
|
187
|
+
self.assertEqual(len(response.context["results"]), 1)
|
162
188
|
|
163
189
|
response = self.client.get(
|
164
190
|
reverse("cjkcms_search"), {"s": "Nobody"}, follow=True
|
165
191
|
)
|
166
192
|
|
167
|
-
self.assertEqual(len(response.context["results"]),
|
193
|
+
self.assertEqual(len(response.context["results"]), 1)
|
cjkcms/tests/testapp/models.py
CHANGED
@@ -8,12 +8,15 @@ from cjkcms.models import (
|
|
8
8
|
class ProjectArticlePage(CjkcmsArticlePage):
|
9
9
|
template = "cjkcms/pages/article_page.html"
|
10
10
|
search_template = "cjkcms/pages/article_page.search.html"
|
11
|
+
search_filterable = True
|
11
12
|
|
12
13
|
|
13
14
|
class ProjectArticleIndexPage(CjkcmsArticleIndexPage):
|
14
15
|
template = "cjkcms/pages/article_index_page.html"
|
16
|
+
search_filterable = True
|
15
17
|
|
16
18
|
|
17
19
|
class ProjectWebPage(CjkcmsWebPage):
|
18
20
|
# use cjkcms template by default
|
19
21
|
template = "cjkcms/pages/web_page.html"
|
22
|
+
search_filterable = True
|
cjkcms/views.py
CHANGED
@@ -23,6 +23,32 @@ from cjkcms.models import (
|
|
23
23
|
LayoutSettings,
|
24
24
|
)
|
25
25
|
|
26
|
+
from wagtail.models import Locale
|
27
|
+
|
28
|
+
|
29
|
+
def search_model_backend(model, search_query, current_locale):
|
30
|
+
"""
|
31
|
+
Helper function to search a specific model with the search backend.
|
32
|
+
|
33
|
+
Parameters:
|
34
|
+
- model: The model to search.
|
35
|
+
- search_query: The query string to search for.
|
36
|
+
- current_locale: The current locale for filtering pages.
|
37
|
+
|
38
|
+
Returns:
|
39
|
+
- list: Search results for the model.
|
40
|
+
"""
|
41
|
+
backend = get_search_backend()
|
42
|
+
if issubclass(model, Page):
|
43
|
+
# Search only live and public pages for models that are Page subclasses
|
44
|
+
return backend.search(
|
45
|
+
search_query,
|
46
|
+
model.objects.live().public().filter(locale=current_locale),
|
47
|
+
)
|
48
|
+
else:
|
49
|
+
# Search normally for non-page models
|
50
|
+
return backend.search(search_query, model)
|
51
|
+
|
26
52
|
|
27
53
|
def search(request):
|
28
54
|
"""
|
@@ -34,35 +60,51 @@ def search(request):
|
|
34
60
|
Returns:
|
35
61
|
HttpResponse: The rendered search results page.
|
36
62
|
"""
|
63
|
+
|
37
64
|
search_form = SearchForm(request.GET)
|
38
|
-
results =
|
65
|
+
results = None
|
39
66
|
results_paginated = []
|
40
67
|
indexed_models = []
|
41
|
-
|
42
|
-
if (
|
43
|
-
issubclass(model, index.Indexed)
|
44
|
-
and hasattr(model, "search_filterable")
|
45
|
-
and model.search_filterable
|
46
|
-
):
|
47
|
-
indexed_models.append(model)
|
68
|
+
results_by_model = {}
|
48
69
|
|
49
70
|
if search_form.is_valid():
|
71
|
+
current_locale = Locale.get_active()
|
50
72
|
search_query = search_form.cleaned_data["s"]
|
51
73
|
search_model = search_form.cleaned_data["t"]
|
52
|
-
|
74
|
+
results = []
|
75
|
+
for model in apps.get_models():
|
76
|
+
if (
|
77
|
+
issubclass(model, index.Indexed)
|
78
|
+
and hasattr(model, "search_filterable")
|
79
|
+
and model.search_filterable
|
80
|
+
):
|
81
|
+
indexed_models.append(model)
|
82
|
+
|
83
|
+
# If a specific model is selected
|
53
84
|
if search_model and ContentType.objects.filter(model=search_model).exists():
|
54
85
|
try:
|
55
86
|
# If provided a model name, try to get it
|
56
87
|
model = ContentType.objects.get(model=search_model).model_class()
|
57
|
-
results =
|
88
|
+
results = search_model_backend(model, search_query, current_locale)
|
89
|
+
# Store the count of results for this model
|
90
|
+
results_by_model[model._meta.model_name] = {
|
91
|
+
"model": model,
|
92
|
+
"count": results.count(),
|
93
|
+
}
|
58
94
|
except ContentType.DoesNotExist:
|
59
|
-
|
60
|
-
results = []
|
95
|
+
results = None
|
61
96
|
else:
|
62
|
-
|
63
|
-
# results=[]
|
97
|
+
# Search all indexed models
|
64
98
|
for model in indexed_models:
|
65
|
-
|
99
|
+
model_results = search_model_backend(
|
100
|
+
model, search_query, current_locale
|
101
|
+
)
|
102
|
+
# Store the count of results for this model
|
103
|
+
results_by_model[model._meta.model_name] = {
|
104
|
+
"model": model,
|
105
|
+
"count": model_results.count(),
|
106
|
+
}
|
107
|
+
results += model_results
|
66
108
|
# get and paginate results
|
67
109
|
if results:
|
68
110
|
paginator = Paginator(
|
@@ -84,6 +126,7 @@ def search(request):
|
|
84
126
|
"results": results,
|
85
127
|
"pagetypes": indexed_models,
|
86
128
|
"results_paginated": results_paginated,
|
129
|
+
"results_by_model": results_by_model,
|
87
130
|
}
|
88
131
|
# Render template
|
89
132
|
return render(
|
cjkcms/wagtail_hooks.py
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
import mimetypes
|
2
|
-
|
3
1
|
from cjkcms import __version__
|
4
2
|
from cjkcms.draftail import (
|
5
3
|
NewWindowExternalLinkHandler,
|
@@ -8,7 +6,6 @@ from cjkcms.draftail import (
|
|
8
6
|
)
|
9
7
|
|
10
8
|
# from cjkcms.models.admin_sidebar import NavbarSnippet, EventCalendarSnippet
|
11
|
-
from django.http.response import HttpResponse
|
12
9
|
from django.templatetags.static import static
|
13
10
|
from django.utils.html import format_html
|
14
11
|
from wagtail import hooks
|
@@ -132,19 +129,6 @@ hooks.register("after_edit_snippet", clear_wagtailcache)
|
|
132
129
|
hooks.register("after_delete_snippet", clear_wagtailcache)
|
133
130
|
|
134
131
|
|
135
|
-
@hooks.register("before_serve_document") # type: ignore
|
136
|
-
def serve_document_directly(document, request):
|
137
|
-
"""
|
138
|
-
This hook prevents documents from being downloaded unless
|
139
|
-
specified by an <a> tag with the download attribute.
|
140
|
-
"""
|
141
|
-
content_type, content_encoding = mimetypes.guess_type(document.filename)
|
142
|
-
response = HttpResponse(document.file.read(), content_type=content_type)
|
143
|
-
response["Content-Disposition"] = 'inline;filename="{0}"'.format(document.filename)
|
144
|
-
response["Content-Encoding"] = str(content_encoding)
|
145
|
-
return response
|
146
|
-
|
147
|
-
|
148
132
|
class ImportExportMenuItem(MenuItem):
|
149
133
|
def is_shown(self, request):
|
150
134
|
return request.user.is_superuser
|
@@ -1,4 +1,4 @@
|
|
1
|
-
cjkcms/__init__.py,sha256=
|
1
|
+
cjkcms/__init__.py,sha256=bEBeeWOE3nJUbi0p10zNZfqAjN2kANoRVEm0PFoi2TU,272
|
2
2
|
cjkcms/apps.py,sha256=VA5Z1YerImetvN8KsjPTMSn1fSo6O1JkBJdK5y5ubJY,173
|
3
3
|
cjkcms/fields.py,sha256=dE0DuNIjX7jhA-5GjSmR2l66EDH2kq3vuxL9WyRALCY,3191
|
4
4
|
cjkcms/forms.py,sha256=_uu_FR8odz40lD-Rmw0tlK7-xxxa8THHfV2-1ZJYsIM,361
|
@@ -7,8 +7,8 @@ cjkcms/search_urls.py,sha256=92XkGTJRrQQyA061wWl1l5C0vq6INVJPXOrpcgp3aoU,125
|
|
7
7
|
cjkcms/settings.py,sha256=zw8V6cMP57w-U0M5hU4a1ouRLn-q02Waip7KnTZfbpc,20109
|
8
8
|
cjkcms/urls.py,sha256=k5tEHWI4Umi2PWvGdNJ-FZ9OCy6AS3Y2S7k5jNOpgt0,644
|
9
9
|
cjkcms/utils.py,sha256=u4pkPxAwqH3SgyIcmvk7I5L3w-eIcz0Rphmv0Y1DRpA,2006
|
10
|
-
cjkcms/views.py,sha256=
|
11
|
-
cjkcms/wagtail_hooks.py,sha256=
|
10
|
+
cjkcms/views.py,sha256=Bl2K_hWwhxBPwkm7SeUo45qyEbrQUlMmE9tis2GQKwg,5793
|
11
|
+
cjkcms/wagtail_hooks.py,sha256=AL2laH5wvYcM7rOIqOV2RGYe8Bx0luMi_5xvT1E0xTs,6686
|
12
12
|
cjkcms/widgets.py,sha256=2B92WkaktZC1ge4GrAMTB7VVYKnKR8qoZLAtWS2z_00,1745
|
13
13
|
cjkcms/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
14
14
|
cjkcms/api/mailchimp.py,sha256=pufnnu8n-c6kkWNKy-EsRLW5LLBn8_TmYrnRSQCPFdY,2832
|
@@ -17,7 +17,7 @@ cjkcms/bin/cjkcms.py,sha256=i11hhB11COQhTk05y7mkeIkUYcFjhI8-QxLkN3tCxgg,5763
|
|
17
17
|
cjkcms/blocks/__init__.py,sha256=a54EtWyH8UPqszlVEeOtFCvBW2WmbaW1vR4sZuN9Hf0,3542
|
18
18
|
cjkcms/blocks/base_blocks.py,sha256=uKp6QO3iOPT4P0H0yOumvL7faPvLQK9Dj-D8iqlvqQ4,11616
|
19
19
|
cjkcms/blocks/content_blocks.py,sha256=-bIh3BCNYx0N7iK3mpfnLOzIsSMItgpLeC9Cqg-_dTc,9759
|
20
|
-
cjkcms/blocks/html_blocks.py,sha256=
|
20
|
+
cjkcms/blocks/html_blocks.py,sha256=bDRDEresn3R87Uux7YztU2WhRnxGhJ429soOpmAd41c,9544
|
21
21
|
cjkcms/blocks/layout_blocks.py,sha256=n2oVyL-ZQQaEA00HU6YraR59YF065o-OK7WuAahGuiw,3406
|
22
22
|
cjkcms/blocks/searchable_html_block.py,sha256=i1rWv4vwwvZ9fxkASwPKl87-TqVHkXOFyohH3ve7pYk,171
|
23
23
|
cjkcms/blocks/content/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -54,14 +54,14 @@ cjkcms/migrations/0018_layoutsettings_search_format.py,sha256=NURMUoMyg20hSM_IDc
|
|
54
54
|
cjkcms/migrations/0019_layoutsettings_searchbox_input_class_and_more.py,sha256=SeA-oN5r9uePXOfPv57ETfGF_ZzNpv9vnkA_rmATXUY,1504
|
55
55
|
cjkcms/migrations/0020_socialmediasettings_github_and_more.py,sha256=flCSiw6wB32wsxSln2NA66zWkxrJLhNfL1O3UInH2to,1044
|
56
56
|
cjkcms/migrations/0021_remove_layoutsettings_navbar_color_scheme_and_more.py,sha256=lOOyu3QHjnjZY3HwXWCvUBxngm-t_sk4TvuxZ2Cq_j4,2723
|
57
|
-
cjkcms/migrations/0022_cjkcmspage_breadcrumb_label_and_more.py,sha256=
|
58
|
-
cjkcms/migrations/0023_alter_navbar_language.py,sha256=
|
57
|
+
cjkcms/migrations/0022_cjkcmspage_breadcrumb_label_and_more.py,sha256=GprAV-Z_jJ9csmrhW1lMT9g91wQ5vVVfhqhxbS96ETc,954
|
58
|
+
cjkcms/migrations/0023_alter_navbar_language.py,sha256=uXqRLfKQwFGgEDPICTo_esHmOsKgEVlGPhjc6pDDcCo,658
|
59
59
|
cjkcms/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
60
60
|
cjkcms/models/__init__.py,sha256=f99GmxfFxGtQl8JvZFz8rAtklCIesLoSccyhhi2xgPU,232
|
61
61
|
cjkcms/models/admin_sidebar.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
62
|
-
cjkcms/models/cms_models.py,sha256=
|
63
|
-
cjkcms/models/integration_models.py,sha256=
|
64
|
-
cjkcms/models/page_models.py,sha256
|
62
|
+
cjkcms/models/cms_models.py,sha256=leC-RKrd6GltgWcvM_3KT0guMeBt5r2YhgADFi6glzA,2414
|
63
|
+
cjkcms/models/integration_models.py,sha256=DAAgMtjErjaWKRu6yPQUoWAG-uu4qZxCg1N9FqlswAA,6280
|
64
|
+
cjkcms/models/page_models.py,sha256=tu2cvc0cyQu1I81lHv6UBk3P-xiINwzwLBLxB0gGyho,25607
|
65
65
|
cjkcms/models/snippet_models.py,sha256=cV7nFpNfJE_JP-3g77swGgQt3szrwHlAEOXUwwYE2QY,17188
|
66
66
|
cjkcms/models/wagtailsettings_models.py,sha256=ntgbGOquVmgbMehgV36KEiS25olqr_m5Ff7Ce7Pq61Y,23041
|
67
67
|
cjkcms/project_template/basic/.editorconfig,sha256=1wgq7hgAUSHLfuy4Jh9BJ4ysyQL0si5UBbCu_OMz9hg,722
|
@@ -71,13 +71,13 @@ cjkcms/project_template/basic/README.md,sha256=KqbqIp8hHb6nW7PuQjjKL6QIsibNu3vzV
|
|
71
71
|
cjkcms/project_template/basic/manage.py,sha256=a0-pofJxi3cyiildUPnerQr2NQUnJz3INLfdA5vAEBE,678
|
72
72
|
cjkcms/project_template/basic/requirements.txt,sha256=ElqN__9IW5lZIZ0M9vKPohdcJShbrTG1oZbF_UjgJZE,123
|
73
73
|
cjkcms/project_template/basic/home/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
74
|
-
cjkcms/project_template/basic/home/blocks/__init__.py,sha256=
|
75
|
-
cjkcms/project_template/basic/home/blocks/blocks.py,sha256=
|
74
|
+
cjkcms/project_template/basic/home/blocks/__init__.py,sha256=Qm1MDxNmnXaY1vVISlaZu0EaySahCfzq0hvmW7ilDig,429
|
75
|
+
cjkcms/project_template/basic/home/blocks/blocks.py,sha256=YWE15PKj71bnKvqQqEqK51rTawM2lUkZ25o79b6AsyE,2135
|
76
76
|
cjkcms/project_template/basic/home/migrations/0001_initial.py,sha256=yPFA3NfiTpYBVXzl-ZqFmo1W-JZPXX_GS2XqrkivtSQ,4981
|
77
77
|
cjkcms/project_template/basic/home/migrations/0002_create_homepage.py,sha256=xBM1nxi18c91ojqKMNhdjTZEhaF33dWYoVZneO-GUfM,2047
|
78
78
|
cjkcms/project_template/basic/home/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
79
79
|
cjkcms/project_template/basic/home/models/__init__.py,sha256=Zbh266jB2tBtwC8amTyaU0mbjjxjfxxbiYt2M9ctrq8,383
|
80
|
-
cjkcms/project_template/basic/home/models/cms_models.py,sha256=
|
80
|
+
cjkcms/project_template/basic/home/models/cms_models.py,sha256=W8UeJzB1ATnw-ljnQHxvFevNrUKck638_Iz-x4totmI,3107
|
81
81
|
cjkcms/project_template/basic/home/templates/home/blocks/event_presentation.html,sha256=KUOqay0D20g6N4M4tU8gTGvpNwTP-6F34hO0DfNZ3hI,2282
|
82
82
|
cjkcms/project_template/basic/project_name/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
83
83
|
cjkcms/project_template/basic/project_name/urls.py,sha256=OjM85aN8h7gmM7Haaxmcoe9RlheJ0kuQrIyElM0CzPg,911
|
@@ -119,13 +119,13 @@ cjkcms/project_template/webpack/frontend/webpack/webpack.config.dev.js,sha256=WH
|
|
119
119
|
cjkcms/project_template/webpack/frontend/webpack/webpack.config.prod.js,sha256=FjsN0ooC51W39UhISKlsoBMevNewbCw-0Phma1MyaA8,986
|
120
120
|
cjkcms/project_template/webpack/frontend/webpack/webpack.config.watch.js,sha256=JWJCSV0MsvN5ZRS0JiYvlYn0INpD3gVXWiCzJny5L88,1485
|
121
121
|
cjkcms/project_template/webpack/home/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
122
|
-
cjkcms/project_template/webpack/home/blocks/__init__.py,sha256=
|
123
|
-
cjkcms/project_template/webpack/home/blocks/blocks.py,sha256=
|
122
|
+
cjkcms/project_template/webpack/home/blocks/__init__.py,sha256=Qm1MDxNmnXaY1vVISlaZu0EaySahCfzq0hvmW7ilDig,429
|
123
|
+
cjkcms/project_template/webpack/home/blocks/blocks.py,sha256=YWE15PKj71bnKvqQqEqK51rTawM2lUkZ25o79b6AsyE,2135
|
124
124
|
cjkcms/project_template/webpack/home/migrations/0001_initial.py,sha256=yPFA3NfiTpYBVXzl-ZqFmo1W-JZPXX_GS2XqrkivtSQ,4981
|
125
125
|
cjkcms/project_template/webpack/home/migrations/0002_create_homepage.py,sha256=xBM1nxi18c91ojqKMNhdjTZEhaF33dWYoVZneO-GUfM,2047
|
126
126
|
cjkcms/project_template/webpack/home/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
127
127
|
cjkcms/project_template/webpack/home/models/__init__.py,sha256=7dlJygS5td5eLdIKd-PG5L0vM9xdTsb0yPKcVZNKSKQ,391
|
128
|
-
cjkcms/project_template/webpack/home/models/cms_models.py,sha256=
|
128
|
+
cjkcms/project_template/webpack/home/models/cms_models.py,sha256=W8UeJzB1ATnw-ljnQHxvFevNrUKck638_Iz-x4totmI,3107
|
129
129
|
cjkcms/project_template/webpack/home/templates/home/blocks/event_presentation.html,sha256=KUOqay0D20g6N4M4tU8gTGvpNwTP-6F34hO0DfNZ3hI,2282
|
130
130
|
cjkcms/project_template/webpack/project_name/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
131
131
|
cjkcms/project_template/webpack/project_name/urls.py,sha256=OjM85aN8h7gmM7Haaxmcoe9RlheJ0kuQrIyElM0CzPg,911
|
@@ -284,7 +284,7 @@ cjkcms/templates/cjkcms/pages/base.html,sha256=XqaHguBc00cllm304dY-8MMuIYxqosnZq
|
|
284
284
|
cjkcms/templates/cjkcms/pages/form_page_landing.html,sha256=zdySSHOWF10-x2MFLH9XMjeFSeNTMRM-VpvZ1tM8kw0,248
|
285
285
|
cjkcms/templates/cjkcms/pages/home_page.html,sha256=67h2o3EVXsrivMqM26OZV-7-H_9vv1clFJ4MFMknIMU,50
|
286
286
|
cjkcms/templates/cjkcms/pages/page.mini.html,sha256=VR3lTCUgHPXTd2HAlNrxQAmNjS_0VGzfQccUV5IeDXc,506
|
287
|
-
cjkcms/templates/cjkcms/pages/search.html,sha256=
|
287
|
+
cjkcms/templates/cjkcms/pages/search.html,sha256=m3VyiByKmuF3YDUAMHChFYCN6zeihqjKLURZEEOI8A0,3377
|
288
288
|
cjkcms/templates/cjkcms/pages/search_result.html,sha256=peGL-4UtHGQdYlmdUqGUX3MxZLuw4EcxY00yQFW_7Ag,582
|
289
289
|
cjkcms/templates/cjkcms/pages/web_page.html,sha256=floOVzOyPYvTMKfWd3pY0vyrqG7jt4WS5xJt3j6gZM0,594
|
290
290
|
cjkcms/templates/cjkcms/pages/web_page_notitle.html,sha256=HjwzN8NpJBOVjKM6_cLtPfUllotFMkvQPLXL2aoB6A0,378
|
@@ -293,7 +293,7 @@ cjkcms/templates/cjkcms/snippets/bottom_corner_lang_selector.html,sha256=_gcHmob
|
|
293
293
|
cjkcms/templates/cjkcms/snippets/breadcrumbs.html,sha256=3flWNTJ568V4l9HTuYK5vZ7Mm6L1S0Qk8dKmQP0boDM,1342
|
294
294
|
cjkcms/templates/cjkcms/snippets/footer.html,sha256=_QUtV_LHgGjh-XLzw5Fd_Lxdrx9on5G0luFaa6oirB0,430
|
295
295
|
cjkcms/templates/cjkcms/snippets/frontend_assets.html,sha256=2q24FFzOiM2USJiI1tuNTdJZGvRQnMPjAwTA0AlGNiU,1656
|
296
|
-
cjkcms/templates/cjkcms/snippets/frontend_scripts.html,sha256=
|
296
|
+
cjkcms/templates/cjkcms/snippets/frontend_scripts.html,sha256=6mi5V8GvdsmW0TF4pcrI4XqTx4Eog7I-ffWEsgXbpYY,624
|
297
297
|
cjkcms/templates/cjkcms/snippets/navbar.html,sha256=3J9N2g1MVMyvAaQFbkNBYSwbXp8wpOQiHQabFY6PyTc,2879
|
298
298
|
cjkcms/templates/cjkcms/snippets/navbar_lang_selector.html,sha256=sn7KLDentGOsMZ9CNAxdAGLYO3a_mYfSUhJ6iZzteOE,836
|
299
299
|
cjkcms/templates/cjkcms/snippets/navbar_search.html,sha256=yV6xIWQ3_BdrTEPVp3j0WKqChPui7oC0Zl3C2fUrpes,1075
|
@@ -313,12 +313,12 @@ cjkcms/templates/wagtailadmin/tables/thumbnail_cell.html,sha256=RzMT-tBnnDOgL-ze
|
|
313
313
|
cjkcms/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
314
314
|
cjkcms/templatetags/auth_extras.py,sha256=IIxQ5n9FaQVZmhW-yW1XM5p2OjIemtqVoX-O-UcCns8,327
|
315
315
|
cjkcms/templatetags/cjkcms_tags.py,sha256=KkKQ0o1FMdIC3zPAu7rKcnT3aAlLWMxTUIkE7ehgUcg,10411
|
316
|
-
cjkcms/templatetags/friendly_loader.py,sha256=
|
316
|
+
cjkcms/templatetags/friendly_loader.py,sha256=jSGOqgAyXaN8XvbjEyvOwYAtAucnehHT8Ld4Qli5_l8,4963
|
317
317
|
cjkcms/templatetags/gravatar.py,sha256=JG5MB6HUFso15J8gZ_te5FTMYAuo4km8rzMKKvLLh-E,1127
|
318
318
|
cjkcms/templatetags/txtutils_tags.py,sha256=UMojdiLt6Jpijc-2QLusPc-qXX9bqFZf0JbqqPsfnWQ,1223
|
319
319
|
cjkcms/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
320
320
|
cjkcms/tests/manage.py,sha256=EUgybZlZ7xk2Zf2KCwBbK_z7gf7Ifqs0_bl4Kijhdgo,242
|
321
|
-
cjkcms/tests/settings.py,sha256=
|
321
|
+
cjkcms/tests/settings.py,sha256=OwAx_73FfO68FcCcc6yaJQdNBd8Pz7N2YqwJ60ouPHo,2557
|
322
322
|
cjkcms/tests/test_advsettings.py,sha256=NiXJfc5ocJgxtbbnWhzEloS2wm3ODbZCyYfsS6lRgvU,6908
|
323
323
|
cjkcms/tests/test_articlepages.py,sha256=7V7tr2kCKiEU1y36PlB9yoP0tmSDb8cchf8VYof3GGM,4226
|
324
324
|
cjkcms/tests/test_bin.py,sha256=z-6vMYYqhv18UO00sUPrNpLLue0mbRr5vzqisu7UKAY,3506
|
@@ -326,33 +326,37 @@ cjkcms/tests/test_countdown_block.py,sha256=83RgYXvOLErcswXg13WRPD-Lf5VAykx_YRb2
|
|
326
326
|
cjkcms/tests/test_draftail_extensions.py,sha256=8WAf8LdvSxW7kgtJaXQ8V3rSRNkzRDc-JGnlKOWZr3k,2364
|
327
327
|
cjkcms/tests/test_finders_oembed.py,sha256=J-dG3aTsO2KXnUA0o4yKHh_r5Za9v_8gcXJQGwJrXpI,2489
|
328
328
|
cjkcms/tests/test_gravatar.py,sha256=UWu1cVi3Gj96yqeQu795gw6FVPbZ44eCkkH1NGEGgBo,2629
|
329
|
-
cjkcms/tests/test_search_blocks.py,sha256=
|
329
|
+
cjkcms/tests/test_search_blocks.py,sha256=K6acussD7to_qttTBl4z-rAF00UJYZpd8OoeBt-T1Kc,5882
|
330
330
|
cjkcms/tests/test_settings.py,sha256=n2B-qtaSdMJC4KuMGGx6qo5HIU73aaImbMkI_o7tK8A,2665
|
331
331
|
cjkcms/tests/test_templatetags.py,sha256=RHaIn93G8Aa2lG3JTHSPhFOTLBa4AWXJnwXa9Us5iqI,5966
|
332
332
|
cjkcms/tests/test_urls.py,sha256=otiKZcs1WLDQM6AOfcdZgsOGDwea1qS3VEc8Yy-FV-Q,2880
|
333
333
|
cjkcms/tests/test_webpage.py,sha256=PvXeXbawigObsdi_YpQNuHFx3Lqi6wM3ktVHZsxYbr4,1520
|
334
334
|
cjkcms/tests/urls.py,sha256=_ksKz7HBHJtQK3HxC9cmJMX_dt6n4alx3FXjcL-cu28,850
|
335
335
|
cjkcms/tests/media/images/test.original.png,sha256=nLMtadXZhXXbt6DTm5enrysKX7cfWiUudtbS2X7mSzI,1938
|
336
|
-
cjkcms/tests/media/images/
|
337
|
-
cjkcms/tests/media/images/
|
338
|
-
cjkcms/tests/media/images/
|
339
|
-
cjkcms/tests/media/images/
|
340
|
-
cjkcms/tests/media/images/
|
336
|
+
cjkcms/tests/media/images/test_IocDjKv.original.png,sha256=nLMtadXZhXXbt6DTm5enrysKX7cfWiUudtbS2X7mSzI,1938
|
337
|
+
cjkcms/tests/media/images/test_LH2dPwn.original.png,sha256=nLMtadXZhXXbt6DTm5enrysKX7cfWiUudtbS2X7mSzI,1938
|
338
|
+
cjkcms/tests/media/images/test_O3GLriA.original.png,sha256=nLMtadXZhXXbt6DTm5enrysKX7cfWiUudtbS2X7mSzI,1938
|
339
|
+
cjkcms/tests/media/images/test_WUJDfCh.original.png,sha256=nLMtadXZhXXbt6DTm5enrysKX7cfWiUudtbS2X7mSzI,1938
|
340
|
+
cjkcms/tests/media/images/test_ZfGlHpM.original.png,sha256=nLMtadXZhXXbt6DTm5enrysKX7cfWiUudtbS2X7mSzI,1938
|
341
|
+
cjkcms/tests/media/images/test_e3WjdNA.original.png,sha256=nLMtadXZhXXbt6DTm5enrysKX7cfWiUudtbS2X7mSzI,1938
|
342
|
+
cjkcms/tests/media/images/test_qOYmckb.original.png,sha256=nLMtadXZhXXbt6DTm5enrysKX7cfWiUudtbS2X7mSzI,1938
|
341
343
|
cjkcms/tests/media/original_images/test.png,sha256=xJDvcufuQ-AM1HT-zgMxYEORko4rdK_8MSHU-puJNW8,2306
|
342
|
-
cjkcms/tests/media/original_images/
|
343
|
-
cjkcms/tests/media/original_images/
|
344
|
-
cjkcms/tests/media/original_images/
|
345
|
-
cjkcms/tests/media/original_images/
|
346
|
-
cjkcms/tests/media/original_images/
|
344
|
+
cjkcms/tests/media/original_images/test_IocDjKv.png,sha256=xJDvcufuQ-AM1HT-zgMxYEORko4rdK_8MSHU-puJNW8,2306
|
345
|
+
cjkcms/tests/media/original_images/test_LH2dPwn.png,sha256=xJDvcufuQ-AM1HT-zgMxYEORko4rdK_8MSHU-puJNW8,2306
|
346
|
+
cjkcms/tests/media/original_images/test_O3GLriA.png,sha256=xJDvcufuQ-AM1HT-zgMxYEORko4rdK_8MSHU-puJNW8,2306
|
347
|
+
cjkcms/tests/media/original_images/test_WUJDfCh.png,sha256=xJDvcufuQ-AM1HT-zgMxYEORko4rdK_8MSHU-puJNW8,2306
|
348
|
+
cjkcms/tests/media/original_images/test_ZfGlHpM.png,sha256=xJDvcufuQ-AM1HT-zgMxYEORko4rdK_8MSHU-puJNW8,2306
|
349
|
+
cjkcms/tests/media/original_images/test_e3WjdNA.png,sha256=xJDvcufuQ-AM1HT-zgMxYEORko4rdK_8MSHU-puJNW8,2306
|
350
|
+
cjkcms/tests/media/original_images/test_qOYmckb.png,sha256=xJDvcufuQ-AM1HT-zgMxYEORko4rdK_8MSHU-puJNW8,2306
|
347
351
|
cjkcms/tests/testapp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
348
352
|
cjkcms/tests/testapp/apps.py,sha256=EwyrkWTu-_OoLoERBTlqkqfPIIrEsbHY3kbCxgrv_7I,169
|
349
|
-
cjkcms/tests/testapp/models.py,sha256=
|
353
|
+
cjkcms/tests/testapp/models.py,sha256=N11rFqkMqQNVagoLjmIX8BVsgfW7wFqYKiDB9gE0PTo,575
|
350
354
|
cjkcms/tests/testapp/migrations/0001_initial.py,sha256=hxr-r-42IQEGr_OsZkxXXCW7wbxAHuI_OLOkn-seJUU,4942
|
351
355
|
cjkcms/tests/testapp/migrations/0002_create_homepage.py,sha256=EfsxHh1oyqwahW9RVpTvaRDx_CHtFSJQahKEr7XC5Gg,1999
|
352
356
|
cjkcms/tests/testapp/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
353
|
-
wagtail_cjkcms-25.1.
|
354
|
-
wagtail_cjkcms-25.1.
|
355
|
-
wagtail_cjkcms-25.1.
|
356
|
-
wagtail_cjkcms-25.1.
|
357
|
-
wagtail_cjkcms-25.1.
|
358
|
-
wagtail_cjkcms-25.1.
|
357
|
+
wagtail_cjkcms-25.2.1.dist-info/LICENSE,sha256=KHsCh1fKOZzvcKe1a9h3FlDjTjK_UurO3wHK55TnHHo,1538
|
358
|
+
wagtail_cjkcms-25.2.1.dist-info/METADATA,sha256=sllW_2ZjE935r1eSwZWY_MjCnl5vV0Pi5KO7I0LNr-s,3120
|
359
|
+
wagtail_cjkcms-25.2.1.dist-info/WHEEL,sha256=9Hm2OB-j1QcCUq9Jguht7ayGIIZBRTdOXD1qg9cCgPM,109
|
360
|
+
wagtail_cjkcms-25.2.1.dist-info/entry_points.txt,sha256=FzoiFENdZ1uebNztyz6GlswkumQspd5VjWbR9MUIH_8,50
|
361
|
+
wagtail_cjkcms-25.2.1.dist-info/top_level.txt,sha256=8wJGOGo1pG5nO5akfcMzA7i3ndj5868I8w35vTT0JJM,7
|
362
|
+
wagtail_cjkcms-25.2.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|