Example #1
0
    def method_display(self,minion=None,module=None,method=None):
        
        global global_form
        fc = Overlord(minion)
        method_args = getattr(fc,module).get_method_args()
        
        if not method_args.values():
            print "Not registered method here"
            return dict(minion_form = None,minion=minion,module=module,method=method)

        minion_arguments = method_args[minion][method]['args']
        if minion_arguments:
            wlist_object = WidgetListFactory(minion_arguments,minion=minion,module=module,method=method)
            wlist_object = wlist_object.get_widgetlist_object()
            #create the validation parts for the remote form
            wf = WidgetSchemaFactory(minion_arguments)
            schema_man=wf.get_ready_schema()

            #create the final form
            minion_form = RemoteFormAutomation(wlist_object,schema_man)
            global_form = minion_form.for_widget
            #print global_form
            #i use that when something goes wrong to check the problem better to stay here ;)
            #self.minion_form =RemoteFormFactory(wlist_object,schema_man).get_remote_form()
            
            del wlist_object
            del minion_arguments

            return dict(minion_form =minion_form,minion=minion,module=module,method=method)
        else:
            return dict(minion_form = None,minion=minion,module=module,method=method)
Example #2
0
    def remote_widget_render(self):
        print "\n******testing minion : %s**********"%(self.minion)
        fc = Overlord(self.minion)
        modules = fc.system.list_modules()
        display_modules={}

        print "Getting the modules that has exported arguments"
        for module in modules.itervalues():
            for mod in module:
                #if it is not empty
                exported_methods = getattr(fc,mod).get_method_args()[self.minion]
                if exported_methods:
                    print "%s will be rendered"%(mod)
                    display_modules[mod]=exported_methods

        #do the rendering work here
        for module,exp_meths in display_modules.iteritems():
            for method_name,other_options in exp_meths.iteritems():
                minion_arguments = other_options['args']
                if minion_arguments:
                    wlist_object = WidgetListFactory(minion_arguments,minion=self.minion,module=module,method=method_name)
                    wlist_object = wlist_object.get_widgetlist_object()
                    #print wlist_object
                    wf = WidgetSchemaFactory(minion_arguments)
                    schema_man=wf.get_ready_schema()
                    minion_form = RemoteFormAutomation(wlist_object,schema_man)
                    print "%s.%s.%s rendered"%(self.minion,module,method_name)
Example #3
0
    def remote_widget_render(self):
        print "\n******testing minion : %s**********" % (self.minion)
        fc = Overlord(self.minion)
        modules = fc.system.list_modules()
        display_modules = {}

        print "Getting the modules that has exported arguments"
        for module in modules.itervalues():
            for mod in module:
                #if it is not empty
                exported_methods = getattr(fc,
                                           mod).get_method_args()[self.minion]
                if exported_methods:
                    print "%s will be rendered" % (mod)
                    display_modules[mod] = exported_methods

        #do the rendering work here
        for module, exp_meths in display_modules.iteritems():
            for method_name, other_options in exp_meths.iteritems():
                minion_arguments = other_options['args']
                if minion_arguments:
                    wlist_object = WidgetListFactory(minion_arguments,
                                                     minion=self.minion,
                                                     module=module,
                                                     method=method_name)
                    wlist_object = wlist_object.get_widgetlist_object()
                    #print wlist_object
                    wf = WidgetSchemaFactory(minion_arguments)
                    schema_man = wf.get_ready_schema()
                    minion_form = RemoteFormAutomation(wlist_object,
                                                       schema_man)
                    print "%s.%s.%s rendered" % (self.minion, module,
                                                 method_name)
Example #4
0
    def method_display(self, minion=None, module=None, method=None):
        """
        That method generates the input widget for givent method.
        """

        global global_form
        if self.func_cache["minion_name"] == minion:
            fc = self.func_cache["fc_object"]
        else:
            fc = Overlord(minion)
            self.func_cache["fc_object"] = fc
            self.func_cache["minion_name"] = minion
            # reset the children :)
            self.func_cache["module_name"] = module
            self.func_cache["modules"] = None
            self.func_cache["methods"] = None

        # get the method args
        method_args = getattr(fc, module).get_method_args()

        if not method_args.values():
            # print "Not registered method here"
            return dict(minion_form=None, minion=minion, module=module, method=method)

        minion_arguments = method_args[minion][method]["args"]
        # the description of the method we are going to display
        if method_args[minion][method].has_key("description"):
            description = method_args[minion][method]["description"]
        else:
            description = None
        if minion_arguments:
            wlist_object = WidgetListFactory(minion_arguments, minion=minion, module=module, method=method)
            wlist_object = wlist_object.get_widgetlist_object()
            # create the validation parts for the remote form
            wf = WidgetSchemaFactory(minion_arguments)
            schema_man = wf.get_ready_schema()

            # create the final form
            minion_form = RemoteFormAutomation(wlist_object, schema_man)
            global_form = minion_form.for_widget
            # print global_form
            # i use that when something goes wrong to check the problem better to stay here ;)
            # self.minion_form =RemoteFormFactory(wlist_object,schema_man).get_remote_form()

            del wlist_object
            del minion_arguments

            return dict(minion_form=minion_form, minion=minion, module=module, method=method, description=description)
        else:
            return dict(minion_form=None, minion=minion, module=module, method=method, description=description)
Example #5
0
    def method_display(self, minion=None, module=None, method=None):
        """
        That method generates the input widget for givent method.
        """

        global global_form
        if self.func_cache['minion_name'] == minion:
            fc = self.func_cache['fc_object']
        else:
            fc = Overlord(minion)
            self.func_cache['fc_object'] = fc
            self.func_cache['minion_name'] = minion
            #reset the children :)
            self.func_cache['module_name'] = module
            self.func_cache['modules'] = None
            self.func_cache['methods'] = None

        #get the method args
        method_args = getattr(fc, module).get_method_args()

        if not method_args.values():
            #print "Not registered method here"
            return dict(minion_form=None,
                        minion=minion,
                        module=module,
                        method=method)

        minion_arguments = method_args[minion][method]['args']
        #the description of the method we are going to display
        if method_args[minion][method].has_key('description'):
            description = method_args[minion][method]['description']
        else:
            description = None
        if minion_arguments:
            wlist_object = WidgetListFactory(minion_arguments,
                                             minion=minion,
                                             module=module,
                                             method=method)
            wlist_object = wlist_object.get_widgetlist_object()
            #create the validation parts for the remote form
            wf = WidgetSchemaFactory(minion_arguments)
            schema_man = wf.get_ready_schema()

            #create the final form
            minion_form = RemoteFormAutomation(wlist_object, schema_man)
            global_form = minion_form.for_widget
            #print global_form
            #i use that when something goes wrong to check the problem better to stay here ;)
            #self.minion_form =RemoteFormFactory(wlist_object,schema_man).get_remote_form()

            del wlist_object
            del minion_arguments

            return dict(minion_form=minion_form,
                        minion=minion,
                        module=module,
                        method=method,
                        description=description)
        else:
            return dict(minion_form=None,
                        minion=minion,
                        module=module,
                        method=method,
                        description=description)
Example #6
0
 def setUp(self):
     self.widget_factory = WidgetListFactory(self.get_test_default_args(),minion="myminion",module="mymodule",method="my_method")
Example #7
0
class TestWidgetListFactory(unittest.TestCase):
    
    def setUp(self):
        self.widget_factory = WidgetListFactory(self.get_test_default_args(),minion="myminion",module="mymodule",method="my_method")
    
        
    def tearDown(self):
        pass

    def test_default_args(self):
        compare_with = self.get_test_default_args()
        widget_list=self.widget_factory.get_widgetlist()
        
        #print "The widget list is like :",widget_list

        for argument_name,argument_options in compare_with.iteritems():
            assert widget_list.has_key(argument_name) == True
            #print "The argument name is :",argument_name
            #because some of them dont have it like boolean
            if argument_options.has_key('default'):
                assert argument_options['default'] == getattr(widget_list[argument_name],'default')

            if argument_options.has_key("description"):
                assert argument_options['description']==getattr(widget_list[argument_name],'help_text')

            if argument_options.has_key("options"):
                assert argument_options['options'] == getattr(widget_list[argument_name],"options")
            
        #that should be enough
    def test_get_widgetlist_object(self):
        compare_with = self.get_test_default_args()
        widget_list_object = self.widget_factory.get_widgetlist_object()
        
        #print widget_list_object
    
        all_fields = [getattr(field,"name") for field in widget_list_object]
        #print all_fields
        for argument_name in compare_with.keys():
            print argument_name
            assert argument_name in all_fields
            #print getattr(widget_list_object,argument_name)


    def test_remote_form(self):
        schema_factory = WidgetSchemaFactory(self.get_test_default_args())
        schema_validator=schema_factory.get_ready_schema()
        widget_list_object = self.widget_factory.get_widgetlist_object()
        remote_form = RemoteFormAutomation(widget_list_object,schema_validator)
        #print remote_form

    def test_remote_form_factory(self):
        from turbogears.view import load_engines
        load_engines()
       
        # WidgetsList object
        widget_list_object = self.widget_factory.get_widgetlist_object()
        #print widget_list_object
        remote_form = RemoteFormFactory(widget_list_object).get_remote_form()

        #it is a key,value dict
        widget_list=self.widget_factory.get_widgetlist()
        #print widget_list
        all_fields = [getattr(field,"name") for field in remote_form.fields]
        #print all_fields
        #will check if the remote form object hass all the names in it
        for argument_name in widget_list.items():
            argument_name in all_fields 


        #print remote_form.render()
    
    def get_test_default_args(self):
        return {
                'string_default':{
                    'type':'string',
                    'default':'default string',
                    'optional':False,
                    'description':'default description'
                    },
                'int_default':{
                    'type':'int',
                    'default':'default int',
                    'optional':False,
                    'description':'default description'
                   },
                #no sense to have default
                'boolean_default':{
                    'type':'boolean',
                    'optional':False,
                    'description':'default description'
                   },
                'float_default':{
                    'type':'float',
                    'default':'default float',
                    'optional':False,
                    'description':'default description'
                   
                    },
                'hash_default':{
                    'type':'hash',
                    'default':'default hash',
                    'optional':False,
                    'description':'default description'
                   
                    },
                'list_default':{
                    'type':'list',
                    'default':'default list',
                    'optional':False,
                    'description':'default description'
                   
                    },
                #will be converted to dropdown
                'special_string':{
                    'type':'string',
                    'default':'myfirst',
                    'options':['myfirst','mysecond','mythird'],
                    'optional':False,
                    'description':'default dropdown list'
                    }
                
                }