def handle_sobject(my, node): search_type = my.xml.get_attribute(node, "search_type") include_id = my.xml.get_attribute(node, "include_id") if include_id in [True, 'true']: include_id = True else: include_id = False ignore_columns = Xml.get_attribute(node, "ignore_columns") if ignore_columns: ignore_columns = ignore_columns.split(",") ignore_columns = [x.strip() for x in ignore_columns] else: ignore_columns = [] # FIXME: # it is possible that the manifest defines sobjects on search types # that don't exist. This is because it uses the manifest of # the new pipeline and not the original ... sobjects = my.get_sobjects_by_node(node) if not sobjects: print "Skipping as no sobjects found for [%s]" %search_type return [] # If there are no sobjects, then no file is created because # no path can be extracted. path = my.get_path_from_node(node) print "Writing: ", path fmode = 'w' if os.path.exists(path): fmode = 'a' if not sobjects: # write out an empty file #f = open(path, 'w') f = codecs.open(path, fmode, 'utf-8') f.close() return [] dumper = TableDataDumper() dumper.set_delimiter("#-- Start Entry --#", "#-- End Entry --#") if search_type == 'config/widget_config': dumper.set_ignore_columns(['code']) dumper.set_include_id(include_id) dumper.set_ignore_columns(ignore_columns) dumper.set_sobjects(sobjects) dumper.dump_tactic_inserts(path, mode='sobject') print "\t....dumped [%s] entries" % (len(sobjects)) return sobjects
def handle_search_type(my, node): search_type = my.xml.get_attribute(node, "code") if not search_type: raise TacticException("No code found for search type in manifest") path = my.xml.get_attribute(node, "path") if not path: path = "%s.spt" % search_type.replace("/", "_") path = "%s/%s" % (my.plugin_dir, path) if os.path.exists(path): os.unlink(path) # dump out search type registration search = Search("sthpw/search_object") search.add_filter("search_type", search_type) sobject = search.get_sobject() if not sobject: raise TacticException("Search type [%s] does not exist" % search_type) dumper = TableDataDumper() dumper.set_delimiter("#-- Start Entry --#", "#-- End Entry --#") dumper.set_include_id(False) dumper.set_sobjects([sobject]) dumper.dump_tactic_inserts(path, mode='sobject') ignore_columns = Xml.get_attribute(node, "ignore_columns") if ignore_columns: ignore_columns = ignore_columns.split(",") ignore_columns = [x.strip() for x in ignore_columns] else: ignore_columns = [] # dump out the table definition dumper = TableSchemaDumper(search_type) dumper.set_delimiter("#-- Start Entry --#", "#-- End Entry --#") dumper.set_ignore_columns(ignore_columns) dumper.dump_to_tactic(path, mode='sobject')