Example #1
0
	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
Example #2
0
	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
Example #3
0
    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