summaryrefslogtreecommitdiffstats
path: root/firstboot/gui/hubs/firstboot.py
blob: 762eab827b36976641d07ea0f1f9cd70a25afc92 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
from pyanaconda.ui.gui.hubs.summary import SummaryHub
from pyanaconda.ui.common import collect
import os

def collect_spokes(mask_paths):
    """Return a list of all spoke subclasses that should appear for a given
       category. Look for them in files imported as module_path % basename(f)

       :param mask_paths: list of mask, path tuples to search for classes
       :type mask_paths: list of (mask, path)

       :return: list of Spoke classes belonging to category
       :rtype: list of Spoke classes

    """
    spokes = []
    for mask, path in mask_paths:
        spokes.extend(collect(mask, path,
                              lambda obj: hasattr(obj, "firstboot")))

    print spokes
    return spokes


class FirstbootHub(SummaryHub):
    uiFile = "hubs/firstboot.glade"
    
    def _collectCategoriesAndSpokes(self):
        """collects categories and spokes to be displayed on this Hub

           :return: dictionary mapping category class to list of spoke classes
           :rtype: dictionary[category class] -> [ list of spoke classes ]
        """

        ret = {}
        
        # Collect all the categories this hub displays, then collect all the
        # spokes belonging to all those categories.
        spokes = [spoke for spoke in collect_spokes(self.paths["spokes"]) \
                        if hasattr(spoke, "firstboot") and spoke.firstboot()]

        for spoke in spokes:
            ret.setdefault(spoke.category, [])
            ret[spoke.category].append(spoke)

        return ret