def index(self, **kwargs): kwargs.setdefault('tag', 'STABLE') value = dict((k, v) for k, v in kwargs.iteritems() if k in ['osmajor', 'tag', 'distro']) options = {} tags = DistroTag.used() options['tag'] = [('', 'None selected')] + \ [(tag.tag, tag.tag) for tag in tags] options['osmajor'] = [('', 'None selected')] + \ [(osmajor.osmajor, osmajor.osmajor) for osmajor in OSMajor.ordered_by_osmajor(OSMajor.in_any_lab())] options['distro'] = self._get_distro_options(**kwargs) options['lab_controller_id'] = [(None, 'None selected')] + \ LabController.get_all(valid=True) options['distro_tree_id'] = self._get_distro_tree_options(**kwargs) attrs = {} if not options['distro']: attrs['distro'] = dict(disabled=True) return dict(title=_(u'Reserve Workflow'), widget=self.widget, value=value, widget_options=options, widget_attrs=attrs)
def index(self, **kwargs): # CherryPy will give us distro_tree_id as a scalar if it only has one # value, but we want it to always be a list of int if not kwargs.get('distro_tree_id'): kwargs['distro_tree_id'] = [] elif not isinstance(kwargs['distro_tree_id'], list): kwargs['distro_tree_id'] = [int(kwargs['distro_tree_id'])] else: kwargs['distro_tree_id'] = [int(x) for x in kwargs['distro_tree_id']] # If we got a distro_tree_id but no osmajor or distro, fill those in # with the right values so that the distro picker is populated properly if kwargs['distro_tree_id']: distro_tree = DistroTree.by_id(kwargs['distro_tree_id'][0]) if not kwargs.get('distro'): kwargs['distro'] = distro_tree.distro.name if not kwargs.get('osmajor'): kwargs['osmajor'] = distro_tree.distro.osversion.osmajor.osmajor options = {} options['tag'] = [tag.tag for tag in DistroTag.used()] options['osmajor'] = [osmajor.osmajor for osmajor in OSMajor.ordered_by_osmajor(OSMajor.in_any_lab())] options['distro'] = self._get_distro_options( osmajor=kwargs.get('osmajor'), tag=kwargs.get('tag')) options['distro_tree_id'] = self._get_distro_tree_options( distro=kwargs.get('distro')) options['lab'] = [lc.fqdn for lc in LabController.query.filter(LabController.removed == None)] return dict(title=_(u'Reserve Workflow'), selection=kwargs, options=options)
def index(self, **kwargs): value = dict((k, v) for k, v in kwargs.iteritems() if k in ['osmajor', 'tag', 'distro']) options = {} tags = DistroTag.used() # It's important that 'None selected' is prepended # rather then appended to the list of tags, as that will ensure # it is the default option in the drop down. options['tag'] = [('', 'None selected')] + \ [(tag.tag, tag.tag) for tag in tags] options['osmajor'] = [('', 'None selected')] + \ [(osmajor.osmajor, osmajor.osmajor) for osmajor in OSMajor.ordered_by_osmajor(OSMajor.in_any_lab())] options['distro'] = self._get_distro_options(**kwargs) options['lab_controller_id'] = [(None, 'None selected')] + \ LabController.get_all(valid=True) options['distro_tree_id'] = self._get_distro_tree_options(**kwargs) attrs = {} if not options['distro']: attrs['distro'] = dict(disabled=True) return dict(title=_(u'Reserve Workflow'), widget=self.widget, value=value, widget_options=options, widget_attrs=attrs)
def index(self, **kwargs): # CherryPy will give us distro_tree_id as a scalar if it only has one # value, but we want it to always be a list of int if not kwargs.get('distro_tree_id'): kwargs['distro_tree_id'] = [] elif not isinstance(kwargs['distro_tree_id'], list): kwargs['distro_tree_id'] = [int(kwargs['distro_tree_id'])] else: kwargs['distro_tree_id'] = [ int(x) for x in kwargs['distro_tree_id'] ] # If we got a distro_tree_id but no osmajor or distro, fill those in # with the right values so that the distro picker is populated properly if kwargs['distro_tree_id']: distro_tree = DistroTree.by_id(kwargs['distro_tree_id'][0]) if not kwargs.get('distro'): kwargs['distro'] = distro_tree.distro.name if not kwargs.get('osmajor'): kwargs[ 'osmajor'] = distro_tree.distro.osversion.osmajor.osmajor options = {} options['tag'] = [tag.tag for tag in DistroTag.used()] options['osmajor'] = [ osmajor.osmajor for osmajor in OSMajor.ordered_by_osmajor(OSMajor.in_any_lab()) ] options['distro'] = self._get_distro_options( osmajor=kwargs.get('osmajor'), tag=kwargs.get('tag')) options['distro_tree_id'] = self._get_distro_tree_options( distro=kwargs.get('distro')) options['lab'] = [ lc.fqdn for lc in LabController.query.filter(LabController.removed == None) ] return dict(title=_(u'Reserve Workflow'), selection=kwargs, options=options)
def create_distro_tag(tag=None): if tag is None: tag = unique_name('tag%s') return DistroTag.lazy_create(tag=tag)
def by_tag(self, tag, *args, **kw): tag = tag.lower() search = DistroTag.list_by_tag(tag) tags = [match.tag for match in search] return dict(tags=tags)