Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
 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