Commit 60146ebd authored by Rafael Monnerat's avatar Rafael Monnerat

Added an action to perform a very basic validation at HTML5 Content

parent faa91cc1
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/object_action</string>
</tuple>
</value>
</item>
<item>
<key> <string>category</string> </key>
<value> <string>object_action</string> </value>
</item>
<item>
<key> <string>condition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>icon</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>verify_content</string> </value>
</item>
<item>
<key> <string>permissions</string> </key>
<value>
<tuple>
<string>View</string>
</tuple>
</value>
</item>
<item>
<key> <string>priority</string> </key>
<value> <float>10.0</float> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Verify Content</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="Expression" module="Products.CMFCore.Expression"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/TestPage_validateHTML5Content</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/object_action</string>
</tuple>
</value>
</item>
<item>
<key> <string>category</string> </key>
<value> <string>object_action</string> </value>
</item>
<item>
<key> <string>condition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>icon</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>verify_content</string> </value>
</item>
<item>
<key> <string>permissions</string> </key>
<value>
<tuple>
<string>View</string>
</tuple>
</value>
</item>
<item>
<key> <string>priority</string> </key>
<value> <float>10.0</float> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Verify Content</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="Expression" module="Products.CMFCore.Expression"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/TestPage_validateHTML5Content</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
...@@ -128,4 +128,36 @@ def extractTest(text): ...@@ -128,4 +128,36 @@ def extractTest(text):
testcode += row[0].text testcode += row[0].text
else: else:
testcode += lxml.html.tostring(row) testcode += lxml.html.tostring(row)
return testcode return testcode
"""
HTML5 Presentation validador
"""
def validateHTML5Document(text):
import lxml.html
from lxml import etree
root = lxml.html.fromstring(text)
section_list = root.xpath('//section')
count = 0
error_list = []
for section in section_list:
count += 1
if section.xpath("h1") == []:
error_list.append("Section %s had no h1." % count)
if section.get("class") in ["screenshot", "illustration"]:
if section.xpath("img") == []:
error_list.append("Section %s has class %s but do not have an image." % (count, section.get("class")))
else:
if section.xpath("img")[0].get("title") == None:
error_list.append("At section %s, img has no title" % count)
if section.xpath("img")[0].get("alt") == None:
error_list.append("At section %s, img has no alt" % count)
if section.xpath("details") == []:
error_list.append("Section %s has no details." % (count))
return error_list
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ExternalMethod" module="Products.ExternalMethod.ExternalMethod"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_function</string> </key>
<value> <string>validateHTML5Document</string> </value>
</item>
<item>
<key> <string>_module</string> </key>
<value> <string>ERP5RunMyDocs</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>TestPage_validateContent</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?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[
translateString = context.Base_translateString\n
\n
text_content = context.getTextContent()\n
error_list = context.TestPage_validateContent(text_content)\n
\n
if len(error_list) > 0:\n
portal_status_message = " ".join(error_list)\n
else:\n
portal_status_message = translateString("No error was found.")\n
\n
return context.Base_redirect(context.REQUEST.get("form_id", ""), \n
keep_items=dict(portal_status_message=portal_status_message))\n
]]></string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>TestPage_validateHTML5Content</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
60 61
\ No newline at end of file \ No newline at end of file
...@@ -18,6 +18,7 @@ Test Page | related ...@@ -18,6 +18,7 @@ Test Page | related
Test Page | send_email Test Page | send_email
Test Page | slideshow Test Page | slideshow
Test Page | update_report Test Page | update_report
Test Page | verify_content
Test Page | view Test Page | view
Test Page | view_editor Test Page | view_editor
Test Page | view_slideshow_editor Test Page | view_slideshow_editor
...@@ -27,4 +28,5 @@ Web Page Module | page_fast_input ...@@ -27,4 +28,5 @@ Web Page Module | page_fast_input
Web Page | export_book Web Page | export_book
Web Page | export_chapter Web Page | export_chapter
Web Page | slideshow Web Page | slideshow
Web Page | verify_content
Web Page | view_slideshow_editor Web Page | view_slideshow_editor
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment