Changeset 3915

Show
Ignore:
Timestamp:
06/29/08 07:36:55 (2 months ago)
Author:
athomas
Message:

Added patch from gjo that adds INI options to block editing of some options and
treat some options as passwords.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • iniadminplugin/0.11/iniadmin/iniadmin.py

    r3024 r3915  
    1313 
    1414class IniAdminPlugin(Component): 
     15 
    1516    implements(ITemplateProvider, IAdminPanelProvider) 
     17 
     18    excludes = ListOption('iniadmin', 'excludes', 
     19                          'iniadmin:excludes,iniadmin:passwords', 
     20        doc="""Excludes this options. 
     21        Comma separated list as `section:name`. 
     22        """) 
     23 
     24    passwords = ListOption('iniadmin', 'passwords', 
     25                           'trac:database,notification:smtp_password', 
     26        doc="""Show input-type as password instead of text. 
     27        Comma separated list as `section:name`. 
     28        """) 
    1629 
    1730    # IAdminPageProvider methods 
     
    2639            raise TracError("Invalid section %s" % page) 
    2740 
     41        _exc = [name for section, name in 
     42                [opt.split(':') for opt in self.excludes] 
     43                if section == page] 
     44        _pwd = [name for section, name in 
     45                [opt.split(':') for opt in self.passwords] 
     46                if section == page] 
     47 
    2848        # Apply changes 
    2949        if req.method == 'POST': 
    3050            options = [option.name for (section, _), option in 
    31                        Option.registry.iteritems() if section == page] 
     51                       Option.registry.iteritems() if section == page and 
     52                       option.name not in _exc] 
    3253            modified = False 
    3354            for option, value in req.args.iteritems(): 
     
    4566 
    4667        options = sorted([option for (section, _), option in 
    47                           Option.registry.iteritems() if section == page], 
     68                          Option.registry.iteritems() if section == page and 
     69                          option.name not in _exc], 
    4870                         key=lambda a: a.name) 
    4971 
     
    6284                options.sort() 
    6385                option_data['options'] = options 
     86            elif type == 'text' and option.name in _pwd: 
     87                option_data['type'] = 'password' 
    6488            options_data.append(option_data) 
    6589 
  • iniadminplugin/0.11/iniadmin/templates/iniadmin.html

    r2259 r3915  
    3333                  <label><input type="radio" name="${option.name}" value="false" checked="${option.value == 'false' or None}" /> false</label> 
    3434                </div> 
     35                <div class="text" py:when="option.type == 'password'"> 
     36                  <input type="password" name="${option.name}" value="${option.value}" /> 
     37                </div> 
    3538                <div class="text" py:otherwise=""> 
    3639                  <input type="text" name="${option.name}" value="${option.value}" />