wagtail-cjkcms 25.1.9__py2.py3-none-any.whl → 25.2.1__py2.py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- 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
|