def installDatabaseUpdates(self): currVersion = globalConf.getValueI('dbVersion') files = self.getAvailableUpdates() pattern = re.compile(r'(#V)(\d*)$') #e.g. #V0001 for f in files: with open('%s'%f, 'r') as content_file: lines = content_file.readlines() match = pattern.match(lines[0]) if not match: raise UnversionedSQLFileError('No version found in %s'%f) groups = match.groups() if not groups: raise UnversionedSQLFileError('Versionstring "%s" invalid in file %s'%(lines[0], f)) fileVersion = int(groups[1]) if fileVersion <= currVersion: break self.runScript(lines) globalConf.setValueI('dbVersion', version.VERSION) return True
def importShifts(self): from lib.feedparser import feedparser url = unicode(self.ui.lineEdit_URL.text()) feed = feedparser.parse(url) self.beginTransaction() maxDateTime = ignoreBefore = self.ui.dateTimeEdit_ignoreBefore.dateTime() for item in feed['items']: name = item['title'] dateTime = item['published'][:-6] #strip the last 6 chars for easier parsing below locale = QtCore.QLocale(QtCore.QLocale.English, QtCore.QLocale.UnitedStates) dateTime = locale.toDateTime(dateTime, 'ddd, dd MMM yyyy hh:mm:ss') # Sat, 29 Dec 2018 22:00:00 if dateTime <= ignoreBefore: continue beginDate = dateTime.date() beginTime = dateTime.time() if dateTime > maxDateTime: maxDateTime = dateTime if not self.createShift(name, beginDate, beginTime): self.rollback() QtGui.QMessageBox.critical(self, u'Schichterstellung fehlgeschlagen', u'Die Schichten konnten nicht erstellt werden!\nBitte kontaktieren Sie Ihren Datenbank Administrator') self.commit() QtGui.QMessageBox.information(self, u'Schichterstellung erfolgreich', u'Die Schichten wurden erfolgreich import') try: tmp = config.config['connection'] except KeyError: config.config['connection'] = {DBConnection.connName: {}} config.config['connection'][DBConnection.connName]['last_shift_import_url'] = url config.config.write() globalConf.setValueI('last_imported_shift_datetime', maxDateTime.toTime_t()) return True
def importShifts(self): from lib.feedparser import feedparser url = unicode(self.ui.lineEdit_URL.text()) feed = feedparser.parse(url) self.beginTransaction() maxDateTime = ignoreBefore = self.ui.dateTimeEdit_ignoreBefore.dateTime() for item in feed["items"]: name = item["title"] dateTime = item["published"][:-6] # strip the last 6 chars for easier parsing below dateTime = QtCore.QDateTime.fromString(dateTime, "ddd, dd MMM yyyy hh:mm:ss") if dateTime <= ignoreBefore: continue beginDate = dateTime.date() beginTime = dateTime.time() if dateTime > maxDateTime: maxDateTime = dateTime if not self.createShift(name, beginDate, beginTime): self.rollback() QtGui.QMessageBox.critical( self, u"Schichterstellung fehlgeschlagen", u"Die Schichten konnten nicht erstellt werden!\nBitte kontaktieren Sie Ihren Datenbank Administrator", ) self.commit() QtGui.QMessageBox.information( self, u"Schichterstellung erfolgreich", u"Die Schichten wurden erfolgreich import" ) config.config["connection"][DBConnection.connName]["last_shift_import_url"] = url config.config.write() globalConf.setValueI("last_imported_shift_datetime", maxDateTime.toTime_t()) return True