1
+ from unittest .mock import patch
2
+
1
3
from django .contrib .auth import get_user_model
2
4
from django .template import Template
3
5
from django .test .utils import override_settings
4
6
from django .urls import clear_url_caches
7
+ from django .utils .translation import trans_null
5
8
6
9
from cms .api import create_page
7
- from cms .models import CMSPlugin , Page
10
+ from cms .constants import TEMPLATE_INHERITANCE_MAGIC
11
+ from cms .models import CMSPlugin , Page , PageContent
8
12
from cms .test_utils .testcases import CMSTestCase
9
13
10
14
overrides = dict (
11
- LANGUAGE_CODE = ' en-us' ,
15
+ LANGUAGE_CODE = " en-us" ,
12
16
LANGUAGES = [],
13
17
CMS_LANGUAGES = {},
14
18
USE_I18N = False ,
15
- ROOT_URLCONF = ' cms.test_utils.project.urls_no18n' ,
19
+ ROOT_URLCONF = " cms.test_utils.project.urls_no18n" ,
16
20
TEMPLATE_CONTEXT_PROCESSORS = [
17
- ' django.contrib.auth.context_processors.auth' ,
18
- ' django.contrib.messages.context_processors.messages' ,
19
- ' django.core.context_processors.debug' ,
20
- ' django.core.context_processors.request' ,
21
- ' django.core.context_processors.media' ,
22
- ' django.core.context_processors.csrf' ,
23
- ' cms.context_processors.cms_settings' ,
24
- ' sekizai.context_processors.sekizai' ,
25
- ' django.core.context_processors.static' ,
21
+ " django.contrib.auth.context_processors.auth" ,
22
+ " django.contrib.messages.context_processors.messages" ,
23
+ " django.core.context_processors.debug" ,
24
+ " django.core.context_processors.request" ,
25
+ " django.core.context_processors.media" ,
26
+ " django.core.context_processors.csrf" ,
27
+ " cms.context_processors.cms_settings" ,
28
+ " sekizai.context_processors.sekizai" ,
29
+ " django.core.context_processors.static" ,
26
30
],
27
31
MIDDLEWARE = [
28
- ' django.contrib.sessions.middleware.SessionMiddleware' ,
29
- ' django.contrib.auth.middleware.AuthenticationMiddleware' ,
30
- ' django.contrib.messages.middleware.MessageMiddleware' ,
31
- ' django.middleware.csrf.CsrfViewMiddleware' ,
32
- ' django.middleware.common.CommonMiddleware' ,
33
- ' django.middleware.cache.FetchFromCacheMiddleware' ,
34
- ' cms.middleware.user.CurrentUserMiddleware' ,
35
- ' cms.middleware.page.CurrentPageMiddleware' ,
36
- ' cms.middleware.toolbar.ToolbarMiddleware' ,
37
- ]
32
+ " django.contrib.sessions.middleware.SessionMiddleware" ,
33
+ " django.contrib.auth.middleware.AuthenticationMiddleware" ,
34
+ " django.contrib.messages.middleware.MessageMiddleware" ,
35
+ " django.middleware.csrf.CsrfViewMiddleware" ,
36
+ " django.middleware.common.CommonMiddleware" ,
37
+ " django.middleware.cache.FetchFromCacheMiddleware" ,
38
+ " cms.middleware.user.CurrentUserMiddleware" ,
39
+ " cms.middleware.page.CurrentPageMiddleware" ,
40
+ " cms.middleware.toolbar.ToolbarMiddleware" ,
41
+ ],
38
42
)
39
43
40
44
41
45
@override_settings (** overrides )
42
46
class TestNoI18N (CMSTestCase ):
43
-
44
47
def setUp (self ):
45
48
clear_url_caches ()
46
49
super ().setUp ()
@@ -53,27 +56,27 @@ def test_language_chooser(self):
53
56
# test simple language chooser with default args
54
57
create_page ("home" , template = "col_two.html" , language = "en-us" )
55
58
context = self .get_context (path = "/" )
56
- del context [' request' ].LANGUAGE_CODE
59
+ del context [" request" ].LANGUAGE_CODE
57
60
tpl = Template ("{% load menu_tags %}{% language_chooser %}" )
58
61
tpl .render (context )
59
- self .assertEqual (len (context [' languages' ]), 1 )
62
+ self .assertEqual (len (context [" languages" ]), 1 )
60
63
# try a different template and some different args
61
64
tpl = Template ("{% load menu_tags %}{% language_chooser 'menu/test_language_chooser.html' %}" )
62
65
tpl .render (context )
63
- self .assertEqual (context [' template' ], ' menu/test_language_chooser.html' )
66
+ self .assertEqual (context [" template" ], " menu/test_language_chooser.html" )
64
67
tpl = Template ("{% load menu_tags %}{% language_chooser 'short' 'menu/test_language_chooser.html' %}" )
65
68
tpl .render (context )
66
- self .assertEqual (context [' template' ], ' menu/test_language_chooser.html' )
67
- for lang in context [' languages' ]:
69
+ self .assertEqual (context [" template" ], " menu/test_language_chooser.html" )
70
+ for lang in context [" languages" ]:
68
71
self .assertEqual (* lang )
69
72
70
73
def test_page_language_url (self ):
71
- with self .settings (ROOT_URLCONF = ' cms.test_utils.project.urls_no18n' ):
74
+ with self .settings (ROOT_URLCONF = " cms.test_utils.project.urls_no18n" ):
72
75
create_page ("home" , template = "col_two.html" , language = "en-us" )
73
76
path = "/"
74
77
context = self .get_context (path = path )
75
- del context [' request' ].LANGUAGE_CODE
76
- context [' request' ].urlconf = "cms.test_utils.project.urls_no18n"
78
+ del context [" request" ].LANGUAGE_CODE
79
+ context [" request" ].urlconf = "cms.test_utils.project.urls_no18n"
77
80
tpl = Template ("{%% load menu_tags %%}{%% page_language_url '%s' %%}" % "en-us" )
78
81
url = tpl .render (context )
79
82
self .assertEqual (url , "%s" % path )
@@ -82,51 +85,53 @@ def test_url_redirect(self):
82
85
overrides = dict (
83
86
USE_I18N = True ,
84
87
CMS_LANGUAGES = {1 : []},
85
- LANGUAGES = [(' en-us' , ' English' )],
88
+ LANGUAGES = [(" en-us" , " English" )],
86
89
MIDDLEWARE = [
87
- ' django.contrib.sessions.middleware.SessionMiddleware' ,
88
- ' django.contrib.auth.middleware.AuthenticationMiddleware' ,
89
- ' django.contrib.messages.middleware.MessageMiddleware' ,
90
- ' django.middleware.csrf.CsrfViewMiddleware' ,
91
- ' django.middleware.locale.LocaleMiddleware' ,
92
- ' django.middleware.common.CommonMiddleware' ,
93
- ' django.middleware.cache.FetchFromCacheMiddleware' ,
94
- ' cms.middleware.user.CurrentUserMiddleware' ,
95
- ' cms.middleware.page.CurrentPageMiddleware' ,
96
- ' cms.middleware.toolbar.ToolbarMiddleware' ,
97
- ]
90
+ " django.contrib.sessions.middleware.SessionMiddleware" ,
91
+ " django.contrib.auth.middleware.AuthenticationMiddleware" ,
92
+ " django.contrib.messages.middleware.MessageMiddleware" ,
93
+ " django.middleware.csrf.CsrfViewMiddleware" ,
94
+ " django.middleware.locale.LocaleMiddleware" ,
95
+ " django.middleware.common.CommonMiddleware" ,
96
+ " django.middleware.cache.FetchFromCacheMiddleware" ,
97
+ " cms.middleware.user.CurrentUserMiddleware" ,
98
+ " cms.middleware.page.CurrentPageMiddleware" ,
99
+ " cms.middleware.toolbar.ToolbarMiddleware" ,
100
+ ],
98
101
)
99
102
with self .settings (** overrides ):
100
103
homepage = create_page (
101
104
"home" ,
102
105
template = "col_two.html" ,
103
106
language = "en-us" ,
104
- redirect = ' /foobar/' ,
107
+ redirect = " /foobar/" ,
105
108
)
106
109
homepage .set_as_homepage ()
107
- response = self .client .get ('/' , follow = False )
110
+ response = self .client .get ("/" , follow = False )
108
111
self .assertTrue (response .status_code , 302 ) # Needs to redirect
109
- self .assertTrue (response [' Location' ].endswith ("/foobar/" )) # to /foobar/
112
+ self .assertTrue (response [" Location" ].endswith ("/foobar/" )) # to /foobar/
110
113
111
114
def test_plugin_add_edit (self ):
112
115
page_data = {
113
- ' title' : ' test page 1' ,
114
- ' slug' : ' test-page1' ,
115
- ' language' : "en-us" ,
116
- ' parent' : '' ,
116
+ " title" : " test page 1" ,
117
+ " slug" : " test-page1" ,
118
+ " language" : "en-us" ,
119
+ " parent" : "" ,
117
120
}
118
121
# required only if user haves can_change_permission
119
122
self .super_user = self ._create_user ("test" , True , True )
120
- self .client .login (username = getattr (self .super_user , get_user_model ().USERNAME_FIELD ),
121
- password = getattr (self .super_user , get_user_model ().USERNAME_FIELD ))
123
+ self .client .login (
124
+ username = getattr (self .super_user , get_user_model ().USERNAME_FIELD ),
125
+ password = getattr (self .super_user , get_user_model ().USERNAME_FIELD ),
126
+ )
122
127
123
- self .client .post (self .get_page_add_uri ('en' ), page_data )
128
+ self .client .post (self .get_page_add_uri ("en" ), page_data )
124
129
page = Page .objects .first ()
125
- self .client .post (self .get_page_change_template_uri (' en-us' , page )[3 :], page_data )
130
+ self .client .post (self .get_page_change_template_uri (" en-us" , page )[3 :], page_data )
126
131
page = Page .objects .first ()
127
- placeholder = page .get_placeholders ("en-us" ).latest ('id' )
128
- data = {' name' : ' Hello' , ' external_link' : ' http://www.example.org/' }
129
- add_url = self .get_add_plugin_uri (placeholder , ' LinkPlugin' , ' en-us' )
132
+ placeholder = page .get_placeholders ("en-us" ).latest ("id" )
133
+ data = {" name" : " Hello" , " external_link" : " http://www.example.org/" }
134
+ add_url = self .get_add_plugin_uri (placeholder , " LinkPlugin" , " en-us" )
130
135
131
136
response = self .client .post (add_url , data )
132
137
self .assertEqual (response .status_code , 200 )
@@ -135,9 +140,17 @@ def test_plugin_add_edit(self):
135
140
edit_url = self .get_change_plugin_uri (created_plugin )
136
141
response = self .client .get (edit_url )
137
142
self .assertEqual (response .status_code , 200 )
138
- data [' name' ] = ' Hello World'
143
+ data [" name" ] = " Hello World"
139
144
response = self .client .post (edit_url , data )
140
145
self .assertEqual (response .status_code , 200 )
141
- Link = self .get_plugin_model (' LinkPlugin' )
146
+ Link = self .get_plugin_model (" LinkPlugin" )
142
147
link = Link .objects .get (pk = created_plugin .pk )
143
148
self .assertEqual ("Hello World" , link .name )
149
+
150
+ @patch ("django.utils.translation._trans" , new = trans_null )
151
+ def test_inherit_label (self ):
152
+ page = create_page ("test" , "nav_playground.html" , "en-us" , published = True )
153
+ with self .login_user_context (self .get_superuser ()):
154
+ endpoint = self .get_admin_url (PageContent , "change" , page .get_content_obj ("en-us" ).pk )
155
+ response = self .client .get (endpoint )
156
+ self .assertContains (response , '<option value="%s">' % TEMPLATE_INHERITANCE_MAGIC )
0 commit comments