[Pkg-privacy-commits] [tails-installer] 10/21: Rewrite on-the-fly updating of the release list

Intrigeri intrigeri at moszumanska.debian.org
Wed May 24 15:27:26 UTC 2017


This is an automated email from the git hooks/post-receive script.

intrigeri pushed a commit to tag 3.93.0
in repository tails-installer.

commit b010486130984b8aeb4e6d64e98ebd720314d405
Author: Martin Briza <mbriza at redhat.com>
Date:   Mon Apr 18 17:24:15 2016 +0200

    Rewrite on-the-fly updating of the release list
    
    Broken, do not use
---
 liveusb/components/ImageList.qml |  1 +
 liveusb/gui.py                   | 36 ++++++++++++++++++++++++++++++------
 liveusb/releases.py              | 24 ++++++++++--------------
 3 files changed, 41 insertions(+), 20 deletions(-)

diff --git a/liveusb/components/ImageList.qml b/liveusb/components/ImageList.qml
index 966b800..69b7031 100644
--- a/liveusb/components/ImageList.qml
+++ b/liveusb/components/ImageList.qml
@@ -203,6 +203,7 @@ Item {
 
             footer: Item {
                 height: !liveUSBData.releaseProxyModel.isFront ? $(54) : $(36)
+                visible: liveUSBData.rowCount > 3
                 width: osListView.width
                 Rectangle {
                     clip: true
diff --git a/liveusb/gui.py b/liveusb/gui.py
index 4df7f0b..df259d8 100755
--- a/liveusb/gui.py
+++ b/liveusb/gui.py
@@ -51,7 +51,7 @@ import resources_rc
 import qml_rc
 
 from liveusb import LiveUSBCreator, LiveUSBError, _
-from liveusb.releases import releases
+from liveusb.releases import releases, get_fedora_flavors
 
 if sys.platform == 'win32':
     from liveusb.urlgrabber.grabber import URLGrabber, URLGrabError
@@ -664,6 +664,16 @@ class USBDrive(QObject):
         self.beingRestoredChanged.emit()
         self.live.restore_drive(self.drive, self.restoreCallback)
 
+class DataUpdateThread(QThread):
+    def __init__(self, data):
+        QThread.__init__(self)
+        self.data = data
+
+    def run(self):
+        get_fedora_flavors()
+        self.data.fillReleases()
+
+
 class LiveUSBData(QObject):
     """ An entry point to all the exposed properties.
         There is a list of images and USB drives
@@ -686,6 +696,18 @@ class LiveUSBData(QObject):
         self._releaseModel = ReleaseListModel(self)
         self._releaseProxy = ReleaseListProxy(self, self._releaseModel)
 
+        self.fillReleases()
+        self.updateThread = DataUpdateThread(self)
+
+        self._usbDrives = []
+
+        self.live.detect_removable_drives(callback=self.USBDeviceCallback)
+
+        QTimer.singleShot(0, self.updateThread.start)
+
+    @pyqtSlot()
+    def fillReleases(self):
+        self.releaseModel.beginResetModel()
         self.releaseData = []
 
         for release in releases:
@@ -693,11 +715,9 @@ class LiveUSBData(QObject):
                                             len(self.releaseData),
                                             self.live,
                                             release
-                                    ))
-        self._usbDrives = []
-
-        self.live.detect_removable_drives(callback=self.USBDeviceCallback)
+                                            ))
 
+        self.releaseModel.endResetModel()
 
     def USBDeviceCallback(self):
         tmpDrives = []
@@ -766,7 +786,9 @@ class LiveUSBData(QObject):
 
     @pyqtProperty(Release, notify=currentImageChanged)
     def currentImage(self):
-        return self.releaseData[self._currentIndex]
+        if self._currentIndex < len(self.releaseData):
+            return self.releaseData[self._currentIndex]
+        return None
 
     @pyqtProperty(USBDrive, notify=driveToRestoreChanged)
     def driveToRestore(self):
@@ -815,6 +837,8 @@ class LiveUSBApp(QGuiApplication):
         qmlRegisterUncreatableType(USBDrive, 'LiveUSB', 1, 0, 'Drive', 'Not creatable directly, use the liveUSBData instance instead')
         qmlRegisterUncreatableType(LiveUSBData, 'LiveUSB', 1, 0, 'Data', 'Use the liveUSBData root instance')
 
+        # releases = get_fedora_flavors()
+
         engine = QQmlApplicationEngine()
         self.data = LiveUSBData(opts)
         engine.rootContext().setContextProperty('liveUSBData', self.data)
diff --git a/liveusb/releases.py b/liveusb/releases.py
index 0b85405..facdac4 100644
--- a/liveusb/releases.py
+++ b/liveusb/releases.py
@@ -153,11 +153,6 @@ def getSpins(url, source):
     d = pyquery.PyQuery(urlread(url))
     spins = []
 
-    if source == 'Spins':
-        spins.append({'version': '', 'releaseDate': '', 'source': '', 'name': 'Fedora ' + source, 'logo': '', 'description': '', 'screenshots': [], 'variants': {}, 'summary': 'Alternative desktops for Fedora'})
-    elif source == 'Labs':
-        spins.append({'version': '', 'releaseDate': '', 'source': '', 'name': 'Fedora ' + source, 'logo': '', 'description': '', 'screenshots': [], 'variants': {}, 'summary': 'Functional bundles for Fedora'})
-
     for i in d('div').filter('.high').items('span'):
         spinUrl = url + i.siblings()('a').attr('href')
         spin = getSpinDetails(spinUrl, source)
@@ -233,10 +228,10 @@ def getProducts(url='https://getfedora.org/'):
 
     return products
 
-def get_fedora_flavors():
-    releases = []
-    releases += getProducts('https://getfedora.org/')
-    releases += [{'name': _('Custom OS...'),
+def get_fedora_flavors(store=True):
+    r = []
+    r += getProducts('https://getfedora.org/')
+    r += [{'name': _('Custom OS...'),
                   'description': _('<p>Here you can choose a OS image from your hard drive to be written to your flash disk</p><p>Currently it is only supported to write raw disk images (.iso or .bin)</p>'),
                   'logo': 'qrc:/icon_folder',
                   'screenshots': [],
@@ -245,9 +240,11 @@ def get_fedora_flavors():
                   'releaseDate': '',
                   'source': 'Local',
                   'variants': {'': dict(url='', sha256='', size=0)}}]
-    releases += getSpins("http://spins.fedoraproject.org", "Spins")
-    releases += getSpins("http://labs.fedoraproject.org", "Labs")
-    return releases
+    r += getSpins("http://spins.fedoraproject.org", "Spins")
+    r += getSpins("http://labs.fedoraproject.org", "Labs")
+    if (store):
+        releases[:] = r
+    return r
 
 # A backup list of releases, just in case we can't fetch them.
 fedora_releases =  [{'description': u"<p>Fedora Workstation is a reliable, user-friendly, and powerful operating system for your laptop or desktop computer. It supports a wide range of developers, from hobbyists and students to professionals in corporate environments.</p>\n        <blockquote><p>“The plethora of tools provided by  Fedora allows me to get the job done.  It just works.”</p>\n              <p align=right> \u2015 <em>Christine Flood, JVM performance engineer</em> [...]
@@ -442,9 +439,8 @@ fedora_releases =  [{'description': u"<p>Fedora Workstation is a reliable, user-
                           'url': 'https://download.fedoraproject.org/pub/alt/releases/23/Spins/x86_64/Fedora-Live-Security-x86_64-23-10.iso'}},
   'version': '23'}]
 
-
 releases = fedora_releases
 
 if __name__ == '__main__':
     import pprint
-    pprint.pprint(get_fedora_flavors())
+    pprint.pprint(get_fedora_flavors(False))

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-privacy/packages/tails-installer.git



More information about the Pkg-privacy-commits mailing list