def test_detail_dnshost_gui_actions(self):
        """
        Tests that repository detail component's presentation_agent works as
        expected, and that abstraction attributes are set correspondingly to
        GUI actions.
        """
        site = SiteConfigurationManager.get_blank_site()
        dnshost = site.dnshost
        control_agent = DetailDNSHostControlAgent(dnshost)
        presentation_agent = control_agent.get_presentation_agent()
        refresh_gui()

        # When name entry is set, the abstraction should have corresponding
        # value set
        for name in ('name', 'description'):
            presentation_agent[name].set_text('abc')
            refresh_gui()
            self.assertEquals(getattr(dnshost, name), 'abc',
                              'dnshost %s attribute is wrong: %s' % (name, getattr(dnshost, name)))

        # Comboboxes value should be reported to abstraction
        domain = SiteDefaultsManager.get_domains().keys()[0]
        platform = SiteDefaultsManager.get_platforms().keys()[0]

        for name, value in {'domain': domain, 'platform': platform}.items():
            presentation_agent.set_value(name, value)
            refresh_gui()
            self.assertEquals(getattr(dnshost, name), value,
                             'dnshost %s attribute is wrong' % name)
Example #2
0
def get_default_config_data():
    """
    Generates the default site used to initialize internal
    site structures
    """
    return {
        # General attributes
        'general' : {
            'id' : (None, int, 'Id should be a number'),
            'platform' : (SiteDefaultsManager.get_default_platform(),
                          SiteDefaultsManager.get_platforms().keys(),
                          'Unknown platform'),
            'domain' : (SiteDefaultsManager.get_default_domain(),
                        SiteDefaultsManager.get_domains().keys(),
                        'Unknown domain'),
            'name' : ('', '^[\d\w_-]*$', 'Name should be an alphanumeric string'),
            'description' : ('', None),
            'done' : (False, bool),
            },
        # Repository related attriutes
        'repository' : {
            'enabled' : (False, bool),
            'type' : (SiteDefaultsManager.get_default_repository_type(),
                      SiteDefaultsManager.get_repository_types().keys(),
                      'Unsupported RCS type'),
            'name' : ('', '^[\d\w_-]*$', 'Name should be an alphanumeric string or _, without spaces'),
            'done' : (False, bool)
            },
        # Sites related attributes (for each available platform)
        'website' : {
            'enabled' : (False, bool),
            'access' : (SiteDefaultsManager.get_default_site_access(),
                        SiteDefaultsManager.get_site_accesses().keys(),
                        'Unsupported access'),
            'maintenance' : (False, bool),
            'template' : ('standard',
                          SiteDefaultsManager.get_site_templates().keys(),
                          'Unsupported site template'),
            'done' : (False, bool)
            },
        # Databases related attributes (for each available platform)
        'database' : {
            'enabled' : (False, bool),
            'type' : (SiteDefaultsManager.get_default_database_type(),
                      SiteDefaultsManager.get_database_types().keys(),
                      'Unsupported database type'),
            'name' : ('', '^[a-z0-9_]+$', 'Name should be a simple alphanumeric string without spaces'),
            'username' : ('', '^[a-z0-9_]+$', 'Username should be a simple alphanumeric string without spaces'),
            'password' : ('', None),
            'done' : (False, bool)
            },
        }
Example #3
0
 def __init__(self, site, read_only=False):
     DetailBaseControlAgent.__init__(self)
     site.get_event_bus().subscribe(DataChangeEvent, self.load_widgets_data)
     self.set_site(site)
     self.set_read_only_flag(read_only)
     pa = DetailDNSHostPresentationAgent(self)
     self.set_presentation_agent(pa)
     # Loads comboboxes items
     pa.set_items('domain', SiteDefaultsManager.get_domains())
     pa.set_items('platform', SiteDefaultsManager.get_platforms())
     pa.get_event_bus().subscribe(UIWidgetEvent, self.widget_evt_callback)
     # Initializes widget values
     self.load_widgets_data()
    def test_detail_dnshost_abstraction_actions(self):
        """
        Tests that database detail component's abstractions changes are
        correctly reported to GUI.
        """
        site = SiteConfigurationManager.get_blank_site()
        dnshost = site.dnshost
        control_agent = DetailDNSHostControlAgent(dnshost)
        presentation_agent = control_agent.get_presentation_agent()
        refresh_gui()

        # All widgets should be enabled
        flags = {
            'name': True,
            'domain': True,
            'platform': True,
            'description': True
            }
        self.assert_widgets_sensitive_flag(presentation_agent, flags)

        # When a name or description is set, correpsonding widget
        # should follow
        for name in ('name', 'description'):
            setattr(dnshost, name, 'abc')
            refresh_gui()
            self.assertEquals(presentation_agent[name].get_text(), 'abc',
                             'dnshost %s widget is wrong' % name)

        # Comboboxes value should reflect abstraction changes
        domain = SiteDefaultsManager.get_domains().keys()[0]
        platform = SiteDefaultsManager.get_platforms().keys()[0]

        for name, value in {'domain': domain, 'platform': platform}.items():
            setattr(dnshost, name, value)
            refresh_gui()
            self.assertEquals(presentation_agent.get_combobox_selection(
                presentation_agent[name]), value,
                'dnshost %s widget selection is wrong' % name)

        # Tests that when done flag is set, allw widgets are disabled
        dnshost.done = True
        refresh_gui()

        # Tests widgets sensitivity after enablement
        flags = {
            'description': False,
            'name': False,
            'domain': False,
            'platform': False,
            }
        self.assert_widgets_sensitive_flag(presentation_agent, flags)
Example #5
0
    def __init__(self):
        """
        Initializes control agent.
        """
        BaseControlAgent.__init__(self)
        self._hosts = []
        self._filter_name = '*'
        self._filter_name_re = re.compile(r"^[\w\d\*_-]*$")
        self._filter_domain = '*'
        self._filter_domain_re = re.compile(r"^[\w\d\*\._-]*$")
        pa = ListSitesPresentationAgent(self)

        domains = SiteDefaultsManager.get_domains()
        domains['*'] = '*'
        pa.set_items('filter_domain', domains)
        pa.get_event_bus().subscribe(UIActionEvent, self.action_evt_callback)
        pa.get_event_bus().subscribe(UIWidgetEvent, self.widget_evt_callback)
        self.set_presentation_agent(pa)