diff --git a/perfrepo/PerfRepoReport.py b/perfrepo/PerfRepoReport.py index 1d10a62..1a114fb 100644 --- a/perfrepo/PerfRepoReport.py +++ b/perfrepo/PerfRepoReport.py @@ -52,12 +52,14 @@ def __init__(self, xml=None): recursive_dict_update(self._properties, tmp_dict) self._permissions = [] - for entry in root.find("permissions"): - if entry.tag != "permission": - continue - self._permissions.append(PerfRepoReportPermission(entry)) - self._permissions[-1].set_report_id(self._id) - self._permissions[-1].validate() + perms = root.find("permissions") + if perms is not None: + for entry in perms: + if entry.tag != "permission": + continue + self._permissions.append(PerfRepoReportPermission(entry)) + self._permissions[-1].set_report_id(self._id) + self._permissions[-1].validate() else: raise PerfRepoException("Parameter xml must be"\ " a string, an Element or None") @@ -379,6 +381,12 @@ def to_xml(self): self._set_element_atrib(value_elem, 'name', prop[0]) self._set_element_atrib(value_elem, 'value', prop[1]) + if len(self._permissions): + perms_elem = ElementTree.SubElement(root, 'permissions') + for perm in self._permissions: + perm_elem = perm.to_xml() + perms_elem.append(perm_elem) + return root def __str__(self): @@ -420,8 +428,6 @@ def __init__(self, xml=None): if root.tag != "report-permission" and root.tag != "permission": raise PerfRepoException("Invalid xml.") - self._id = root.find("id").text - try: self._report_id = root.find("report-id").text except: @@ -502,7 +508,7 @@ def get_group_id(self): def to_xml(self): self.validate() - root = Element('report-permission') + root = Element('permission') id_elem = ElementTree.SubElement(root, 'report-id') id_elem.text = str(self._report_id)