Example #1
0
 def get_updates(self):
     url = settings.get(
         SettingType.CHECK_UPDATE_URL,
         'https://api.github.com/repos/juliendz/imagius/releases/latest')
     qurl = QtCore.QUrl(url)
     LOGGER.info("Checking for updates....")
     self._net_mgr.get(QtNetwork.QNetworkRequest(qurl))
Example #2
0
def run(argv):
    init_app_data_dir()
    init_app_db()

    from imagius.log import LOGGER
    LOGGER.info(
        '======================================Imagius starting up=======================================')

    import imagius.settings
    settings.load_settings()

    from imagius.main_window import MainWindow

    app = QApplication(argv)
    app.setApplicationName(HUMAN_APP_NAME)
    w = MainWindow()

    # with open('styles/Aqua.qss', 'r') as stylesheet:
    #     qss = stylesheet.read()

    # w.setStyleSheet(qss)

    w.setWindowTitle('Imagius')
    w.showMaximized()

    return app.exec_()
Example #3
0
    def watch_all(self):
        """
        <TODO>
        """
        self._img_integrity_ts = start_time = time.time()

        LOGGER.info('Watch all started.')

        self._meta_files_mgr.connect()

        self.scan_folders()

        elapsed = round(time.time() - start_time, 2)
        suffix = 'seconds'
        if elapsed > 60:
            elapsed /= 60
            suffix = 'minutes'
        LOGGER.info('Watch all completed in %.2f %s.' % (elapsed, suffix))

        self.watch_all_done.emit(elapsed, suffix)

        orphaned_scan_dirs = self._meta_files_mgr.get_orphaned_scan_dirs(
            self._img_integrity_ts)
        for dir in orphaned_scan_dirs:
            self.dir_empty_or_deleted.emit({'id': dir['id']})
            self._meta_files_mgr.prune_scan_dir(dir['id'])
        self.watch_empty_or_deleted_done.emit()

        self._meta_files_mgr.disconnect()
Example #4
0
def run(argv):
    init.init_app_data_dir()
    from imagius.log import LOGGER
    LOGGER.info(
        '======================================Imagius starting up=======================================')
    init.init_app_db()

    from imagius import settings
    settings.load_settings()
Example #5
0
    def _request_finished(self, reply):
        if reply.error() == QtNetwork.QNetworkReply.NoError:
            json_doc = QtCore.QJsonDocument.fromJson(reply.readAll())
            json_obj = json_doc.object()
            latest_release = Version(json_obj['tag_name'].toString())
            is_draft = json_obj['draft'].toBool()
            assets = json_obj['assets'].toArray()
            asset_url = ''
            if len(assets) > 0:
                asset = assets[0]
                asset_url = asset['browser_download_url']

            if asset_url == '':
                LOGGER.error("Update Manager: Assets object was null or empty")
                self._setup_msgbox(
                    "Error checking for Updates",
                    'No downloads available for this release. Redirect to website downloads page ?',
                    "Release API 'Assets' object was null or empty")
                self._msgbox.exec()
                if self._msgbox.clickedButton() == self._msgox_btn_ok:
                    QtGui.QDesktopServices.openUrl(
                        QtCore.QUrl(
                            "https://juliendz.github.io/imagius/#download"))
                return

            if latest_release > Version(
                    settings.app_version) and is_draft is False:
                LOGGER.info("Update found. New version(%s) is available" %
                            str(latest_release))
                self._setup_msgbox(
                    "Update info !", 'Update found. Latest version is (%s)' %
                    str(latest_release), None, "Download", "Later")
                self._msgbox.exec()
                if self._msgbox.clickedButton() == self._msgox_btn_ok:
                    QtGui.QDesktopServices.openUrl(
                        QtCore.QUrl(asset_url.toString()))
            else:
                LOGGER.info("No updates found! Already on latest release.")
                msgbox = QtWidgets.QMessageBox()
                msgbox.setIcon(QtWidgets.QMessageBox.Information)
                msgbox.setWindowTitle('Update Info')
                msgbox.setText("No updates found! Already on latest release.")
                msgbox.exec()
        else:
            LOGGER.error(
                "Update Manager: Unable to retrieve updates from release api (Error: %s)"
                % error_code)
            self._setup_msgbox(
                "Error checking for Updates",
                'Unable to load the release api. Redirect to website downloads page ?',
                'Network Request Error Code: %s' % error_code)
            self._msgbox.exec()
            if self._msgbox.clickedButton() == self._msgox_btn_ok:
                QtGui.QDesktopServices.openUrl(
                    QtCore.QUrl(
                        "https://juliendz.github.io/imagius/#download"))
Example #6
0
    def add_folder(self):
        """
        <TODO>
        """
        folder_path = QFileDialog.getExistingDirectory(self)
        folder_name = os.path.basename((folder_path))
        folder_id = self.folder_mgr.add_watched_folder(
            folder_path, folder_name)
        LOGGER.info('Added watched folder (fid:%s)' % folder_id)

        self.populate_folder_tree()
Example #7
0
    def delete_folder(self):
        selected = self.listView_FolderList.selectedIndexes()
        if len(selected) > 0:
            selected_index = selected[0]
            folder_id = selected_index.data(QtCore.Qt.UserRole + 1)
            self.folder_mgr.delete_watched_folder(folder_id)
            LOGGER.info('Deleted watched folder (fid:%s)' % folder_id)

            self.populate_folder_tree()
        else:
            QMessageBox.about(self, "No selection",
                              "Please select an entry to delete")
Example #8
0
    def edit_folder(self):
        selected = self.listView_FolderList.selectedIndexes()
        if len(selected) > 0:
            selected_index = selected[0]
            folder_id = selected_index.data(QtCore.Qt.UserRole + 1)

            new_folder_path = QFileDialog.getExistingDirectory(self)
            new_folder_name = os.path.basename((new_folder_path))
            self.folder_mgr.edit_watched_folder(
                folder_id, new_folder_path, new_folder_name)
            LOGGER.info('Edited watched folder (fid:%s)' % folder_id)

            self.populate_folder_tree()

        else:
            QMessageBox.about(self, "No selection",
                              "Please select an entry to edit")
Example #9
0
def upgrade_from_previous_versions(cur_version, meta_db_path):
    meta_db = dbmgr(meta_db_path)
    meta_db.connect()
    # Upgrade code to Version(0.8.1)
    if cur_version < Version('0.8.1'):
        LOGGER.info('Upgrading from Version:%s to Version:%s' %
                    (cur_version, '0.8.1'))

        queries = [
            'CREATE TEMPORARY TABLE scan_img_backup(a,b,c,d,e,f,g,h);',
            """INSERT INTO scan_img_backup
               SELECT id, abspath, name, thumb, sdid, mtime, integrity_check, serial FROM scan_img;
            """,
            'DROP TABLE scan_img;',
            """CREATE TABLE IF NOT EXISTS "scan_img" (
                `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
                `abspath` TEXT NOT NULL UNIQUE,
                `name` TEXT NOT NULL,
                `thumb` BLOB NOT NULL,
                `sdid` INTEGER NOT NULL DEFAULT 0,
                `mtime` INTEGER,
                `integrity_check` INTEGER,
                `serial` INTEGER,
                FOREIGN KEY(`sdid`) REFERENCES `scan_dir`(`id`) ON DELETE CASCADE )
            """,
            'INSERT INTO scan_img SELECT a,b,c,d,e,f,g,h FROM scan_img_backup;',
            'DROP TABLE scan_img_backup;',
        ]

        for query in queries:
            meta_db.run_query(query)
        meta_db.commit()

        cur_version = Version('0.8.1')

    meta_db.disconnect()
    return