def btnIniciar_clicked(self, checked=None): self.n = 0 def status(x): self.status.setText(x); QtGui.QApplication.processEvents() def count_step(n=1): self.n = (self.n + n) % 99 + 1; self.progress.setValue(self.n); QtGui.QApplication.processEvents() def end_step(): self.n = 100; self.progress.setValue(self.n); QtGui.QApplication.processEvents() status(u"Analizando la carpeta del proyecto . . . ") count_step() app_folder = str(self.dbProyecto.value()) conn = self.parent.conn cur = self.parent.cur sysprefix = str(settings.value(KEY_SYSTEM_TABLE_PREFIX).toString()) if not os.path.exists(app_folder): raise ValueError(u"La carpeta especificada no existe") if not os.path.isdir(app_folder): raise ValueError(u"La carpeta especificada no es una carpeta") folders = [ x for x in os.listdir(app_folder) if os.path.isdir(os.path.join(app_folder,x)) ] file_upload_list = {} for fname in folders: ftype = KNOWN_FOLDERS.get(fname,None) if ftype is None: continue # ignorar las carpetas que no conocemos for filename in os.listdir(os.path.join(app_folder,fname)): file_obj = Struct() file_obj.name = filename file_obj.ftype = ftype file_obj.path = os.path.join(app_folder,fname,filename) file_upload_list[filename] = file_obj if len(file_upload_list) == 0: raise ValueError(u"No hay ningún fichero de proyecto aquí.") status(u"Obteniendo la lista de versiones subidas actualmente . . . ") count_step() max_version = 1 # AlephERP tiene un bug con la version 1, asi que la primera sera la version 2 cur.execute(""" SELECT nombre, version FROM %s_system """ % sysprefix) uploaded_files = {} for (nombre, version) in cur: if version > max_version: max_version = version uploaded_files[nombre] = version next_version = max_version + 1 status(u"Borrando ficheros anteriores . . . ") stepsz = 20/(len(uploaded_files)+1) for filename in uploaded_files.keys(): cur.execute(""" DELETE FROM %s_system WHERE nombre = %%s """ % sysprefix, [filename]) count_step(stepsz) status(u"Subiendo ficheros . . . ") stepsz = 60/(len(file_upload_list)) for filename, obj in file_upload_list.items(): cur.execute(""" INSERT INTO %s_system (nombre,contenido,type,version) VALUES ( %%s, %%s, %%s, %%s ) """ % sysprefix, [filename, open(obj.path).read(), obj.ftype, next_version]) count_step(stepsz) status(u"Proceso completado. El proyecto ha sido cargado con versión %d." % next_version) end_step() self.completed = True self.emit(QtCore.SIGNAL("completeChanged()"))