Changeset 4184
- Timestamp:
- 08/26/08 06:33:40 (3 months ago)
- Files:
-
- gridmodifyplugin/0.11/gridmod/web_ui.py (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
gridmodifyplugin/0.11/gridmod/web_ui.py
r4126 r4184 8 8 from trac.core import * 9 9 from trac.perm import IPermissionRequestor 10 from trac.ticket import TicketSystem , Ticket10 from trac.ticket import TicketSystem 11 11 from trac.web.api import ITemplateStreamFilter 12 12 from trac.web.chrome import ITemplateProvider, add_script … … 14 14 from trac.util.datefmt import utc 15 15 from trac.ticket.notification import TicketNotifyEmail 16 from trac.ticket.model import Ticket 16 17 from genshi.filters.transform import Transformer 17 18 from genshi.builder import tag … … 47 48 id = req.args.get('ticket') 48 49 ticket = Ticket(self.env, id) 50 action = 'leave' 51 52 # Save the action controllers we need to call side-effects for before 53 # we save the changes to the ticket. 54 controllers = list(self._get_action_controllers(req, ticket, action)) 55 49 56 for field in TicketSystem(self.env).get_ticket_fields(): 50 57 val = req.args.get(field['name']) … … 52 59 ticket[field['name']] = val; 53 60 ticket.save_changes(author=req.authname, comment='updated by gridmod plugin') 54 tn = TicketNotifyEmail(self.env) 55 tn.notify(ticket, newticket=False, modtime=now) 56 # Add support for workflow actions 61 62 try: 63 tn = TicketNotifyEmail(self.env) 64 tn.notify(ticket, newticket=False, modtime=now) 65 except Exception, e: 66 self.log.info("Failure sending notification on change to " 67 "ticket #%s: %s" % (ticket.id, e)) 68 69 # After saving the changes, apply the side-effects. 70 for controller in controllers: 71 self.env.log.info('Side effect for %s' % 72 controller.__class__.__name__) 73 controller.apply_action_side_effects(req, ticket, action) 57 74 else: 58 75 raise Exception('Permission denied') … … 92 109 return stream 93 110 111 def _get_action_controllers(self, req, ticket, action): 112 """Generator yielding the controllers handling the given `action`""" 113 for controller in TicketSystem(self.env).action_controllers: 114 actions = [a for w,a in 115 controller.get_ticket_actions(req, ticket)] 116 if action in actions: 117 yield controller 94 118 95 119
