import transaction import argparse from Products.CMFCore.utils import getToolByName from Products.CMFPlone.utils import safe_unicode from pleiades.dump import getSite, spoofRequest if __name__ == '__main__': app = spoofRequest(app) site = getSite(app) catalog = getToolByName(site, "portal_catalog") connections = catalog(portal_type='Connection') total = 0 for brain in connections: conn = brain.getObject() if isinstance(getattr(conn, 'relationshipType', None), (list, tuple)): conn.relationshipType = conn.relationshipType and safe_unicode( conn.relationshipType[0]) or None total += 1 print "bad conneciton type {}".format(brain.getPath()) transaction.commit() print "Fixed {} total connections.".format(total)
help="Input filename", metavar="FILE") parser.add_option( "-u", "--user", dest="user", help="Run script as user") opts, args = parser.parse_args(sys.argv[1:]) filename = opts.filename data = simplejson.loads(open(filename, 'rb').read()) # Mapping of TAVO period names to keys path = os.path.sep.join( [os.path.dirname(sys.argv[0]), "time-periods.csv"]) f = open(os.path.abspath(path)) rows = list(csv.reader(f))[1:] f.close() period_map = dict([ (title, tid) for title, tid, start, stop, area, note, other in rows ]) app = spoofRequest(app) site = getSite(app) setup_cmfuid(site) secure(site, opts.user or 'admin') main(site, data, period_map) app._p_jar.sync()