Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
slapos.core
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Léo-Paul Géneau
slapos.core
Commits
9f8753a1
Commit
9f8753a1
authored
Aug 23, 2022
by
Rafael Monnerat
Browse files
Options
Browse Files
Download
Plain Diff
Upgrade decision ui tests
See merge request
nexedi/slapos.core!411
parents
7b4b6708
93f2fcb9
Changes
16
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
1552 additions
and
6 deletions
+1552
-6
master/bt5/slapos_jio/PathTemplateItem/web_page_module/rjs_gadget_erp5_page_slap_upgrade_decision_view_js.js
...ule/rjs_gadget_erp5_page_slap_upgrade_decision_view_js.js
+2
-2
master/bt5/slapos_jio/PathTemplateItem/web_page_module/rjs_gadget_erp5_page_slap_upgrade_decision_view_js.xml
...le/rjs_gadget_erp5_page_slap_upgrade_decision_view_js.xml
+2
-2
master/bt5/slapos_jio_ui_test/ExtensionTemplateItem/portal_components/extension.erp5.SlapOSUiTest.py
...lateItem/portal_components/extension.erp5.SlapOSUiTest.py
+16
-2
master/bt5/slapos_jio_ui_test/PathTemplateItem/portal_tests/slaposjs_zuite/testSlapOSJSServerUpgradeDecision.xml
...ests/slaposjs_zuite/testSlapOSJSServerUpgradeDecision.xml
+58
-0
master/bt5/slapos_jio_ui_test/PathTemplateItem/portal_tests/slaposjs_zuite/testSlapOSJSServerUpgradeDecision.zpt
...ests/slaposjs_zuite/testSlapOSJSServerUpgradeDecision.zpt
+635
-0
master/bt5/slapos_jio_ui_test/PathTemplateItem/portal_tests/slaposjs_zuite/testSlapOSJSServiceUpgradeDecision.xml
...sts/slaposjs_zuite/testSlapOSJSServiceUpgradeDecision.xml
+58
-0
master/bt5/slapos_jio_ui_test/PathTemplateItem/portal_tests/slaposjs_zuite/testSlapOSJSServiceUpgradeDecision.zpt
...sts/slaposjs_zuite/testSlapOSJSServiceUpgradeDecision.zpt
+466
-0
master/bt5/slapos_jio_ui_test/SkinTemplateItem/portal_skins/slapos_ui_test/ERP5Site_createFakeUpgradeDecision.xml
...ins/slapos_ui_test/ERP5Site_createFakeUpgradeDecision.xml
+28
-0
master/bt5/slapos_jio_ui_test/SkinTemplateItem/portal_skins/slapos_ui_test/ERP5Site_createUpgradeDecisionForComputeNode.py
...s_ui_test/ERP5Site_createUpgradeDecisionForComputeNode.py
+31
-0
master/bt5/slapos_jio_ui_test/SkinTemplateItem/portal_skins/slapos_ui_test/ERP5Site_createUpgradeDecisionForComputeNode.xml
..._ui_test/ERP5Site_createUpgradeDecisionForComputeNode.xml
+70
-0
master/bt5/slapos_jio_ui_test/SkinTemplateItem/portal_skins/slapos_ui_test/ERP5Site_createUpgradeDecisionForInstanceTree.py
..._ui_test/ERP5Site_createUpgradeDecisionForInstanceTree.py
+31
-0
master/bt5/slapos_jio_ui_test/SkinTemplateItem/portal_skins/slapos_ui_test/ERP5Site_createUpgradeDecisionForInstanceTree.xml
...ui_test/ERP5Site_createUpgradeDecisionForInstanceTree.xml
+70
-0
master/bt5/slapos_jio_ui_test/SkinTemplateItem/portal_skins/slapos_ui_test/ERP5Site_initSlapOSUITest.py
.../portal_skins/slapos_ui_test/ERP5Site_initSlapOSUITest.py
+14
-0
master/bt5/slapos_jio_ui_test/SkinTemplateItem/portal_skins/slapos_ui_test/ERP5_invokeUpgradeDecisionAlarm.py
...l_skins/slapos_ui_test/ERP5_invokeUpgradeDecisionAlarm.py
+6
-0
master/bt5/slapos_jio_ui_test/SkinTemplateItem/portal_skins/slapos_ui_test/ERP5_invokeUpgradeDecisionAlarm.xml
..._skins/slapos_ui_test/ERP5_invokeUpgradeDecisionAlarm.xml
+62
-0
master/bt5/slapos_l10n_zh/MessageTranslationTemplateItem/zh/erp5_ui/translation.po
.../MessageTranslationTemplateItem/zh/erp5_ui/translation.po
+3
-0
No files found.
master/bt5/slapos_jio/PathTemplateItem/web_page_module/rjs_gadget_erp5_page_slap_upgrade_decision_view_js.js
View file @
9f8753a1
...
@@ -101,7 +101,7 @@
...
@@ -101,7 +101,7 @@
"
Ticket Type
"
,
"
Ticket Type
"
,
"
Related Compute Node or Service
"
,
"
Related Compute Node or Service
"
,
"
State
"
,
"
State
"
,
"
Upgrade Decision
:
"
,
"
Upgrade Decision:
"
,
"
The Status
"
,
"
The Status
"
,
"
Status
"
,
"
Status
"
,
"
Data Updated
"
,
"
Data Updated
"
,
...
@@ -245,7 +245,7 @@
...
@@ -245,7 +245,7 @@
})
})
.
push
(
function
(
url_list
)
{
.
push
(
function
(
url_list
)
{
var
header_dict
=
{
var
header_dict
=
{
page_title
:
gadget
.
page_title_translation
+
gadget
.
state
.
doc
.
title
,
page_title
:
gadget
.
page_title_translation
+
"
"
+
gadget
.
state
.
doc
.
title
,
selection_url
:
url_list
[
3
]
selection_url
:
url_list
[
3
]
};
};
if
(
gadget
.
state
.
doc
.
simulation_state_title
===
"
Open
"
)
{
if
(
gadget
.
state
.
doc
.
simulation_state_title
===
"
Open
"
)
{
...
...
master/bt5/slapos_jio/PathTemplateItem/web_page_module/rjs_gadget_erp5_page_slap_upgrade_decision_view_js.xml
View file @
9f8753a1
...
@@ -236,7 +236,7 @@
...
@@ -236,7 +236,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
986.45437.22132.617
64
</string>
</value>
<value>
<string>
1002.24419.16361.610
64
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -254,7 +254,7 @@
...
@@ -254,7 +254,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
16
02254232.58
</float>
<float>
16
60923207.94
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
master/bt5/slapos_jio_ui_test/ExtensionTemplateItem/portal_components/extension.erp5.SlapOSUiTest.py
View file @
9f8753a1
...
@@ -160,5 +160,19 @@ def ERP5Site_createFakeRegularisationRequest(self):
...
@@ -160,5 +160,19 @@ def ERP5Site_createFakeRegularisationRequest(self):
finally
:
finally
:
setSecurityManager
(
sm
)
setSecurityManager
(
sm
)
def
ERP5Site_createFakeUpgradeDecision
(
self
,
new_software_release
,
compute_node
):
portal
=
self
.
getPortalObject
()
sm
=
getSecurityManager
()
try
:
newSecurityManager
(
None
,
portal
.
acl_users
.
getUser
(
SUPER_USER
))
# Direct creation
upgrade_decision
=
new_software_release
.
SoftwareRelease_createUpgradeDecision
(
source_url
=
compute_node
.
getRelativeUrl
(),
title
=
'A new version of %s is available for %s'
%
\
(
new_software_release
.
getAggregateTitle
(),
compute_node
.
getTitle
()))
upgrade_decision
.
approveRegistration
(
upgrade_scope
=
"ask_confirmation"
)
upgrade_decision
.
UpgradeDecision_notify
()
return
'Done.'
finally
:
setSecurityManager
(
sm
)
master/bt5/slapos_jio_ui_test/PathTemplateItem/portal_tests/slaposjs_zuite/testSlapOSJSServerUpgradeDecision.xml
0 → 100644
View file @
9f8753a1
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ZopePageTemplate"
module=
"Products.PageTemplates.ZopePageTemplate"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
name_subpath
</string>
</key>
<value>
<string>
traverse_subpath
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
content_type
</string>
</key>
<value>
<string>
text/html
</string>
</value>
</item>
<item>
<key>
<string>
expand
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
testSlapOSJSServerUpgradeDecision
</string>
</value>
</item>
<item>
<key>
<string>
output_encoding
</string>
</key>
<value>
<string>
utf-8
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<unicode></unicode>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
master/bt5/slapos_jio_ui_test/PathTemplateItem/portal_tests/slaposjs_zuite/testSlapOSJSServerUpgradeDecision.zpt
0 → 100644
View file @
9f8753a1
This diff is collapsed.
Click to expand it.
master/bt5/slapos_jio_ui_test/PathTemplateItem/portal_tests/slaposjs_zuite/testSlapOSJSServiceUpgradeDecision.xml
0 → 100644
View file @
9f8753a1
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ZopePageTemplate"
module=
"Products.PageTemplates.ZopePageTemplate"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
name_subpath
</string>
</key>
<value>
<string>
traverse_subpath
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
content_type
</string>
</key>
<value>
<string>
text/html
</string>
</value>
</item>
<item>
<key>
<string>
expand
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
testSlapOSJSServiceUpgradeDecision
</string>
</value>
</item>
<item>
<key>
<string>
output_encoding
</string>
</key>
<value>
<string>
utf-8
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<unicode></unicode>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
master/bt5/slapos_jio_ui_test/PathTemplateItem/portal_tests/slaposjs_zuite/testSlapOSJSServiceUpgradeDecision.zpt
0 → 100644
View file @
9f8753a1
This diff is collapsed.
Click to expand it.
master/bt5/slapos_jio_ui_test/SkinTemplateItem/portal_skins/slapos_ui_test/ERP5Site_createFakeUpgradeDecision.xml
0 → 100644
View file @
9f8753a1
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ExternalMethod"
module=
"Products.ExternalMethod.ExternalMethod"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_function
</string>
</key>
<value>
<string>
ERP5Site_createFakeUpgradeDecision
</string>
</value>
</item>
<item>
<key>
<string>
_module
</string>
</key>
<value>
<string>
SlapOSUiTest
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
ERP5Site_createFakeUpgradeDecision
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
master/bt5/slapos_jio_ui_test/SkinTemplateItem/portal_skins/slapos_ui_test/ERP5Site_createUpgradeDecisionForComputeNode.py
0 → 100644
View file @
9f8753a1
portal
=
context
.
getPortalObject
()
person
=
portal
.
portal_membership
.
getAuthenticatedMember
().
getUserValue
()
# Find user Software installation
software_installation
=
portal
.
portal_catalog
.
getResultValue
(
portal_type
=
'Software Installation'
,
validation_state
=
'validated'
,
default_destination_section_uid
=
person
.
getUid
()
)
software_release
=
portal
.
portal_catalog
.
getResultValue
(
portal_type
=
'Software Release'
,
url_string
=
software_installation
.
getUrlString
(),
validation_state
=
[
'validated'
,
'published'
,
'published_alive'
]
)
new_software_release
=
portal
.
software_release_module
.
newContent
(
portal_type
=
'Software Release'
,
url_string
=
software_release
.
getUrlString
()
+
".newerversion"
,
reference
=
"test-1.99.9999"
,
version
=
"1.99.9999"
,
language
=
"en"
,
effective_date
=
DateTime
())
new_software_release
.
publishAlive
()
compute_node
=
software_installation
.
getAggregateValue
()
compute_node
.
setUpgradeScope
(
"ask_confirmation"
)
return
portal
.
ERP5Site_createFakeUpgradeDecision
(
new_software_release
,
compute_node
)
master/bt5/slapos_jio_ui_test/SkinTemplateItem/portal_skins/slapos_ui_test/ERP5Site_createUpgradeDecisionForComputeNode.xml
0 → 100644
View file @
9f8753a1
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"PythonScript"
module=
"Products.PythonScripts.PythonScript"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
Script_magic
</string>
</key>
<value>
<int>
3
</int>
</value>
</item>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
name_container
</string>
</key>
<value>
<string>
container
</string>
</value>
</item>
<item>
<key>
<string>
name_context
</string>
</key>
<value>
<string>
context
</string>
</value>
</item>
<item>
<key>
<string>
name_m_self
</string>
</key>
<value>
<string>
script
</string>
</value>
</item>
<item>
<key>
<string>
name_subpath
</string>
</key>
<value>
<string>
traverse_subpath
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
_proxy_roles
</string>
</key>
<value>
<tuple>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
ERP5Site_createUpgradeDecisionForComputeNode
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
master/bt5/slapos_jio_ui_test/SkinTemplateItem/portal_skins/slapos_ui_test/ERP5Site_createUpgradeDecisionForInstanceTree.py
0 → 100644
View file @
9f8753a1
portal
=
context
.
getPortalObject
()
person
=
portal
.
portal_membership
.
getAuthenticatedMember
().
getUserValue
()
# Find user Software installation
instance_tree
=
portal
.
portal_catalog
.
getResultValue
(
portal_type
=
'Instance Tree'
,
validation_state
=
'validated'
,
default_destination_section_uid
=
person
.
getUid
()
)
software_release
=
portal
.
portal_catalog
.
getResultValue
(
portal_type
=
'Software Release'
,
url_string
=
instance_tree
.
getUrlString
(),
validation_state
=
[
'validated'
,
'published'
,
'published_alive'
]
)
new_software_release
=
portal
.
software_release_module
.
newContent
(
portal_type
=
'Software Release'
,
url_string
=
software_release
.
getUrlString
()
+
".newerversion"
,
reference
=
"test-1.99.9999"
,
version
=
"1.99.9999"
,
language
=
"en"
,
destination_section
=
person
.
getRelativeUrl
(),
effective_date
=
DateTime
())
new_software_release
.
publishAlive
()
instance_tree
.
setUpgradeScope
(
"ask_confirmation"
)
return
portal
.
ERP5Site_createFakeUpgradeDecision
(
new_software_release
,
instance_tree
)
master/bt5/slapos_jio_ui_test/SkinTemplateItem/portal_skins/slapos_ui_test/ERP5Site_createUpgradeDecisionForInstanceTree.xml
0 → 100644
View file @
9f8753a1
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"PythonScript"
module=
"Products.PythonScripts.PythonScript"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
Script_magic
</string>
</key>
<value>
<int>
3
</int>
</value>
</item>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
name_container
</string>
</key>
<value>
<string>
container
</string>
</value>
</item>
<item>
<key>
<string>
name_context
</string>
</key>
<value>
<string>
context
</string>
</value>
</item>
<item>
<key>
<string>
name_m_self
</string>
</key>
<value>
<string>
script
</string>
</value>
</item>
<item>
<key>
<string>
name_subpath
</string>
</key>
<value>
<string>
traverse_subpath
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
_proxy_roles
</string>
</key>
<value>
<tuple>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
ERP5Site_createUpgradeDecisionForInstanceTree
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
master/bt5/slapos_jio_ui_test/SkinTemplateItem/portal_skins/slapos_ui_test/ERP5Site_initSlapOSUITest.py
View file @
9f8753a1
...
@@ -87,4 +87,18 @@ kw = {'portal_type': ('Authentication Event', 'Passoword Event')}
...
@@ -87,4 +87,18 @@ kw = {'portal_type': ('Authentication Event', 'Passoword Event')}
for
authentication_event
in
portal
.
portal_catalog
(
**
kw
):
for
authentication_event
in
portal
.
portal_catalog
(
**
kw
):
portal
.
system_event_module
.
manage_delObjects
(
ids
=
[
authentication_event
.
getId
()])
portal
.
system_event_module
.
manage_delObjects
(
ids
=
[
authentication_event
.
getId
()])
notification_message_to_enable
=
[
'slapos-upgrade-instance-tree.notification'
,
'slapos-upgrade-delivered-instance-tree.notification'
,
'slapos-upgrade-compute-node.notification'
,
'slapos-upgrade-delivered-compute-node.notification'
,
]
for
reference
in
notification_message_to_enable
:
search_kw
=
dict
(
portal_type
=
'Notification Message'
,
reference
=
reference
)
if
not
len
(
portal
.
portal_catalog
(
validation_state
=
'validated'
,
**
search_kw
)):
portal
.
portal_catalog
.
getResultValue
(
validation_state
=
'draft'
,
**
search_kw
).
validate
()
return
"Done."
return
"Done."
master/bt5/slapos_jio_ui_test/SkinTemplateItem/portal_skins/slapos_ui_test/ERP5_invokeUpgradeDecisionAlarm.py
0 → 100644
View file @
9f8753a1
portal
=
context
.
getPortalObject
()
portal
.
portal_alarms
.
slapos_pdm_upgrade_decision_process_started
.
activeSense
()
portal
.
portal_alarms
.
slapos_pdm_upgrade_decision_process_stopped
.
activeSense
()
return
"Done."
master/bt5/slapos_jio_ui_test/SkinTemplateItem/portal_skins/slapos_ui_test/ERP5_invokeUpgradeDecisionAlarm.xml
0 → 100644
View file @
9f8753a1
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"PythonScript"
module=
"Products.PythonScripts.PythonScript"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
Script_magic
</string>
</key>
<value>
<int>
3
</int>
</value>
</item>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
name_container
</string>
</key>
<value>
<string>
container
</string>
</value>
</item>
<item>
<key>
<string>
name_context
</string>
</key>
<value>
<string>
context
</string>
</value>
</item>
<item>
<key>
<string>
name_m_self
</string>
</key>
<value>
<string>
script
</string>
</value>
</item>
<item>
<key>
<string>
name_subpath
</string>
</key>
<value>
<string>
traverse_subpath
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
ERP5_invokeUpgradeDecisionAlarm
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
master/bt5/slapos_l10n_zh/MessageTranslationTemplateItem/zh/erp5_ui/translation.po
View file @
9f8753a1
...
@@ -62,3 +62,6 @@ msgstr "免费获取CDN"
...
@@ -62,3 +62,6 @@ msgstr "免费获取CDN"
msgid "Get Free Chinese CDN!"
msgid "Get Free Chinese CDN!"
msgstr "免费获取中国CDN"
msgstr "免费获取中国CDN"
msgid "Accept Upgrade Decision: ${title}"
msgstr "接受升级决定: ${title}"
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment