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
afc7917a
Commit
afc7917a
authored
Sep 13, 2012
by
Cédric de Saint Martin
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into slapgrid_test
parents
3a8c83ff
fa395f84
Changes
26
Show whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
1444 additions
and
302 deletions
+1444
-302
master/bt5/vifib_base/SkinTemplateItem/portal_skins/vifib_base/OpenSaleOrder_findPartition.xml
...m/portal_skins/vifib_base/OpenSaleOrder_findPartition.xml
+4
-1
master/bt5/vifib_base/SkinTemplateItem/portal_skins/vifib_base/SoftwareRelease_viewUsableComputerList/listbox.xml
...b_base/SoftwareRelease_viewUsableComputerList/listbox.xml
+4
-0
master/bt5/vifib_base/bt/revision
master/bt5/vifib_base/bt/revision
+1
-1
master/bt5/vifib_data_web/PathTemplateItem/web_site_module/hosting/myspace/monitoring.xml
...mplateItem/web_site_module/hosting/myspace/monitoring.xml
+149
-0
master/bt5/vifib_data_web/PathTemplateItem/web_site_module/hosting/myspace/my_account.xml
...mplateItem/web_site_module/hosting/myspace/my_account.xml
+1
-3
master/bt5/vifib_data_web/PathTemplateItem/web_site_module/hosting/myspace/my_invoices.xml
...plateItem/web_site_module/hosting/myspace/my_invoices.xml
+4
-0
master/bt5/vifib_data_web/PathTemplateItem/web_site_module/hosting/myspace/my_servers.xml
...mplateItem/web_site_module/hosting/myspace/my_servers.xml
+4
-0
master/bt5/vifib_data_web/PathTemplateItem/web_site_module/hosting/myspace/my_services.xml
...plateItem/web_site_module/hosting/myspace/my_services.xml
+1
-3
master/bt5/vifib_data_web/PathTemplateItem/web_site_module/hosting/myspace/software.xml
...TemplateItem/web_site_module/hosting/myspace/software.xml
+1
-3
master/bt5/vifib_data_web/PathTemplateItem/web_site_module/hosting/service-shortcut/erp5.xml
...ateItem/web_site_module/hosting/service-shortcut/erp5.xml
+141
-0
master/bt5/vifib_data_web/bt/revision
master/bt5/vifib_data_web/bt/revision
+1
-1
master/bt5/vifib_slapos_rest_api_v1/DocumentTemplateItem/portal_components/VifibRestAPIV1.py
.../DocumentTemplateItem/portal_components/VifibRestAPIV1.py
+64
-1
master/bt5/vifib_slapos_rest_api_v1/bt/revision
master/bt5/vifib_slapos_rest_api_v1/bt/revision
+1
-1
master/bt5/vifib_slapos_rest_api_v1_test/TestTemplateItem/testVifibSlaposRestAPIV1.py
..._api_v1_test/TestTemplateItem/testVifibSlaposRestAPIV1.py
+265
-0
master/bt5/vifib_slapos_rest_api_v1_test/bt/revision
master/bt5/vifib_slapos_rest_api_v1_test/bt/revision
+1
-1
master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting/Base_getVifibOverview.xml
...Item/portal_skins/vifib_hosting/Base_getVifibOverview.xml
+8
-7
master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting/WebSection_orderVifibERP5.xml
.../portal_skins/vifib_hosting/WebSection_orderVifibERP5.xml
+99
-0
master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting/WebSection_viewMonitoring.xml
.../portal_skins/vifib_hosting/WebSection_viewMonitoring.xml
+2
-1
master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting/WebSection_viewMonitoring/my_section_title.xml
...ib_hosting/WebSection_viewMonitoring/my_section_title.xml
+90
-0
master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting/WebSection_viewMonitoring/my_translated_description.xml
...g/WebSection_viewMonitoring/my_translated_description.xml
+90
-0
master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting/WebSection_viewMonitoring/your_title.xml
...ns/vifib_hosting/WebSection_viewMonitoring/your_title.xml
+0
-275
master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting_theme/vifib_hosting_image/monitoring.png.xml
...ifib_hosting_theme/vifib_hosting_image/monitoring.png.xml
+192
-0
master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting_theme/vifib_hosting_image/monitoring_active.png.xml
...sting_theme/vifib_hosting_image/monitoring_active.png.xml
+313
-0
master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting_theme/vifib_hosting_style/hosting-design.css.xml
..._hosting_theme/vifib_hosting_style/hosting-design.css.xml
+4
-0
master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_jauks_theme/vifib_style/vifib.css.xml
.../portal_skins/vifib_jauks_theme/vifib_style/vifib.css.xml
+3
-3
master/bt5/vifib_web/bt/revision
master/bt5/vifib_web/bt/revision
+1
-1
No files found.
master/bt5/vifib_base/SkinTemplateItem/portal_skins/vifib_base/OpenSaleOrder_findPartition.xml
View file @
afc7917a
...
...
@@ -116,6 +116,9 @@ if filter_kw.keys():\n
# XXX Drop all unexpected keys\n
query_kw["uid"] = "-1"\n
\n
if test_mode:\n
return bool(len(context.portal_catalog(limit=1, **query_kw)))\n
\n
SQL_WINDOW_SIZE = 50\n
\n
# fetch at mot 50 random Computer Partitions, and check if they are ok\n
...
...
@@ -154,7 +157,7 @@ return computer_partition.getRelativeUrl()\n
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string>
software_release_url, software_type, software_instance_portal_type, filter_kw
</string>
</value>
<value>
<string>
software_release_url, software_type, software_instance_portal_type, filter_kw
, test_mode=False
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
...
...
master/bt5/vifib_base/SkinTemplateItem/portal_skins/vifib_base/SoftwareRelease_viewUsableComputerList/listbox.xml
View file @
afc7917a
...
...
@@ -104,6 +104,10 @@
<string>
free_partition
</string>
<string>
Free Partition Count
</string>
</tuple>
<tuple>
<string>
allocation_scope_translated_title
</string>
<string>
Allocation Scope
</string>
</tuple>
</list>
</value>
</item>
...
...
master/bt5/vifib_base/bt/revision
View file @
afc7917a
472
\ No newline at end of file
474
\ No newline at end of file
master/bt5/vifib_data_web/PathTemplateItem/web_site_module/hosting/myspace/monitoring.xml
0 → 100644
View file @
afc7917a
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Web Section"
module=
"erp5.portal_type"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_Add_portal_content_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Add_portal_folders_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Copy_or_Move_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Delete_objects_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Modify_portal_content_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignee
</string>
<string>
Assignor
</string>
<string>
Manager
</string>
<string>
Owner
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
__translation_dict
</string>
</key>
<value>
<dictionary/>
</value>
</item>
<item>
<key>
<string>
_identity_criterion
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
_range_criterion
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
authorization_forced
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
custom_render_method_id
</string>
</key>
<value>
<string>
WebSection_viewMonitoring
</string>
</value>
</item>
<item>
<key>
<string>
default_page_displayed
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string>
This page shows the status of your servers and instances
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
monitoring
</string>
</value>
</item>
<item>
<key>
<string>
int_index
</string>
</key>
<value>
<int>
6
</int>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Web Section
</string>
</value>
</item>
<item>
<key>
<string>
short_title
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Monitoring
</string>
</value>
</item>
<item>
<key>
<string>
visible
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
data
</string>
</key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
data
</string>
</key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
master/bt5/vifib_data_web/PathTemplateItem/web_site_module/hosting/myspace/my_account.xml
View file @
afc7917a
...
...
@@ -103,9 +103,7 @@
</item>
<item>
<key>
<string>
int_index
</string>
</key>
<value>
<none/>
</value>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
...
...
master/bt5/vifib_data_web/PathTemplateItem/web_site_module/hosting/myspace/my_invoices.xml
View file @
afc7917a
...
...
@@ -89,6 +89,10 @@
<key>
<string>
id
</string>
</key>
<value>
<string>
my_invoices
</string>
</value>
</item>
<item>
<key>
<string>
int_index
</string>
</key>
<value>
<int>
2
</int>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Web Section
</string>
</value>
...
...
master/bt5/vifib_data_web/PathTemplateItem/web_site_module/hosting/myspace/my_servers.xml
View file @
afc7917a
...
...
@@ -89,6 +89,10 @@
<key>
<string>
id
</string>
</key>
<value>
<string>
my_servers
</string>
</value>
</item>
<item>
<key>
<string>
int_index
</string>
</key>
<value>
<int>
4
</int>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Web Section
</string>
</value>
...
...
master/bt5/vifib_data_web/PathTemplateItem/web_site_module/hosting/myspace/my_services.xml
View file @
afc7917a
...
...
@@ -85,9 +85,7 @@
</item>
<item>
<key>
<string>
int_index
</string>
</key>
<value>
<none/>
</value>
<value>
<int>
3
</int>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
...
...
master/bt5/vifib_data_web/PathTemplateItem/web_site_module/hosting/myspace/software.xml
View file @
afc7917a
...
...
@@ -95,9 +95,7 @@
</item>
<item>
<key>
<string>
int_index
</string>
</key>
<value>
<none/>
</value>
<value>
<int>
5
</int>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
...
...
master/bt5/vifib_data_web/PathTemplateItem/web_site_module/hosting/service-shortcut/erp5.xml
0 → 100644
View file @
afc7917a
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Web Section"
module=
"erp5.portal_type"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_Add_portal_content_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Add_portal_folders_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Copy_or_Move_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Delete_objects_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Modify_portal_content_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignee
</string>
<string>
Assignor
</string>
<string>
Manager
</string>
<string>
Owner
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_identity_criterion
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
_range_criterion
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
authorization_forced
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
custom_render_method_id
</string>
</key>
<value>
<string>
WebSection_orderVifibERP5
</string>
</value>
</item>
<item>
<key>
<string>
default_page_displayed
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
erp5
</string>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Web Section
</string>
</value>
</item>
<item>
<key>
<string>
short_title
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
1
</string>
</value>
</item>
<item>
<key>
<string>
visible
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
data
</string>
</key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
data
</string>
</key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
master/bt5/vifib_data_web/bt/revision
View file @
afc7917a
104
\ No newline at end of file
106
\ No newline at end of file
master/bt5/vifib_slapos_rest_api_v1/DocumentTemplateItem/portal_components/VifibRestAPIV1.py
View file @
afc7917a
...
...
@@ -343,6 +343,66 @@ class InstancePublisher(GenericPublisher):
self
.
REQUEST
.
response
.
setBody
(
jsonify
({
'status'
:
'processing'
}))
return
self
.
REQUEST
.
response
@
requireHeader
({
'Content-Type'
:
'^application/json.*'
})
@
requireJson
(
dict
(
slave
=
bool
,
software_release
=
(
unicode
,
encode_utf8
),
title
=
(
unicode
,
encode_utf8
),
software_type
=
(
unicode
,
encode_utf8
),
parameter
=
(
dict
,
etreeXml
),
sla
=
(
dict
,
etreeXml
),
status
=
(
unicode
,
encode_utf8
),
))
def
__allocable
(
self
):
request_dict
=
{}
if
self
.
jbody
[
'status'
]
not
in
[
'started'
,
'stopped'
,
'destroyed'
]:
self
.
REQUEST
.
response
.
setStatus
(
400
)
self
.
REQUEST
.
response
.
setBody
(
jsonify
(
{
'status'
:
'Status shall be one of: started, stopped, destroyed.'
}))
return
self
.
REQUEST
.
response
try
:
user
=
self
.
restrictedTraverse
(
self
.
user_url
)
user_portal_type
=
user
.
getPortalType
()
if
user_portal_type
==
'Person'
:
pass
elif
user_portal_type
==
'Software Instance'
:
hosting_subscription
=
user
.
getSpecialiseValue
(
portal_type
=
"Hosting Subscription"
)
user
=
hosting_subscription
.
getDestinationSectionValue
(
portal_type
=
"Person"
)
else
:
raise
NotImplementedError
,
"Can not get Person document"
open_order
=
self
.
portal_catalog
.
getResultValue
(
portal_type
=
'Open Sale Order'
,
default_destination_decision_uid
=
user
.
getUid
(),
validation_state
=
'validated'
)
tmp_instance
=
self
.
software_instance_module
.
newContent
(
portal_type
=
"Software Instance"
,
sla_xml
=
self
.
jbody
[
'sla'
],
temp_object
=
1
,
)
result
=
open_order
.
OpenSaleOrder_findPartition
(
self
.
jbody
[
'software_release'
],
self
.
jbody
[
'software_type'
],
(
'Software Instance'
,
'Slave Instance'
)[
int
(
self
.
jbody
[
'slave'
])],
tmp_instance
.
getSlaXmlAsDict
(),
test_mode
=
True
)
except
Exception
:
transaction
.
abort
()
LOG
(
'VifibRestApiV1'
,
ERROR
,
'Problem with person.allocable:'
,
error
=
True
)
self
.
REQUEST
.
response
.
setStatus
(
500
)
self
.
REQUEST
.
response
.
setBody
(
jsonify
({
'error'
:
'There is system issue, please try again later.'
}))
return
self
.
REQUEST
.
response
self
.
REQUEST
.
response
.
setStatus
(
200
)
self
.
REQUEST
.
response
.
setHeader
(
'Cache-Control'
,
'no-cache, no-store'
)
self
.
REQUEST
.
response
.
setBody
(
jsonify
({
'result'
:
result
}))
return
self
.
REQUEST
.
response
@
extractDocument
([
'Software Instance'
,
'Slave Instance'
])
@
supportModifiedSince
(
'document_url'
)
def
__instance_info
(
self
):
...
...
@@ -424,6 +484,9 @@ class InstancePublisher(GenericPublisher):
self
.
__request
()
elif
self
.
REQUEST
[
'REQUEST_METHOD'
]
==
'GET'
:
if
self
.
REQUEST
[
'traverse_subpath'
]:
if
self
.
REQUEST
[
'traverse_subpath'
][
-
1
]
==
'request'
:
self
.
__allocable
()
else
:
self
.
__instance_info
()
else
:
self
.
__instance_list
()
...
...
master/bt5/vifib_slapos_rest_api_v1/bt/revision
View file @
afc7917a
17
\ No newline at end of file
19
\ No newline at end of file
master/bt5/vifib_slapos_rest_api_v1_test/TestTemplateItem/testVifibSlaposRestAPIV1.py
View file @
afc7917a
...
...
@@ -825,6 +825,271 @@ class TestInstanceGETcertificate(VifibSlaposRestAPIV1InstanceMixin):
self
.
assertBasicResponse
()
self
.
assertResponseCode
(
404
)
class
TestInstanceAllocableGET
(
VifibSlaposRestAPIV1InstanceMixin
):
def
test_not_logged_in
(
self
):
self
.
connection
.
request
(
method
=
'GET'
,
url
=
'/'
.
join
([
self
.
api_path
,
'instance'
,
'request'
]))
self
.
prepareResponse
()
self
.
assertBasicResponse
()
self
.
assertResponseCode
(
401
)
self
.
assertTrue
(
self
.
response
.
getheader
(
'Location'
)
is
not
None
)
auth
=
self
.
response
.
getheader
(
'WWW-Authenticate'
)
self
.
assertTrue
(
auth
is
not
None
)
self
.
assertTrue
(
'Bearer realm="'
in
auth
)
self
.
assertPersonRequestSimulatorEmpty
()
def
test_no_json
(
self
):
self
.
connection
.
request
(
method
=
'GET'
,
url
=
'/'
.
join
([
self
.
api_path
,
'instance'
,
'request'
]),
headers
=
{
'REMOTE_USER'
:
self
.
customer_reference
})
self
.
prepareResponse
()
self
.
assertBasicResponse
()
self
.
assertResponseCode
(
400
)
self
.
assertResponseJson
()
self
.
assertEqual
({
'error'
:
"Data is not json object."
},
self
.
json_response
)
self
.
assertPersonRequestSimulatorEmpty
()
def
test_bad_json
(
self
):
self
.
connection
.
request
(
method
=
'GET'
,
url
=
'/'
.
join
([
self
.
api_path
,
'instance'
,
'request'
]),
body
=
'This is not JSON'
,
headers
=
{
'REMOTE_USER'
:
self
.
customer_reference
})
self
.
prepareResponse
()
self
.
assertBasicResponse
()
self
.
assertResponseCode
(
400
)
self
.
assertResponseJson
()
self
.
assertEqual
({
'error'
:
"Data is not json object."
},
self
.
json_response
)
self
.
assertPersonRequestSimulatorEmpty
()
def
test_empty_json
(
self
):
self
.
connection
.
request
(
method
=
'GET'
,
url
=
'/'
.
join
([
self
.
api_path
,
'instance'
,
'request'
]),
body
=
'{}'
,
headers
=
{
'REMOTE_USER'
:
self
.
customer_reference
})
self
.
prepareResponse
()
self
.
assertBasicResponse
()
self
.
assertResponseCode
(
400
)
self
.
assertResponseJson
()
self
.
assertEqual
({
"status"
:
"Missing."
,
"slave"
:
"Missing."
,
"title"
:
"Missing."
,
"software_release"
:
"Missing."
,
"software_type"
:
"Missing."
,
"parameter"
:
"Missing."
,
"sla"
:
"Missing."
},
self
.
json_response
)
self
.
assertPersonRequestSimulatorEmpty
()
def
test_status_slave_missing_json
(
self
):
self
.
connection
.
request
(
method
=
'GET'
,
url
=
'/'
.
join
([
self
.
api_path
,
'instance'
,
'request'
]),
body
=
"""
{
"title": "My unique instance",
"software_release": "http://example.com/example.cfg",
"software_type": "type_provided_by_the_software",
"parameter": {
"Custom1": "one string",
"Custom2": "one float",
"Custom3": [
"abc",
"def"
]
},
"sla": {
"computer_id": "COMP-0"
}
}"""
,
headers
=
{
'REMOTE_USER'
:
self
.
customer_reference
})
self
.
prepareResponse
()
self
.
assertBasicResponse
()
self
.
assertResponseCode
(
400
)
self
.
assertResponseJson
()
self
.
assertEqual
({
"status"
:
"Missing."
,
"slave"
:
"Missing."
},
self
.
json_response
)
self
.
assertPersonRequestSimulatorEmpty
()
def
test_slave_not_bool
(
self
):
kwargs
=
{
'parameter'
:
{
'Custom1'
:
'one string'
,
'Custom2'
:
'one float'
,
'Custom3'
:
[
'abc'
,
'def'
]},
'title'
:
'My unique instance'
,
'software_release'
:
'http://example.com/example.cfg'
,
'status'
:
'started'
,
'sla'
:
{
'computer_id'
:
'COMP-0'
},
'software_type'
:
'type_provided_by_the_software'
,
'slave'
:
"True"
}
self
.
connection
.
request
(
method
=
'GET'
,
url
=
'/'
.
join
([
self
.
api_path
,
'instance'
,
'request'
]),
body
=
json
.
dumps
(
kwargs
),
headers
=
{
'REMOTE_USER'
:
self
.
customer_reference
})
self
.
prepareResponse
()
self
.
assertBasicResponse
()
self
.
assertResponseCode
(
400
)
self
.
assertResponseJson
()
self
.
assertEqual
({
"slave"
:
"unicode is not bool."
,
},
self
.
json_response
)
self
.
assertPersonRequestSimulatorEmpty
()
def
test_incorrect_status
(
self
):
kwargs
=
{
'parameter'
:
{
'Custom1'
:
'one string'
,
'Custom2'
:
'one float'
,
'Custom3'
:
[
'abc'
,
'def'
]},
'title'
:
'My unique instance'
,
'software_release'
:
'http://example.com/example.cfg'
,
'status'
:
'badstatus'
,
'sla'
:
{
'computer_id'
:
'COMP-0'
},
'software_type'
:
'type_provided_by_the_software'
,
'slave'
:
True
}
self
.
connection
.
request
(
method
=
'GET'
,
url
=
'/'
.
join
([
self
.
api_path
,
'instance'
,
'request'
]),
body
=
json
.
dumps
(
kwargs
),
headers
=
{
'REMOTE_USER'
:
self
.
customer_reference
})
self
.
prepareResponse
()
self
.
assertBasicResponse
()
self
.
assertResponseCode
(
400
)
self
.
assertResponseJson
()
self
.
assertEqual
({
"status"
:
"Status shall be one of: started, stopped, destroyed."
,
},
self
.
json_response
)
self
.
assertPersonRequestSimulatorEmpty
()
def
test_correct
(
self
):
kwargs
=
{
'parameter'
:
{
'Custom1'
:
'one string'
,
'Custom2'
:
'one float'
,
'Custom3'
:
[
'abc'
,
'def'
]},
'title'
:
'My unique instance'
,
'software_release'
:
'http://example.com/example.cfg'
,
'status'
:
'started'
,
'sla'
:
{
'computer_id'
:
'COMP-0'
},
'software_type'
:
'type_provided_by_the_software'
,
'slave'
:
True
}
self
.
connection
.
request
(
method
=
'GET'
,
url
=
'/'
.
join
([
self
.
api_path
,
'instance'
,
'request'
]),
body
=
json
.
dumps
(
kwargs
),
headers
=
{
'REMOTE_USER'
:
self
.
customer_reference
})
self
.
prepareResponse
()
self
.
assertBasicResponse
()
self
.
assertResponseCode
(
200
)
self
.
assertResponseJson
()
def
test_additional_key_json
(
self
):
kw_request
=
{
'parameter'
:
{
'Custom1'
:
'one string'
,
'Custom2'
:
'one float'
,
'Custom3'
:
[
'abc'
,
'def'
]},
'title'
:
'My unique instance'
,
'software_release'
:
'http://example.com/example.cfg'
,
'status'
:
'started'
,
'sla'
:
{
'computer_id'
:
'COMP-0'
},
'software_type'
:
'type_provided_by_the_software'
,
'slave'
:
True
}
kwargs
=
kw_request
.
copy
()
kwargs
.
update
(
**
{
'wrong_key'
:
'Be ignored'
})
self
.
connection
.
request
(
method
=
'GET'
,
url
=
'/'
.
join
([
self
.
api_path
,
'instance'
,
'request'
]),
body
=
json
.
dumps
(
kwargs
),
headers
=
{
'REMOTE_USER'
:
self
.
customer_reference
})
self
.
prepareResponse
()
self
.
assertBasicResponse
()
self
.
assertResponseCode
(
200
)
self
.
assertResponseJson
()
# def test_correct_server_side_raise(self):
# self.customer.requestSoftwareInstance = \
# RaisingSimulator(AttributeError)
# transaction.commit()
# kwargs = {
# 'parameter': {
# 'Custom1': 'one string',
# 'Custom2': 'one float',
# 'Custom3': ['abc', 'def']},
# 'title': 'My unique instance',
# 'software_release': 'http://example.com/example.cfg',
# 'status': 'started',
# 'sla': {
# 'computer_id': 'COMP-0'},
# 'software_type': 'type_provided_by_the_software',
# 'slave': True}
# self.connection.request(method='GET',
# url='/'.join([self.api_path, 'instance', 'request']),
# body=json.dumps(kwargs),
# headers={'REMOTE_USER': self.customer_reference})
# self.prepareResponse()
# self.assertBasicResponse()
# self.assertResponseCode(500)
# self.assertResponseJson()
# self.assertEqual({
# "error": "There is system issue, please try again later.",
# },
# self.json_response)
# self.assertPersonRequestSimulatorEmpty()
def
test_content_negotiation_headers
(
self
):
self
.
connection
=
CustomHeaderHTTPConnection
(
host
=
self
.
api_netloc
,
custom_header
=
{
'Access-Control-Request-Headers'
:
self
.
access_control_allow_headers
})
kwargs
=
{
'parameter'
:
{
'Custom1'
:
'one string'
,
'Custom2'
:
'one float'
,
'Custom3'
:
[
'abc'
,
'def'
]},
'title'
:
'My unique instance'
,
'software_release'
:
'http://example.com/example.cfg'
,
'status'
:
'started'
,
'sla'
:
{
'computer_id'
:
'COMP-0'
},
'software_type'
:
'type_provided_by_the_software'
,
'slave'
:
True
}
self
.
connection
.
request
(
method
=
'GET'
,
url
=
'/'
.
join
([
self
.
api_path
,
'instance'
,
'request'
]),
body
=
json
.
dumps
(
kwargs
),
headers
=
{
'REMOTE_USER'
:
self
.
customer_reference
})
self
.
prepareResponse
()
self
.
assertBasicResponse
()
self
.
assertResponseCode
(
400
)
self
.
assertResponseJson
()
self
.
assertEqual
({
'Content-Type'
:
"Header with value '^application/json.*' is required."
},
self
.
json_response
)
self
.
assertPersonRequestSimulatorEmpty
()
# now check with incorrect headers
self
.
connection
.
request
(
method
=
'GET'
,
url
=
'/'
.
join
([
self
.
api_path
,
'instance'
,
'request'
]),
body
=
json
.
dumps
(
kwargs
),
headers
=
{
'REMOTE_USER'
:
self
.
customer_reference
,
'Content-Type'
:
'please/complain'
,
'Accept'
:
'be/silent'
})
self
.
prepareResponse
()
self
.
assertBasicResponse
()
self
.
assertResponseCode
(
400
)
self
.
assertResponseJson
()
self
.
assertEqual
({
'Content-Type'
:
"Header with value '^application/json.*' is required."
},
self
.
json_response
)
self
.
assertPersonRequestSimulatorEmpty
()
# and with correct ones are set by default
def
VifibSlaposRestAPIV1BangMixin_afterSetUp
(
self
):
VifibSlaposRestAPIV1BangMixin_afterSetUp
(
self
)
self
.
instance_bang_simulator
=
tempfile
.
mkstemp
()[
1
]
...
...
master/bt5/vifib_slapos_rest_api_v1_test/bt/revision
View file @
afc7917a
79
\ No newline at end of file
80
\ No newline at end of file
master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting/Base_getVifibOverview.xml
View file @
afc7917a
...
...
@@ -120,14 +120,18 @@ encode : function (input) {\n
var created_at = new Date(Date.parse(data.created_at)),\n
now = new Date(),\n
context = $(this);\n
console.log(data[\'@document\']);
\n
if (/#ok/.test(data.text)
&
(now - created_at
< 300000
))
{\n
// 5 minute for computer. 1 day for instance.
\n
if (/#ok/.test(data.text)
&
/computer_module/.test(data[\'@document\'])
&
(now - created_at
< 300000
))
{\n
$(this).attr("class",
"monitoring_ok")\n
.attr("title",
data.text)\n
.attr("title",
data.text
+
"
("
+
created_at
+
")"
)\n
.html("<a
href=
\'"
+
data[\'@document\']
+
"\'
></a>
");\n
} else if (/#ok/.test(data.text)
&
/software_instance_module/.test(data[\'@document\'])
&
(now - created_at
< 86400000
))
{\n
$(this).attr("class",
"monitoring_ok")\n
.attr("title",
data.text
+
"
("
+
created_at
+
")"
)\n
.html("<a
href=
\'"
+
data[\'@document\']
+
"\'
></a>
");\n
} else {\n
$(this).attr("class", "monitoring_error")\n
.attr("title", data.text)\n
.attr("title", data.text
+ " (" + created_at + ")"
)\n
.html("
<a
href=
\'"
+
data[\'@document\']
+
"\'
></a>
");\n
}\n
setTimeout(function () {\n
...
...
@@ -181,9 +185,6 @@ encode : function (input) {\n
});\n
}\n
},\n
error: function(jqXHR, textStatus, errorThrown) {\n
console.log(jqXHR.status);\n
},\n
complete: function() {\n
var context = $(this);\n
setTimeout(function () {\n
...
...
master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting/WebSection_orderVifibERP5.xml
0 → 100644
View file @
afc7917a
<?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>
_body
</string>
</key>
<value>
<string
encoding=
"cdata"
>
<![CDATA[
portal = context.getPortalObject()\n
\n
instance_xml = """<?xml version="1.0" encoding="utf-8"?>
\n
<instance>
\n
<parameter
id=
"flavour"
>
configurator
</parameter>
\n
<parameter
id=
"frontend-software-url"
>
http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD:/software/apache-frontend/software.cfg
</parameter>
\n
<parameter
id=
"frontend-instance-guid"
>
SOFTINST-9238
</parameter>
\n
</instance>
\n
"""\n
url = "http://git.erp5.org/gitweb/slapos.git/blob_plain/refs/tags/slapos-0.117:/software/erp5/software.cfg"\n
software_type = "default"\n
\n
person = portal.ERP5Site_getAuthenticatedMemberPersonValue()\n
\n
request_kw = {}\n
request_kw.update(\n
software_release=url,\n
software_title="ERP5 Instance 00-%i" % portal.portal_ids.generateNewId(id_group=("vifib", "kvm"), default=1),\n
software_type=software_type,\n
instance_xml=instance_xml,\n
sla_xml="",\n
shared=False,\n
state="started",\n
)\n
\n
person.requestSoftwareInstance(**request_kw)\n
\n
message = context.Base_translateString("Your instance is under creation. Please wait few minutes for partitions to appear.")\n
return context.REQUEST.get(\'request_hosting_subscription\').Base_redirect(keep_items={\'portal_status_message\': message})\n
]]>
</string>
</value>
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
WebSection_orderVifibERP5
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting/WebSection_viewMonitoring.xml
View file @
afc7917a
...
...
@@ -95,7 +95,8 @@
<key>
<string>
normal
</string>
</key>
<value>
<list>
<string>
your_title
</string>
<string>
my_section_title
</string>
<string>
my_translated_description
</string>
<string>
your_ad
</string>
</list>
</value>
...
...
master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting/WebSection_viewMonitoring/my_section_title.xml
0 → 100644
View file @
afc7917a
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ProxyField"
module=
"Products.ERP5Form.ProxyField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
delegated_list
</string>
</key>
<value>
<list/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
my_section_title
</string>
</value>
</item>
<item>
<key>
<string>
message_values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
external_validator_failed
</string>
</key>
<value>
<string>
The input failed the external validator.
</string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string>
my_section_title
</string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string>
Base_viewWebFieldLibrary
</string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string>
Click to edit the target
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting/WebSection_viewMonitoring/my_translated_description.xml
0 → 100644
View file @
afc7917a
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ProxyField"
module=
"Products.ERP5Form.ProxyField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
delegated_list
</string>
</key>
<value>
<list/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
my_translated_description
</string>
</value>
</item>
<item>
<key>
<string>
message_values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
external_validator_failed
</string>
</key>
<value>
<string>
The input failed the external validator.
</string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string>
my_translated_description
</string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string>
Base_viewWebFieldLibrary
</string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string>
Click to edit the target
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting/WebSection_viewMonitoring/your_title.xml
deleted
100644 → 0
View file @
3a8c83ff
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"StringField"
module=
"Products.Formulator.StandardFields"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
your_title
</string>
</value>
</item>
<item>
<key>
<string>
message_values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
external_validator_failed
</string>
</key>
<value>
<string>
The input failed the external validator.
</string>
</value>
</item>
<item>
<key>
<string>
required_not_found
</string>
</key>
<value>
<string>
Input is required but no input given.
</string>
</value>
</item>
<item>
<key>
<string>
too_long
</string>
</key>
<value>
<string>
Too much input was given.
</string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_maxwidth
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_width
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_length
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
truncate
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
unicode
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_maxwidth
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_width
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_length
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
truncate
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
unicode
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string>
nolabel
</string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_maxwidth
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_width
</string>
</key>
<value>
<int>
20
</int>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
max_length
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Title
</string>
</value>
</item>
<item>
<key>
<string>
truncate
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
unicode
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"TALESMethod"
module=
"Products.Formulator.TALESField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_text
</string>
</key>
<value>
<string>
python: context.getTitle()
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting_theme/vifib_hosting_image/monitoring.png.xml
0 → 100644
View file @
afc7917a
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Image"
module=
"OFS.Image"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_Cacheable__manager_id
</string>
</key>
<value>
<string>
http_cache
</string>
</value>
</item>
<item>
<key>
<string>
_EtagSupport__etag
</string>
</key>
<value>
<string>
ts47439847.72
</string>
</value>
</item>
<item>
<key>
<string>
__name__
</string>
</key>
<value>
<string>
monitoring.png
</string>
</value>
</item>
<item>
<key>
<string>
content_type
</string>
</key>
<value>
<string>
image/png
</string>
</value>
</item>
<item>
<key>
<string>
data
</string>
</key>
<value>
<string
encoding=
"base64"
>
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
AABJRU5ErkJggg==
</string>
</value>
</item>
<item>
<key>
<string>
height
</string>
</key>
<value>
<int>
90
</int>
</value>
</item>
<item>
<key>
<string>
precondition
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
size
</string>
</key>
<value>
<int>
7990
</int>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
width
</string>
</key>
<value>
<int>
90
</int>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting_theme/vifib_hosting_image/monitoring_active.png.xml
0 → 100644
View file @
afc7917a
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Image"
module=
"OFS.Image"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_Cacheable__manager_id
</string>
</key>
<value>
<string>
http_cache
</string>
</value>
</item>
<item>
<key>
<string>
_EtagSupport__etag
</string>
</key>
<value>
<string>
ts47439835.52
</string>
</value>
</item>
<item>
<key>
<string>
__name__
</string>
</key>
<value>
<string>
monitoring_active.png
</string>
</value>
</item>
<item>
<key>
<string>
content_type
</string>
</key>
<value>
<string>
image/png
</string>
</value>
</item>
<item>
<key>
<string>
data
</string>
</key>
<value>
<string
encoding=
"base64"
>
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
AABJRU5ErkJggg==
</string>
</value>
</item>
<item>
<key>
<string>
height
</string>
</key>
<value>
<int>
90
</int>
</value>
</item>
<item>
<key>
<string>
precondition
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
size
</string>
</key>
<value>
<int>
14887
</int>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
width
</string>
</key>
<value>
<int>
90
</int>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting_theme/vifib_hosting_style/hosting-design.css.xml
View file @
afc7917a
...
...
@@ -110,6 +110,10 @@ padding-left:100px;\n
background:url(
<tal:block
tal:replace=
"img_folder"
/>
help_active.png) no-repeat scroll left center transparent;\n
padding-left:100px;\n
}\n
.monitoring h1 {\n
background:url(
<tal:block
tal:replace=
"img_folder"
/>
monitoring_active.png) no-repeat scroll left center transparent;\n
padding-left:100px;\n
}\n
\n
#shopping_cart_renderer .listbox tr:nth-child(2n) {\n
background:none repeat scroll 0 0 #FFFFFF;\n
...
...
master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_jauks_theme/vifib_style/vifib.css.xml
View file @
afc7917a
...
...
@@ -99,7 +99,7 @@ a img{border : 0 none;cursor : pointer;}\n
#vifib_logo{position:absolute;top:2px;left:50%;margin-left:-150px;width:300px;\n
height:150px;background: url(
<tal:block
tal:replace=
"images_path"
/>
vifib_logo.png) no-repeat top left}\n
\n
#login_menu{width:
75
0px;margin:120px auto 0px auto;padding-right:20px;text-align:right;\n
#login_menu{width:
90
0px;margin:120px auto 0px auto;padding-right:20px;text-align:right;\n
\tcolor:#bae2e9;height:36px;-moz-border-radius:10px}\n
#login_menu li{display:inline;padding:23px;line-height:44px;\n
\tfont-size:16px;font-weight:bold;background:url(
<tal:block
tal:replace=
"images_path"
/>
login_bg.png) repeat-x center left}\n
...
...
@@ -108,7 +108,7 @@ a img{border : 0 none;cursor : pointer;}\n
\n
#menu li a, #login_menu li a {color:#BAE2E9;text-decoration:none;}\n
\n
#menu{width:
75
0px;margin:0px auto 0px auto;text-align:center;\n
#menu{width:
90
0px;margin:0px auto 0px auto;text-align:center;\n
\tcolor:#bae2e9;height:44px;background:url(
<tal:block
tal:replace=
"images_path"
/>
menu_bg.png) repeat-x top left;\n
\t-moz-border-radius:10px}\n
#menu ul{list-style:none}\n
...
...
@@ -122,7 +122,7 @@ a img{border : 0 none;cursor : pointer;}\n
\n
/* Global container */\n
#content{text-align:left;position:relative;\n
left:50%;margin-left:-
375px;font-size:1.2em;width:75
0px;min-height:400px;\n
left:50%;margin-left:-
450px;font-size:1.2em;width:90
0px;min-height:400px;\n
background-color:#f3fdff;-moz-border-radius:10px}\n
#content_padding{padding:20px}\n
\n
...
...
master/bt5/vifib_web/bt/revision
View file @
afc7917a
436
\ No newline at end of file
442
\ No newline at end of file
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