Skip to content
Branislav Blaskovic edited this page Oct 18, 2013 · 8 revisions

Welcome to the fedora-gooey-karma wiki!

Introduction to Fedora Gooey Karma

To start using Fedora Gooey Karma, adjust number of days you want packages to be scanned, your Fedora release and press button Reload packages.

FGK-homepage

On the left side you can see loaded packages which are from updates-testing repository. You can switch to the Favorite packages tab and add your favorite packages - they will be marked when they have Bodhi update installed.

FGK-homepage

If you are using some application right now and its package has update - it will be marked in *Currently running applications tab.

FGK-homepage

When you select package from the left list - the details will be shown on tab Info. The most important are bugs that should be fixed and available test cases. You can open these in your web browser with double click.

If you have selected some library it is useful to look for Relevant packages - the library can be used with some desktop application for example.

FGK-homepage

If you are done with testing switch to tab Comments. Use your FAS credentials to post comment for selected update.

FGK-homepage

There are also some tools to open current Bodhi update in web browser or to download source RPM of package. You can do this from Settings tab.

FGK-homepage

Under the hood

Fedora Gooey Karma is using Python 2.7 with PySide (Qt). Its GUI is created via QTCreator and hopefully will be rewritten to QML completely.

Feel free to contact me if you have some questions or fill in an issue.

Scheme

This is the basic scheme of application. PackagesWorker and BodhiWorker threads are running constantly. SendKarma thread is spawn right after clicking on Send comment button.

-----------------
| Main (thread) |
-----------------
  |
  |   ---------------------------
  |---| PackagesWorker (thread) |
  |   ---------------------------
  |
  |   -----------------------------
  |---| XY * BodhiWorker (thread) |
      -----------------------------
  |
  |   -----------------------------
  |---| SendKarma (thread)        |
      -----------------------------

List of classes and methods

# Source file: fedora-gooey-karma
class MainWindow(QtGui.QMainWindow)
    def __init__(self, parent=None)
        def increaseSize(event)
        def decreaseSize(event)
    def customEvent(self, event)
    def __tabside_changed(self, index)
    def __set_pkg_category(self, checked)
    def set_num_of_pkgs_to_process(self, num)
    def __remove_package_tabs(self)
    def __show_message_box_about(self)
    def add_status_item(self, item)
    def bodhi_process_result(self, result)
    def set_installed_packages(self, packages)
    def __load_and_set_fedora_releases(self)
    def __start_pkg_worker(self)
    def __available_pkg_list_loading_info(self)
    def installed_pkg_list_loading_info(self)
    def save_installed_pkg_list(self, pkg_object)
    def __set_search_text(self, text)
    def __decode_dict(self, dictionary, decoding='utf-8', data_type=str)
    def __send_comment(self)
    def sending_done(self, username, password)
    def __update_can_be_shown(self, update)
    def __populate_pkgList(self)
    def __show_installed(self)
    def __show_available(self)
    def get_bodhi_update(self, pkg=None)
    def __show_package_detail(self, pkg_item)
    def exit_threads(self)
def main()

# Source file: bodhiworker.py
class BodhiWorker(QtCore.QThread)
    def __init__(self, worker_name, queue, main_thread, parent=None)
    def run(self)
    def __parse_nvr(self, nvr)
    def __get_relevant_packages(self, package)
    def __bodhi_query_pkg(self, package)
    def __get_bugs_by_id(self, data)
    def __get_url(self, data)
    def __get_testcases(self, data)
    def __get_comments(self, data)
    def which(filename)
    def get_proc_list(self)

# Source file: browser.py
class WebBrowser
    def __init__(self, main)
    def show_bug_in_browser(self)
    def show_relevant_pkg_in_browser(self)
    def show_bodhi_update_in_browser(self)
    def download_source_rpm(self)
    def show_testcase_in_browser(self)

# Source file: config.py
class PackagesHolder
    def __init__(self)
    def __getitem__(self, key)
    def __iter__(self)
        class iterator(object)
            def __init__(self, obj)
            def __iter__(self)
            def next(self)
    def add_package(self, package)
    def remove_package(self, package)
class Config
    def __init__(self)
    def get_fas_name(self) return self.fas_name
    def get_fas_password(self) return self.__fas_password
    def set_fas_name(self, name) self.fas_name = str(name)
    def set_fas_password(self, password) self.__fas_password = str(password)
    def __verify_data(self)
    def load_config(self)
    def save_config(self)

# Source file: customgui.py
class CustomTreeWidgetItem(QtGui.QTreeWidgetItem)
    def __init__(self, parent=None)
    def __lt__(self, otherItem)

# Source file: idlequeuedispatcher.py
class ThreadDispatcher(QThread)
    def __init__(self, parent)
    def run(self)
    def stop(self)
class _Event(QEvent)
    def __init__(self, callback)

# Source file: idlequeue.py
def main_thread_call(func, *args, **kwargs)
    def idle()

# Source file: mainwindow_gui.py
class Ui_MainWindow(object)
    def setupUi(self, MainWindow)
    def retranslateUi(self, MainWindow)

# Source file: packagesworker.py
class PackagesWorker(QtCore.QThread)
    def __init__(self, queue, bodhi_workers_queue, bodhi_workers_count, main_thread, parent=None)
    def set_release(self, release)
    def run(self)
    def load_installed(self, releasever, max_days)

# Source file: sendkarma.py
class SendKarma(threading.Thread)
    def __init__(self, package, username, password, message, karma, main_thread, parent=None)
    def run(self)

# Source file: toolbox.py
class Toolbox
    def __init__(self, main)
    def __toolbox_current_tab(self)
    def negative_karma_clicked(self, item, column)
    def currently_running_clicked(self, item, column)
    def favorite_item_clicked(self, item, column)
    def move_toolbox_buttons(self, index)
    def config_add_package(self)
    def config_remove_package(self)
    def update_favorite_ignored_pkg_lists(self)
        def create_top_level_item(text, widget)