def get_report(self, forms, portals='', exclude=False, REQUEST=None): if not REQUEST.has_key('show_report'): # TODO: remove this return report = {} forms = convertLinesToList(forms) portals_list = get_portals(self) portals_custom = [] if portals.strip(): for portal_id in portals.split(','): portals_custom.append(portal_id.strip()) for portal in portals_list: if portals_custom: if exclude and portal.id in portals_custom: continue elif not exclude and portal.id not in portals_custom: continue portal_path = '/'.join(portal.getPhysicalPath()[1:]) portal_forms = portal.portal_forms if forms: forms_list_tmp = [] for form_line in forms: #Search in ZMI and FS for template patterns for form_id in self.find_templates(re.compile(form_line), portal): if form_id not in forms_list_tmp: forms_list_tmp.append(form_id) forms_list = forms_list_tmp del(forms_list_tmp) else: forms_list = portal_forms.objectIds() deltas = [] for form_id in forms_list: try: form_fs = portal_forms._default_form(form_id) except KeyError, exc_error: zLOG.LOG('Naaya Updater', zLOG.ERROR, '%s: %s' % (portal.id, exc_error)) continue form_zmi = portal_forms._getOb(form_id) if form_fs and form_zmi: t1 = normalize_template(form_fs._text) t2 = normalize_template(form_zmi._text) delta = { 'physical_path': '/'.join(form_zmi.getPhysicalPath()[1:]), 'absolute_url': form_zmi.absolute_url(), 'id': form_zmi.getId(), 'title': form_zmi.title_or_id(), } if t1 == t2: delta['result'] = 'identical' else: delta['result'] = 'different' delta['diff'] = html_diff(form_fs._text, form_zmi._text) deltas.append(delta) if len(deltas) > 0: report[portal_path] = deltas
def show_diff(self, REQUEST): """ show the differences between the default and customized form """ name = REQUEST.get('name', '') bundle_template = self.bundle_template(name) bundle_content = get_template_source(bundle_template) customized_content = self.template_content(name) diff = html_diff(bundle_content, customized_content) return self._diff(diff=diff)
def _update(self, portal): portlet_name = 'portlet_administration' ptool = portal.portal_portlets site_portlet = queryAdapter(portal, INyPortlet, name=portlet_name) assert site_portlet is not None self.log.debug(site_portlet) custom_portlet = ptool._getOb(portlet_name, None) if custom_portlet is None: self.log.debug('No local portlet_administration') return True revert_url = portal.absolute_url() + '/portal_portlets/manage_main' revert_link = '<a href="%s">portal_portlets</a>' % revert_url diff = html_diff(site_portlet.template._text, custom_portlet._text) self.report_html = '<br/>'.join([revert_link, diff]) return True
def html_diff(self): return html_diff(self.source1, self.source2)