--- a/AssistantEric/APIsManager.py Fri Oct 25 19:39:53 2013 +0200 +++ b/AssistantEric/APIsManager.py Fri Nov 29 18:39:19 2013 +0100 @@ -587,6 +587,7 @@ self.__inPreparation = False self.__worker = None self.__workerQueue = [] + self.__opened = False self.__language = language if self.__language == ApisNameProject: @@ -663,19 +664,35 @@ if self.__worker is not None: self.__worker.wait(5000) - QSqlDatabase.database(self.__language).close() - QSqlDatabase.removeDatabase(self.__language) + if QSqlDatabase.database(self.__language).isOpen(): + QSqlDatabase.database(self.__language).close() + QSqlDatabase.removeDatabase(self.__language) + + self.__opened = False def __openApiDb(self): """ Private method to open the API database. + + @return flag indicating the database status (boolean) """ db = QSqlDatabase.database(self.__language, False) if not db.isValid(): # the database connection is a new one db = QSqlDatabase.addDatabase("QSQLITE", self.__language) - db.setDatabaseName(self._apiDbName()) - db.open() + dbName = self._apiDbName() + if self.__language == ApisNameProject and \ + not os.path.exists( + self.__project.getProjectManagementDir()): + opened = False + else: + db.setDatabaseName(dbName) + opened = db.open() + if not opened: + QSqlDatabase.removeDatabase(self.__language) + else: + opened = True + return opened def __createApiDB(self): """ @@ -918,12 +935,13 @@ """ Private method to open the API database. """ - self.__openApiDb() - if not self.__isPrepared(): - self.__createApiDB() - - # prepare the database if neccessary - self.prepareAPIs() + self.__opened = self.__openApiDb() + if self.__opened: + if not self.__isPrepared(): + self.__createApiDB() + + # prepare the database if neccessary + self.prepareAPIs() def __getProjectFormSources(self, normalized=False): """ @@ -1079,8 +1097,9 @@ """ Private slot to handle the projectChanged signal. """ - self.__projectClosed() - self.__projectOpened() + if self.__opened: + self.__projectClosed() + self.__projectOpened() def editorSaved(self, filename): """