def filter_stream(self, req, method, filename, stream, data): if 'TICKET_ADMIN' in req.perm and req.path_info.startswith('/admin/ticket/components'): if data.get('components'): filter = Transformer('//form[@id="addcomponent"]/fieldset/div[@class="buttons"]') stream = stream | filter.before(tag.div("Default CC:", tag.br(), tag.input(type='text', name='defaultcc'), class_='field')) default_ccs = DefaultCC.select(self.env) stream = stream | Transformer('//table[@id="complist"]/thead/tr') \ .append(tag.th('Default CC')) filter = Transformer('//table[@id="complist"]/tbody') default_comp = self.config.get('ticket', 'default_component') for comp in data.get('components'): if comp.name == default_comp: default_tag = tag.input(type='radio', name='default', value=comp.name, checked='checked') else: default_tag = tag.input(type='radio', name='default', value=comp.name) if comp.name in default_ccs: default_cc = default_ccs[comp.name] else: default_cc = '' filter = filter.append(tag.tr(tag.td(tag.input(type='checkbox', name='sel', value=comp.name), class_='sel'), tag.td(tag.a(comp.name, href=req.href.admin('ticket', 'components') + '/' + comp.name), class_='name'), tag.td(comp.owner, class_='owner'), tag.td(default_tag, class_='default'), tag.td(default_cc, class_='defaultcc'))) return stream | filter elif data.get('component'): cc = DefaultCC(self.env, data.get('component').name) filter = Transformer('//form[@id="modcomp"]/fieldset/div[@class="buttons"]') filter = filter.before(tag.div("Default CC:", tag.br(), tag.input(type='text', name='defaultcc', value=cc.cc), class_='field')) \ .before(tag.input(type='hidden', name='old_name', value=cc.name)) return stream | filter return stream
def filter_stream(self, req, method, filename, stream, data): if 'TICKET_ADMIN' in req.perm: if req.path_info == '/admin/ticket/components' or req.path_info == '/admin/ticket/components/': components = data.get('components') # 'components' will be None if component with specified name already exists. if not components: return stream default_ccs = DefaultCC.select(self.env) stream = stream | Transformer('//table[@id="complist"]/thead/tr') \ .append(tag.th('Default CC')) filter = Transformer('//table[@id="complist"]/tbody') default_comp = self.config.get('ticket', 'default_component') for comp in components: if default_comp == comp.name: default_tag = tag.input(type='radio', name='default', value=comp.name, checked='checked') else: default_tag = tag.input(type='radio', name='default', value=comp.name) if comp.name in default_ccs: default_cc = default_ccs[comp.name] else: default_cc = '' filter = filter.append(tag.tr(tag.td(tag.input(type='checkbox', name='sel', value=comp.name), class_='sel'), tag.td(tag.a(comp.name, href=req.href.admin('ticket', 'components') + '/' + comp.name), class_='name'), tag.td(comp.owner, class_='owner'), tag.td(default_tag, class_='default'), tag.td(default_cc, class_='defaultcc'))) return stream | filter elif req.path_info.startswith('/admin/ticket/components/') and data.get('component'): cc = DefaultCC(self.env, data.get('component').name) filter = Transformer('//form[@id="modcomp"]/fieldset/div[@class="buttons"]') filter = filter.before(tag.div("Default CC:", tag.br(), tag.input(type="text", name="defaultcc", value=cc.cc), class_="field")) \ .before(tag.input(type='hidden', name='old_name', value=cc.name)) return stream | filter return stream
def filter_stream(self, req, method, filename, stream, data): if 'TICKET_ADMIN' in req.perm and \ req.path_info.startswith('/admin/ticket/components'): if data.get('component'): cc = DefaultCC(self.env, data.get('component').name) filter = Transformer('//form[@id="modcomp"]/fieldset' '/div[@class="field"][2]') filter = filter.after(tag.div("Default CC:", tag.br(), tag.input(type='text', name='defaultcc', value=cc.cc), class_='field')) \ .before(tag.input(type='hidden', name='old_name', value=cc.name)) return stream | filter else: filter = Transformer('//form[@id="addcomponent"]' '/fieldset/div[@class="buttons"]') stream |= filter.before(tag.div("Default CC:", tag.br(), tag.input(type='text', name='defaultcc'), class_='field')) default_ccs = DefaultCC.select(self.env) stream |= Transformer('//table[@id="complist"]/thead/tr') \ .append(tag.th('Default CC')) for i, comp in enumerate(data.get('components')): if comp.name in default_ccs: default_cc = default_ccs[comp.name] else: default_cc = '' filter = Transformer('//table[@id="complist"]' '/tbody/tr[%d]' % (i + 1)) stream |= filter.append(tag.td(default_cc, class_='defaultcc')) return stream return stream
def filter_stream(self, req, method, filename, stream, data): if 'TICKET_ADMIN' in req.perm and \ req.path_info.startswith('/admin/ticket/components'): if data.get('component'): cc = DefaultCC(self.env, data.get('component').name) filter = Transformer('//form[@class="mod"]/fieldset' '/div[@class="field"][2]') filter = filter.after(tag.div("Default CC:", tag.br(), tag.input(type='text', name='defaultcc', value=cc.cc), class_='field')) \ .before(tag.input(type='hidden', name='old_name', value=cc.name)) return stream | filter else: filter = Transformer('//form[@id="addcomponent"]' '/fieldset/div[@class="buttons"]') stream |= filter.before( tag.div("Default CC:", tag.br(), tag.input(type='text', name='defaultcc'), class_='field')) default_ccs = DefaultCC.select(self.env) stream |= Transformer('//table[@id="complist"]/thead' '/tr/th[3]') \ .after(tag.th('Default CC')) components = data.get('components') if components: func = self._inject_default_cc_cols( default_ccs, components) stream |= Transformer('//table[@id="complist"]' '/tbody/tr').apply(func) return stream return stream
def filter_stream(self, req, method, filename, stream, data): field_name = self._get_field_name(req.args) if 'TICKET_ADMIN' in req.perm and field_name and \ req.path_info.startswith('/admin/ticket'): if field_name in self._non_abstract_enums: field_objects = data.get(field_name + 's') else: field_objects = data.get('enums') default_ccs = DefaultCC.select(self.env, field_name) if field_objects: # list of field objects stream = stream | Transformer( '//table[@class="listing"]/thead/tr').append( tag.th('CC')) if field_name == 'component': transformer = Transformer('//table[@id="complist"]/tbody') default_comp = self.config.get( 'ticket', 'default_component') for idx, field_object in enumerate(field_objects): # Milestone object can be a tuple :/ try: field_object_name = field_object.name except AttributeError: field_object_name = field_object[0].name if field_object_name in default_ccs: default_cc = default_ccs[field_object_name] else: default_cc = '' # Annoyingly, we can't just append to the row if the # collection is components, it appears to blat it for # rendering later so you end up with no rows # This may be due to the collection being a generator, # but then again, who knows? if field_name == 'component': if default_comp == field_object_name: default_tag = tag.input( type='radio', name='default', value=field_object_name, checked='checked') else: default_tag = tag.input( type='radio', name='default', value=field_object_name) transformer = transformer.append( tag.tr( tag.td( tag.input(type='checkbox', name='sel', value=field_object_name), class_='sel'), tag.td( tag.a(field_object_name, href=req.href.admin( 'ticket', 'components') + '/' + \ field_object_name), class_='name'), tag.td(field_object.owner, class_='owner'), tag.td(default_tag, class_='default'), tag.td(default_cc, class_='defaultcc') ) ) else: stream = stream | Transformer( '//table[@class="listing"]/tbody/tr[%s]' % (idx+1,) ).append(tag.td(default_cc, class_='defaultcc')) if field_name == 'component': return stream | transformer else: # edit field object if field_name in self._non_abstract_enums: field_object = data.get(field_name) else: field_object = data.get('enum') if field_object: # Milestone object can be a tuple :/ try: field_object_name = field_object.name except AttributeError: field_object_name = field_object[0] if field_object_name in default_ccs: default_cc = default_ccs[field_object_name] else: default_cc = '' transformer = Transformer( '//form[@class="mod"]/fieldset/div[@class="buttons"]') transformer = transformer.before( tag.div(tag.label("Default CC:"), tag.br(), tag.input(type="text", name="defaultcc", value=default_cc), class_="field") ).before(tag.input(type='hidden', name='old_name', value=field_object_name)) return stream | transformer return stream