Ejemplo n.º 1
0
	def __releasesFileReply__finished(self):
		"""
		Defines the slot triggered by the releases file reply when finished.
		"""

		self.__engine.stopProcessing()

		if not self.__releasesFileReply.error():
			content = []
			while not self.__releasesFileReply.atEnd ():
				content.append(foundations.strings.toString(self.__releasesFileReply.readLine()))

			LOGGER.debug("> Parsing releases file content.")
			sectionsFileParser = SectionsFileParser()
			sectionsFileParser.content = content
			sectionsFileParser.parse()

			releases = {}
			for remoteObject in sectionsFileParser.sections:
				if remoteObject != Constants.applicationName:
					databaseTemplates = \
					sibl_gui.components.core.database.operations.filterTemplates("^{0}$".format(remoteObject), "name")
					databaseTemplate = foundations.common.getFirstItem([foundations.common.getFirstItem(databaseTemplate)
												for databaseTemplate in sorted(((databaseTemplate, databaseTemplate.release)
												for databaseTemplate in databaseTemplates),
												reverse=True,
												key=lambda x:(foundations.strings.getVersionRank(x[1])))])
					if not self.__engine.parameters.databaseReadOnly:
						if databaseTemplate:
							if databaseTemplate.release != sectionsFileParser.getValue("Release", remoteObject):
								releases[remoteObject] = ReleaseObject(name=remoteObject,
																	repositoryVersion=sectionsFileParser.getValue(
																	"Release", remoteObject),
																	localVersion=databaseTemplate.release,
																	type=sectionsFileParser.getValue("Type",
																									remoteObject),
																	url=sectionsFileParser.getValue("Url",
																									remoteObject),
																	comment=sectionsFileParser.getValue("Comment",
																									remoteObject))
						else:
							if not self.Ignore_Non_Existing_Templates_checkBox.isChecked():
								releases[remoteObject] = ReleaseObject(name=remoteObject,
																	repositoryVersion=sectionsFileParser.getValue(
																	"Release", remoteObject),
																	localVersion=None,
																	type=sectionsFileParser.getValue("Type",
																									remoteObject),
																	url=sectionsFileParser.getValue("Url",
																									remoteObject),
																	comment=sectionsFileParser.getValue("Comment",
																									remoteObject))
					else:
						LOGGER.info("{0} | '{1}' repository remote object skipped by '{2}' command line parameter value!".format(
						self.__class__.__name__, remoteObject, "databaseReadOnly"))
				else:
					if Constants.version != sectionsFileParser.getValue("Release", remoteObject):
						releases[remoteObject] = ReleaseObject(name=remoteObject,
															repositoryVersion=sectionsFileParser.getValue("Release",
																										remoteObject),
															localVersion=Constants.version,
															url=sectionsFileParser.getValue("Url", remoteObject),
															type=sectionsFileParser.getValue("Type", remoteObject),
															comment=None)
			if releases:
				LOGGER.debug("> Initializing Remote Updater.")
				self.__remoteUpdater = RemoteUpdater(self, releases, Qt.Window)
				self.__remoteUpdater.show()
			else:
				self.__reportUpdateStatus and self.__engine.notificationsManager.notify(
				"{0} | '{1}' is up to date!".format(self.__class__.__name__, Constants.applicationName))
		else:
			raise sibl_gui.exceptions.NetworkError("{0} | QNetworkAccessManager error code: '{1}'.".format(
			self.__class__.__name__, self.__releasesFileReply.error()))
Ejemplo n.º 2
0
    def __releasesFileReply__finished(self):
        """
		Defines the slot triggered by the releases file reply when finished.
		"""

        self.__engine.stopProcessing()

        if not self.__releasesFileReply.error():
            content = []
            while not self.__releasesFileReply.atEnd():
                content.append(
                    foundations.strings.toString(
                        self.__releasesFileReply.readLine()))

            LOGGER.debug("> Parsing releases file content.")
            sectionsFileParser = SectionsFileParser()
            sectionsFileParser.content = content
            sectionsFileParser.parse()

            releases = {}
            for remoteObject in sectionsFileParser.sections:
                if remoteObject != Constants.applicationName:
                    databaseTemplates = \
                    sibl_gui.components.core.database.operations.filterTemplates("^{0}$".format(remoteObject), "name")
                    databaseTemplate = foundations.common.getFirstItem([
                        foundations.common.getFirstItem(databaseTemplate)
                        for databaseTemplate in
                        sorted(((databaseTemplate, databaseTemplate.release)
                                for databaseTemplate in databaseTemplates),
                               reverse=True,
                               key=lambda x:
                               (foundations.strings.getVersionRank(x[1])))
                    ])
                    if not self.__engine.parameters.databaseReadOnly:
                        if databaseTemplate:
                            if databaseTemplate.release != sectionsFileParser.getValue(
                                    "Release", remoteObject):
                                releases[remoteObject] = ReleaseObject(
                                    name=remoteObject,
                                    repositoryVersion=sectionsFileParser.
                                    getValue("Release", remoteObject),
                                    localVersion=databaseTemplate.release,
                                    type=sectionsFileParser.getValue(
                                        "Type", remoteObject),
                                    url=sectionsFileParser.getValue(
                                        "Url", remoteObject),
                                    comment=sectionsFileParser.getValue(
                                        "Comment", remoteObject))
                        else:
                            if not self.Ignore_Non_Existing_Templates_checkBox.isChecked(
                            ):
                                releases[remoteObject] = ReleaseObject(
                                    name=remoteObject,
                                    repositoryVersion=sectionsFileParser.
                                    getValue("Release", remoteObject),
                                    localVersion=None,
                                    type=sectionsFileParser.getValue(
                                        "Type", remoteObject),
                                    url=sectionsFileParser.getValue(
                                        "Url", remoteObject),
                                    comment=sectionsFileParser.getValue(
                                        "Comment", remoteObject))
                    else:
                        LOGGER.info(
                            "{0} | '{1}' repository remote object skipped by '{2}' command line parameter value!"
                            .format(self.__class__.__name__, remoteObject,
                                    "databaseReadOnly"))
                else:
                    if Constants.version != sectionsFileParser.getValue(
                            "Release", remoteObject):
                        releases[remoteObject] = ReleaseObject(
                            name=remoteObject,
                            repositoryVersion=sectionsFileParser.getValue(
                                "Release", remoteObject),
                            localVersion=Constants.version,
                            url=sectionsFileParser.getValue(
                                "Url", remoteObject),
                            type=sectionsFileParser.getValue(
                                "Type", remoteObject),
                            comment=None)
            if releases:
                LOGGER.debug("> Initializing Remote Updater.")
                self.__remoteUpdater = RemoteUpdater(self, releases, Qt.Window)
                self.__remoteUpdater.show()
            else:
                self.__reportUpdateStatus and self.__engine.notificationsManager.notify(
                    "{0} | '{1}' is up to date!".format(
                        self.__class__.__name__, Constants.applicationName))
        else:
            raise sibl_gui.exceptions.NetworkError(
                "{0} | QNetworkAccessManager error code: '{1}'.".format(
                    self.__class__.__name__, self.__releasesFileReply.error()))