Edgewall Software

Ticket #3873: warn_permission_exists-r5190.diff

File warn_permission_exists-r5190.diff, 3.1 KB (added by cboos, 21 months ago)

Display general warnings, and application to the problem discussed in this ticket.

  • trac/htdocs/css/trac.css

     
    466466div.system-message p { margin: 0; } 
    467467div.system-message p.system-message-title { font-weight: bold; } 
    468468 
     469#warning.system-message { background: #def; border: 2px solid #00d; } 
     470#warning.system-message li { list-style-type: square; } 
     471 
    469472#content.error #newticket form { display: inline; } 
    470473#content.error #newticket textarea { display: none; } 
    471474 
  • trac/admin/web_ui.py

     
    301301                req.perm.require(action) 
    302302                if (subject, action) not in all_permissions: 
    303303                    perm.grant_permission(subject, action) 
    304                 # TODO: else: req.warning('...') 
    305                 req.redirect(req.href.admin(cat, page)) 
     304                    req.redirect(req.href.admin(cat, page)) 
     305                else: 
     306                    req.warning('Permission "%s" was already granted to ' 
     307                                '"%s"' % (action, subject)) 
    306308 
    307309            # Add subject to group 
    308310            elif req.args.get('add') and subject and group: 
     
    311313                    req.perm.require(action) 
    312314                if (subject,group) not in all_permissions: 
    313315                    perm.grant_permission(subject, group) 
    314                 # TODO: else: req.warning('...') 
    315                 req.redirect(req.href.admin(cat, page)) 
     316                    req.redirect(req.href.admin(cat, page)) 
     317                else: 
     318                    req.warning('"%s" was already added to group "%s"' % 
     319                                (subject, group)) 
    316320 
    317321            # Remove permissions action 
    318322            elif req.args.get('remove') and req.args.get('sel'): 
  • trac/templates/layout.html

     
    5454      ${navigation('metanav')} 
    5555    </div> 
    5656    ${navigation('mainnav')} 
     57    <div id="warning" py:if="req and req.warnings" class="system-message"> 
     58      <strong>Warning:</strong> 
     59      <ul><li py:for="w in req.warnings">$w</li></ul> 
     60    </div> 
    5761 
    5862    <div id="main"> 
    5963      ${select('*|text()')} 
  • trac/web/api.py

     
    158158        self.href = Href(self.base_path) 
    159159        self.abs_href = Href(self.base_url) 
    160160 
     161        self.warnings = [] 
     162 
    161163    def __getattr__(self, name): 
    162164        """Performs lazy attribute lookup by delegating to the functions in the 
    163165        callbacks dictionary.""" 
     
    419421            data = data.encode(self._outcharset or 'utf-8') 
    420422        self._write(data) 
    421423 
     424    def warning(self, msg): 
     425        self.warnings.append(msg) 
     426 
    422427    # Internal methods 
    423428 
    424429    def _parse_args(self):