Modify

#11516 closed enhancement (fixed)

Add notification configuration options to admin page

Reported by: asdorsey Owned by: rjollos
Priority: normal Component: TicketTeamDispatcherPlugin
Severity: normal Keywords:
Cc: rjollos Trac Release:

Description

I decided to attempt adding the new notification config options to the web admin page. Following is the diff from my environment.

A few notes:

  • The method I used to select/deselect the checkboxes is probably pretty hacky, but it's the only method I could find that worked well. I'm sure there's a better method that I have missed.
  • The field looks a little rough, but I couldn't find a decent way of arranging the options that didn't look bad. I will defer to someone who doesn't suck at web layouts for that.
  • I would have used the Option class in ttd/admin.py, but according to Trac #9967 that method only allows getting options, not setting them.

Please let me know if there are any changes that need to be made to clean this up.

  • ttd/admin.py

     
    3434        users = UserManager(self.env).get_active_users()
    3535        caption = self.get_caption()
    3636        teams = self.get_teams()
     37        notify_create = self.get_notify('create')
     38        notify_change = self.get_notify('change')
     39        notify_delete = self.get_notify('delete')
    3740               
    3841        if action:
     42            if action == 'notify':
     43                notify_create = self.checkbox_import(req.args.get('notify_create'))
     44                self.set_notify('create', notify_create)
     45
     46                notify_change = self.checkbox_import(req.args.get('notify_change'))
     47                self.set_notify('change', notify_change)
     48
     49                notify_delete = self.checkbox_import(req.args.get('notify_delete'))
     50                self.set_notify('delete', notify_delete)
     51
    3952            if action == 'rename':
    4053                caption = req.args.get('caption')
    4154                self.set_caption(caption)
     
    7891        return 'team_dispatcher_admin.html', {
    7992            'teams': teams,
    8093            'users': users,
    81             'caption': caption
     94            'caption': caption,
     95            'notify_create': notify_create,
     96            'notify_change': notify_change,
     97            'notify_delete': notify_delete
    8298        }
    8399
    84100    # INavigationContributor methods
     
    103119    def set_teams(self, teams):
    104120        self.config.set('ticket-custom', 'ttd.options', '|'.join(teams))
    105121        self.config.save()
     122
     123    def get_notify(self, config):
     124        return self.config.getbool('team-dispatcher', 'notify_on_' + config)
     125
     126    def set_notify(self, config, notify):
     127        self.config.set('team-dispatcher', 'notify_on_' + config, str(notify).lower())
     128        self.config.save()
     129
     130    def checkbox_import(self, checkbox):
     131        if checkbox == 'on':
     132            return True
     133        else:
     134            return False
  • ttd/templates/team_dispatcher_admin.html

     
    1313  <body>
    1414    <h2>Manage Ticket Teams</h2>
    1515
     16    <form id="notifications" class="addnew" method="post" action="">
     17      <fieldset>
     18        <legend>Notification Settings:</legend>
     19        <div class="field">
     20          <label>Notify on ticket creation:
     21            <py:choose test="notify_create">
     22              <input py:when="True" type="checkbox" name="notify_create" checked="on"/>
     23              <input py:when="False" type="checkbox" name="notify_create"/>
     24            </py:choose>
     25          </label>
     26        </div>
     27        <div class="field">
     28          <label>Notify on ticket modification:
     29            <py:choose test="notify_change">
     30              <input py:when="True" type="checkbox" name="notify_change" checked="on"/>
     31              <input py:when="False" type="checkbox" name="notify_change"/>
     32            </py:choose>
     33          </label>
     34        </div>
     35        <div class="field">
     36          <label>Notify on ticket deletion:
     37            <py:choose test="notify_delete">
     38              <input py:when="True" type="checkbox" name="notify_delete" checked="on"/>
     39              <input py:when="False" type="checkbox" name="notify_delete"/>
     40            </py:choose>
     41          </label>
     42        </div>
     43        <div class="buttons">
     44          <input type="hidden" name="action" value="notify" />
     45          <input type="submit" value="${_('Save')}" />
     46        </div>
     47      </fieldset>
     48    </form>
     49
    1650    <form id="modcaption" class="addnew" method="post" action="">
    1751      <fieldset>
    1852        <legend>Edit Caption:</legend>

Attachments (0)

Change History (3)

comment:1 Changed 11 months ago by rjollos

  • Owner changed from sinnvoller to rjollos
  • Status changed from new to accepted

Looks good! I'll test it out and try to commit later today.

comment:2 Changed 11 months ago by rjollos

In 13595:

0.3dev: Add notification configuration settings to the admin page. Refs #11516.

Patch by asdorsey.

comment:3 in reply to: ↑ description Changed 11 months ago by rjollos

  • Resolution set to fixed
  • Status changed from accepted to closed

Replying to asdorsey:

  • The field looks a little rough, but I couldn't find a decent way of arranging the options that didn't look bad. I will defer to someone who doesn't suck at web layouts for that.

I'm not particularly savvy at web layouts either, but I tweaked your patch a little before committing. Please let me know if you spot any areas that can be improved.

Add Comment

Modify Ticket

Action
as closed The owner will remain rjollos.
The resolution will be deleted. Next status will be 'reopened'.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.