def __init__(self, parent, pref, gendef=False, verbose=False): self.gen_ok = False self.gendef = gendef self.verbose = verbose if gendef: self.ztitle = "Data2Proj, Rev 0.2" else: self.ztitle = "Data2Code, Rev 0.2" self.order_class = None self.import_file_name = StringVar() self.import_file_name.set(" ") self.field_seps = OrderDef.DELIMITERS self.field_sel = IntVar() self.field_sel.set(0) if not pref: self.pref = DataPreferences.Load('.') else: self.pref = pref self.display_info = OrderedDict() dum = dict(OrderClass()) for key in dum: self.display_info[key] = StringVar() super().__init__(parent=parent)
def _on_open(self): pref = DataPreferences.Load(self.home) self.project = askopenfilename(title="Open Project File", initialdir=pref['Projects'], filetypes=[("PyDAO Project", OrderDef.ProjType)]) if not self.project: return zdef = Factory1.LoadFile(self.project) if not zdef: messagebox.showerror("Schema File / Format Error", "Unable to import " + self.project) else: self.table_frame.got_results() self.title(self.project) self.order_def = zdef self._show_order()
def do_save(self): ''' Project file must be created for both saving same, as well as for creating code. ''' ztbl = self.table_frame.pull_results() zdict = ztbl.__dict__() if not zdict: messagebox.showerror("No Data", "Schema Definition Required.") return False self.order_def = OrderDef(name=ztbl.get_table_name()) if not self.order_def.add_table(ztbl): messagebox.showerror("Invalid Table", "Please verify SQL Table Definition.") return False if Factory1.SaveFile(DataPreferences.Load(self.home), self.order_def, overwrite=True) is False: messagebox.showerror("Exportation Error", "Please verify user locations.") return False self.table_frame.got_results() return True
def _on_code_create(self): ''' Generate Python code ''' if self.do_save() is True: pref = DataPreferences.Load(self.home) order_class = Factory1.Extract(self.order_def, pref) zfields = OrderedDict() ztables = self.order_def.table_names() table_def = self.order_def.find_table( ztables[0]) # TODO: Highlander hack. for row in table_def: zfields[row[1]] = row[2] sql = SqliteCrud(order_class, zfields) zcode = sql.code_class_template(self.order_def.database_name + OrderDef.TEXT_DATA_TYPE) with open(self.order_def.code_name, 'w') as fh: print(zcode, file=fh) val = os.path.split(self.order_def.code_name) messagebox.showinfo( "Source Code Success", "Class created as " + val[-1] + " in preference location.")
def __init__(self, parent, pref, verbose=False): self.gen_ok = False self.verbose = verbose self.ztitle = "DataAI, Rev 0.1" self.order_class = None self.import_file_name = StringVar() self.import_file_name.set(" ") self.field_seps = "Gen Proj", "Gen Code", "Gen Both" self.field_sel = StringVar() self.field_sel.set(0) if not pref: self.pref = DataPreferences.Load('.') else: self.pref = pref self.display_info = OrderedDict() dum = dict(OrderClass()) for key in dum: self.display_info[key] = StringVar() super().__init__(parent=parent)
import os import sys sys.path.insert(1, os.path.join(sys.path[0], '../..')) from SqltDAO.CodeGen01.OrderClass import OrderClass from SqltDAO.CodeGen01.CodeGen import DaoGen from SqltDAO.Gui.DataPreferences import Dp1 as DataPreferences test = DaoGen() order = OrderClass() order.class_name = "TC001" order.file_name = "./foo.py" order.sep = 'CSV' print("Order Delimiter:", order.sep) try: data_file = "./tc001_data.txt" print(test.write_code(DataPreferences.Load('.'), order, data_file)) except: data_file = "./DaoTest01/tc001_data.txt" order.file_name = "./DaoTest01/foo.py" print(test.write_code(DataPreferences.Load('.'), order, data_file))
## col = col.replace('"', '').strip() ## newline += col + '\t' ## print(newline.strip(), file=fh2) files = ( ("../DaoTest01/Income.csv", "COMMA"), ("../DaoTest01/nasdaqlisted.txt", "PIPE"), ("../DaoTest01/tc001_data.txt", "CSV"), ("../DaoTest01/tc002_data.txt", "TAB"), ) for file, result in files: print(file, result) detect = Factory1.Detect(file) print(detect.__dict__) else: from SqltDAO.Gui.DataPreferences import Dp1 as DataPreferences pref = DataPreferences.Load('.') zorder = OrderDef(name=OrderDef.DEFAULT_SCHEMA) zname = zorder.project_name print("zname", zname) if os.path.exists(zname): print("unlinking", zname) os.unlink(zname) for ss in range(4): table = "zTable " + str(ss) ztable = TableDef(name=table) for ztype in TableDef.SupportedTypes: ztable.add_field(table + ' ' + ztype, ztype) zorder.add_table(ztable) print("zorder:\n", zorder, '\n') zname = zorder.project_name
def _on_d2pref(self): zpref = DataPreferences(self, self.home) if zpref.has_changed(): pass
def _on_d2p(self): Data2Code(self, pref=DataPreferences.Load(self.home), gendef=True, verbose=True)