def associates(request, os_release, field): dajax = Dajax() db = pyfaf.storage.getDatabase() os_releases = None os_release_id = distro_release_id(db, *split_distro_release(os_release)) if os_release_id != -1: os_releases = [os_release_id] out = "<option value='*'>All Associates</option>" for associate in associates_list(db, os_releases): out += "<option value='%s'>%s</option>\n" % (str(associate.id), associate.name) dajax.assign('#id_%s' % (field), 'innerHTML', out) return dajax.json()
def __init__(self, db, request): ''' Builds choices according to user selection. ''' self.db = db super(OsAssociateComponentFilterForm, self).__init__() self.fields['os_release'].populate_choices(all_distros_with_all_releases(db)) self.fields['os_release'].widget.attrs['onchange'] = ( 'Dajaxice.pyfaf.hub.services.associates(Dajax.process' ',{"os_release":this.value,"field":"associate"})') # Set initial value for operating system release. if 'os_release' in request: self.fields['os_release'].try_to_select(request['os_release']) distro, release = split_distro_release(self.fields['os_release'].initial) self.os_release_id = distro_release_id(db, distro, release) self.fields['associate'].populate_choices(associates_list(db, [self.os_release_id] if self.os_release_id != -1 else None)) self.fields['associate'].widget.attrs['onchange'] = ( 'Dajaxice.pyfaf.hub.services.components(Dajax.process' ',{"os_release":$("#id_os_release")[0].value,"associate":this.value,"component_field":"component"})') if 'associate' in request: self.fields['associate'].try_to_select(request['associate']) # Find all components self.fields['component'].populate_choices(components_list(db, [self.os_release_id] if self.os_release_id != -1 else [], self.fields['associate'].get_selection())) if 'component' in request: self.fields['component'].try_to_select(request['component'])