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 do_reload(self, fmod=[], fdel=[], forms='', REQUEST=None): """ reload portal forms """ fmod = convertToList(fmod) fdel = convertToList(fdel) forms_list = convertLinesToList(forms) for form_path in fmod: portal = get_portal(self, form_path[:form_path.find('portal_forms')]) form_id = form_path[form_path.find('portal_forms')+13:] form_ob = self.get_zmi_template(form_path) fs_content = self.get_fs_template(form_id, portal) try: if form_ob is None: formstool_ob = portal.getFormsTool() formstool_ob.manage_addTemplate(id=form_id, title='', file='') form_ob = formstool_ob._getOb(form_id, None) form_ob.pt_edit(text=fs_content, content_type='') form_ob._p_changed = 1 except Exception, error: print error