def filter_stream(self, req, method, filename, stream, data):
     if req.authname == 'anonymous':
         return stream
     if not self.c_name or not self.c_version:
         return stream
     user_dis_obj = UserDisclaimerModel(self.env)
     valid = user_dis_obj.validate(req.authname, self.c_name, self.c_version)
     if valid:
         return stream
     obj = DisclaimerModel(self.env)
     disclaimer = obj.get_by_name_version(self.c_name,self.c_version)
     if not disclaimer:
         return stream
     (id, author, body) = disclaimer
     add_stylesheet(req, 'disclaimer/css/disclaimer.css')
     add_javascript(req, 'disclaimer/js/disclaimer.js')
     chrome = Chrome(self.env)
     template = chrome.load_template("disclaimer.html")
     data = dict(name=self.c_name, version=self.c_version, body=body)
     data = chrome.populate_data(req, data)
     stream |= Transformer('//div[@id="footer"]').append(template.generate(**data))
     return stream
 def render_admin_panel(self, req, cat, page, disclaimer_name):
     # Detail view?
     data = {}
     obj = DisclaimerModel(self.env)
     if disclaimer_name:
         name = disclaimer_name
         if req.method == 'POST':
             if req.args.get('save'):
                 new_name = req.args.get('name').strip()
                 if disclaimer_name != new_name:
                     obj.update(new_name, disclaimer_name)
                     name = new_name
                     add_notice(req, _('Disclaimer name renamed successfully.'))
             elif req.args.get('cancel'):
                 pass #just skip
             req.redirect(req.href.admin(cat, page))
         data = {'view': 'detail', 'name':name }
     else:
         if req.method == 'POST':
             if req.args.get('add') :
                 name = req.args.get('name').strip()
                 body = req.args.get('body').strip()
                 author = req.authname
                 obj.insert(name, body, author)
             elif req.args.get('remove'):
                 sel = req.args.get('sel')
                 if not sel:
                     raise TracError(_('No disclaimer selected'))
                 if not isinstance(sel, list):
                     sel = [sel]
                 for id in sel:
                     name, version = obj.get_by_id(id)
                     if name == self.c_name and version == self.c_version:
                         add_warning(req, _('You cannot delete disclaimer "%s"  with version:%s' %(name,version)))
                         continue
                     obj.delete(id)
                     add_notice(req, _('Disclaimer "%s" with version:%s deleted succesfully' %(name, version)))
             elif req.args.get('apply'):
                 id = req.args.get('default')
                 if id:
                     name, version = obj.get_by_id(id)
                     self.config.set('disclaimer', 'name', name)
                     self.config.set('disclaimer', 'version', version)
                     self.config.save()
                     add_notice(req, _('Disclaimer "%s" with version:%s saved succesfully' %(name, version)))
             req.redirect(req.href.admin(cat, page))
         data['disclaimers'] = obj.getall()
         row = obj.get_by_name_version(self.c_name,self.c_version)
         if row:
             data['default'] = row[0]
         else: 
            data['default'] = None
     Chrome(self.env).add_wiki_toolbars(req)
     return 'admin-disclaimer.html', data