Ticket #20: usermanagement.diff

File usermanagement.diff, 9.6 kB (added by charlie.clark@yellowtab.com, 3 years ago)

Basic support for user management via webadmin

  • webadmin/__init__.py

    old new  
    44from webadmin.perm import * 
    55from webadmin.plugin import * 
    66from webadmin.ticket import * 
     7from webadmin.user import * 
  • webadmin/ticket.py

    old new  
    3434 
    3535    def process_admin_request(self, req, cat, page, component): 
    3636        req.perm.assert_permission('TICKET_ADMIN') 
     37        roles = self.env.get_roles() 
     38        status = self.env.get_status() 
     39        req.hdf['admin.roles'] = roles 
     40        req.hdf['admin.status'] = status 
    3741         
    3842        # Detail view? 
    3943        if component: 
     
    4347                    comp.name = req.args.get('name') 
    4448                    comp.owner = req.args.get('owner') 
    4549                    comp.description = req.args.get('description') 
     50                    comp.role = req.args.get('role') 
     51                    comp.status = req.args.get('status') 
    4652                    comp.update() 
    4753                    req.redirect(self.env.href.admin(cat, page)) 
    4854                elif req.args.get('cancel'): 
     
    5157            req.hdf['admin.component'] = { 
    5258                'name': comp.name, 
    5359                'owner': comp.owner, 
    54                 'description': comp.description 
     60                'description': comp.description, 
     61                'role': comp.role, 
     62                'status': comp.status 
    5563            } 
     64             
    5665        else: 
    5766            if req.method == 'POST': 
    5867                # Add Component 
     
    6170                    comp.name = req.args.get('name') 
    6271                    if req.args.get('owner'): 
    6372                        comp.owner = req.args.get('owner') 
     73                    comp.role = req.args.get('role') 
     74                    comp.status = req.args.get('status') 
     75                    self.env.log.debug(str(req.args)) 
    6476                    comp.insert() 
    6577                    req.redirect(self.env.href.admin(cat, page)) 
    6678 
     
    8799                        req.redirect(self.env.href.admin(cat, page)) 
    88100 
    89101            default = self.config.get('ticket', 'default_component') 
     102             
    90103            req.hdf['admin.components'] = \ 
    91104                [{'name': c.name, 'owner': c.owner, 
    92105                  'is_default': c.name == default, 
    93                   'href': self.env.href.admin(cat, page, c.name) 
    94                  } for c in ticket.Component.select(self.env)] 
     106                  'href': self.env.href.admin(cat, page, c.name), 
     107                  'role': c.role, 
     108                  'status': c.status 
     109                 } for c in ticket.Component.select(self.env, roles=roles, status=status)] 
     110            req.hdf['admin.roles'] = roles 
    95111 
    96112 
    97113        restrict_owner = self.config.get('ticket', 'restrict_owner') 
     
    106122 
    107123    implements(IAdminPageProvider) 
    108124 
     125 
    109126    # IAdminPageProvider 
    110127    def get_admin_pages(self, req): 
    111128        if req.perm.has_permission('TICKET_ADMIN'): 
    112129            yield ('ticket', 'Ticket System', 'versions', 'Versions') 
    113130 
     131 
    114132    def process_admin_request(self, req, cat, page, version): 
    115133        req.perm.assert_permission('TICKET_ADMIN') 
     134        roles = self.env.get_roles() 
     135        status = self.env.get_status() 
     136        req.hdf['admin.roles'] = roles 
     137        req.hdf['admin.status'] = status 
    116138         
    117139        # Detail view? 
    118140        if version: 
     
    123145                    if req.args.get('time'): 
    124146                        ver.time =  util.parse_date(req.args.get('time')) 
    125147                    ver.description = req.args.get('description') 
     148                    ver.role = req.args.get('role') 
     149                    ver.status = req.args.get('status') 
    126150                    ver.update() 
    127151                    req.redirect(self.env.href.admin(cat, page)) 
    128152                elif req.args.get('cancel'): 
     
    131155            req.hdf['admin.version'] = { 
    132156                'name': ver.name, 
    133157                'time': ver.time and util.format_datetime(ver.time) or '', 
    134                 'description': ver.description 
     158                'description': ver.description, 
     159                'role': ver.role, 
     160                'status': ver.status 
    135161            } 
     162            req.hdf['admin.roles'] = roles 
     163            req.hdf['admin.status'] = status 
     164             
    136165        else: 
    137166            if req.method == 'POST': 
    138167                # Add Version 
     
    141170                    ver.name = req.args.get('name') 
    142171                    if req.args.get('time'): 
    143172                        ver.time = util.parse_date(req.args.get('time')) 
     173                    ver.role = req.args.get('role') 
     174                    ver.status = req.args.get('status') 
    144175                    ver.insert() 
    145176                    req.redirect(self.env.href.admin(cat, page)) 
    146177                          
     
    171202                [{'name': v.name, 
    172203                  'time': v.time and util.format_datetime(v.time) or '', 
    173204                  'is_default': v.name == default, 
    174                   'href': self.env.href.admin(cat, page, v.name) 
    175                  } for v in ticket.Version.select(self.env)] 
     205                  'href': self.env.href.admin(cat, page, v.name), 
     206                  'role': v.role, 
     207                  'status': v.status 
     208                 } for v in ticket.Version.select(self.env, roles=roles,  
     209                 status=status)] 
    176210 
    177211        return 'admin_version.cs', None 
    178212 
  • webadmin/templates/admin_version.cs

    old new  
    1313      var:admin.version.time ?>"></label> 
    1414   </div> 
    1515   <div class="field"> 
     16    <label>Role:<br /><?cs 
     17    call:hdf_select(admin.roles, "role", admin.version.role, 0) ?> 
     18    </label> 
     19   </div> 
     20   <div class="field"> 
     21    <label>Status:<br /><?cs 
     22    call:hdf_select(admin.status, "status", admin.version.status, 0) ?> 
     23    </label> 
     24   </div> 
     25   <div class="field"> 
    1626    <fieldset class="iefix"> 
    1727     <label for="description">Description (you may use <a tabindex="42" href="<?cs 
    1828       var:trac.href.wiki ?>/WikiFormatting">WikiFormatting</a> here):</label> 
     
    4151    <label>Time: <input type="text" name="time" value="<?cs 
    4252      var:admin.version.time ?>"></label> 
    4353   </div> 
     54   <div class="field"> 
     55    <label>Role:<br /><?cs 
     56    call:hdf_select(admin.roles, "role", admin.version.role, 0) ?> 
     57    </label> 
     58   </div> 
     59   <div class="field"> 
     60    <label>Status:<br /><?cs 
     61    call:hdf_select(admin.status, "status", admin.version.status, 0) ?> 
     62    </label> 
     63   </div> 
    4464   <div class="buttons"> 
    4565    <input type="submit" name="add" value="Add"> 
    4666   </div> 
     
    5070 if:len(admin.versions) ?><form method="POST"> 
    5171  <table class="listing" id="verlist"> 
    5272   <thead> 
    53     <tr><th class="sel">&nbsp;</th><th>Name</th> 
    54     <th>Time</th><th>Default</th></tr> 
     73    <tr><th class="sel">&nbsp;</th> 
     74    <th>Name</th> 
     75    <th>Time</th> 
     76    <th>Role</th> 
     77    <th>Status</th> 
     78    <th>Default</th></tr> 
    5579   </thead><tbody><?cs 
    5680   each:ver = admin.versions ?> 
    5781   <tr> 
    5882    <td><input type="checkbox" name="sel" value="<?cs var:ver.name ?>" /></td> 
    5983    <td><a href="<?cs var:ver.href ?>"><?cs var:ver.name ?></a></td> 
    6084    <td><?cs var:ver.time ?></td> 
     85    <td><?cs var:ver.role ?></td> 
     86    <td><?cs var:ver.status ?></td> 
    6187     <td class="default"><input type="radio" name="default" value="<?cs 
    6288       var:ver.name ?>"<?cs 
    6389       if:ver.is_default ?> checked="checked" <?cs /if ?>></td> 
  • webadmin/templates/admin_component.cs

    old new  
    1717     /if ?></label> 
    1818   </div> 
    1919   <div class="field"> 
     20    <label>Role:<br /><?cs 
     21    call:hdf_select(admin.roles, "role", admin.component.role, 0) ?> 
     22    </label> 
     23   </div> 
     24   <div class="field"> 
     25    <label>Status:<br /><?cs 
     26    call:hdf_select(admin.status, "status", admin.component.status, 0) ?> 
     27    </label> 
     28   </div> 
     29   <div class="field"> 
    2030    <fieldset class="iefix"> 
    2131     <label for="description">Description (you may use <a tabindex="42" href="<?cs 
    2232       var:trac.href.wiki ?>/WikiFormatting">WikiFormatting</a> here):</label> 
     
    4757     else ?><input type="text" name="owner" /><?cs 
    4858     /if ?></label> 
    4959   </div> 
     60   <div class="field"> 
     61    <label>Role:<br /><?cs 
     62    call:hdf_select(admin.roles, "role", "", 0) ?> 
     63    </label> 
     64   </div> 
     65   <div class="field"> 
     66    <label>Status:<br /><?cs 
     67    call:hdf_select(admin.status, "status", "", 0) ?> 
     68    </label> 
     69   </div> 
    5070   <div class="buttons"> 
    5171    <input type="submit" name="add" value="Add"> 
    5272   </div> 
     
    5676 if:len(admin.components) ?><form method="POST"> 
    5777  <table class="listing" id="complist"> 
    5878   <thead> 
    59     <tr><th class="sel">&nbsp;</th><th>Name</th> 
    60     <th>Owner</th><th>Default</th></tr> 
     79    <tr><th class="sel">&nbsp;</th> 
     80    <th>Name</th> 
     81    <th>Owner</th> 
     82    <th>Role</th> 
     83    <th>Status</th> 
     84    <th>Default</th></tr> 
    6185   </thead><?cs 
    6286   each:comp = admin.components ?> 
    6387    <tr> 
     
    6690     <td class="name"><a href="<?cs var:comp.href?>"><?cs 
    6791       var:comp.name ?></a></td> 
    6892     <td class="owner"><?cs var:comp.owner ?></td> 
     93     <td class="role"><?cs var:comp.role ?></td> 
     94     <td class="status"><?cs var:comp.status ?></td> 
    6995     <td class="default"><input type="radio" name="default" value="<?cs 
    7096       var:comp.name ?>"<?cs 
    7197       if:comp.is_default ?> checked="checked" <?cs /if ?>></td>