You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
4.1 KiB

  1. # Copyright 2016 ACSONE SA/NV (<http://acsone.eu>)
  2. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
  3. import os
  4. import sys
  5. from lxml import etree as ET
  6. from odoo.tools.convert import convert_xml_import
  7. class TestWizardCommon(object):
  8. _data_files = ('data/help_test_data.xml',)
  9. _module_ns = 'help_online'
  10. def createPage(self, pageName, imgXmlId=False):
  11. imgId = False
  12. if imgXmlId:
  13. imgId = self.ref(imgXmlId)
  14. rootNode = ET.Element('t')
  15. rootNode.attrib['name'] = pageName
  16. rootNode.attrib['t-name'] = "website.%s" % pageName
  17. tNode = ET.SubElement(rootNode,
  18. 't',
  19. attrib={'t-call': 'website.layout'})
  20. structDivNode = ET.SubElement(tNode,
  21. 'div',
  22. attrib={'class': 'oe_structure oe_empty',
  23. 'id': 'wrap'})
  24. sectionNode = ET.SubElement(structDivNode,
  25. 'section',
  26. attrib={'class': 'mt16 mb16'})
  27. containerNode = ET.SubElement(sectionNode,
  28. 'div',
  29. attrib={'class': 'container'})
  30. rowNode = ET.SubElement(containerNode,
  31. 'div',
  32. attrib={'class': 'row'})
  33. bodyDivNode = ET.SubElement(rowNode,
  34. 'div',
  35. attrib={'class': 'col-md-12 '
  36. 'text-center mt16 mb32'})
  37. style = "font-family: 'Helvetica Neue', Helvetica,"\
  38. " Arial, sans-serif; color: rgb(51, 51, 51);"\
  39. " text-align: left;"
  40. h2Node = ET.SubElement(bodyDivNode,
  41. 'h2',
  42. attrib={'style': style})
  43. h2Node.text = "Test Sample Title"
  44. if imgId:
  45. imgDivNode = ET.SubElement(bodyDivNode,
  46. 'div',
  47. attrib={'style': 'text-align: left;'})
  48. src = "/website/image?field=datas&"\
  49. "model=ir.attachment&id=%s" % str(imgId)
  50. ET.SubElement(imgDivNode,
  51. 'img',
  52. attrib={'class': 'img-thumbnail',
  53. 'src': src})
  54. imgDivNode = ET.SubElement(bodyDivNode,
  55. 'div',
  56. attrib={'style': 'text-align: left;'})
  57. src = "/website/image/ir.attachment/%s_ccc838d/datas" % str(imgId)
  58. ET.SubElement(imgDivNode,
  59. 'img',
  60. attrib={'class': 'img-thumbnail',
  61. 'src': src})
  62. imgDivNode = ET.SubElement(bodyDivNode,
  63. 'div',
  64. attrib={'style': 'text-align: left;'})
  65. src = "/web/image/%s" % str(imgId)
  66. ET.SubElement(imgDivNode,
  67. 'img',
  68. attrib={'class': 'img-thumbnail',
  69. 'src': src})
  70. arch = ET.tostring(rootNode, encoding='utf-8', xml_declaration=False)
  71. vals = {
  72. 'name': pageName,
  73. 'type': 'qweb',
  74. 'arch': arch,
  75. 'page': True,
  76. 'key': 'website.%s' % pageName
  77. }
  78. view_id = self.env['ir.ui.view'].create(vals)
  79. return view_id.id
  80. def setUp(self):
  81. super(TestWizardCommon, self).setUp()
  82. self.pageName = False
  83. self.imgXmlId = False
  84. self.pageTemplate = False
  85. # Loads the data file before
  86. module = sys.modules[self.__class__.__module__]
  87. base_path = os.path.dirname(module.__file__)
  88. for path in self._data_files:
  89. path = path.split('/')
  90. path.insert(0, base_path)
  91. path = os.path.join(*path)
  92. convert_xml_import(self.cr, self._module_ns, path)