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
Ophélie Gagnard
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