Opened 16 years ago
Closed 14 years ago
#4631 closed enhancement (wontfix)
Integrating functionality of TypedTicketWorkflowPlugin into this plugin
Reported by: | anonymous | Owned by: | Eli Carter |
---|---|---|---|
Priority: | normal | Component: | AdvancedTicketWorkflowPlugin |
Severity: | normal | Keywords: | |
Cc: | Michał Małecki | Trac Release: | 0.11 |
Description
Do you think it would be possible to integrate the functionality of TypedTicketWorkflowPlugin into this plug-in - both plug-ins are not getting along with each other very well in my installation of TRAC:-( I was trying to integrate it myself, but it seems I'm not good enough in Python. BTW, your code was really very helpful in project I manage @ my corpo - very good work indeed.
Attachments (0)
Change History (4)
comment:1 follow-up: 2 Changed 16 years ago by
comment:2 Changed 16 years ago by
Replying to hju@jochenkuhl.de:
@anonymous
Did you mention the patch in #4547 and the additional code in #4548?
I've not yet installed the TypedTicketWorkflowPlugin, but it looks interesting and these patches do either.
no this comment is no mine, the patch is neither. thank you for your time and attention :-)
comment:3 follow-up: 4 Changed 16 years ago by
I wouldn't patch this plugin with the code from TypedTicketWorkflowPlugin since the author of that plugin did things very incorrectly.
I've gone through in my distribution and reconfigured the class to work the "proper way" inside the Trac plugin architecture and of course, it works perfectly with your plugin.
All you need to do is change his class to inherit your ticket base class and make a tiny modification to the get_ticket_actions method, as such:
class TicketWorkflowOpFilterType(TicketWorkflowOpBase): def get_ticket_actions(self, req, ticket): controller = ConfigurableTicketWorkflow(self.env) actions = controller.get_actions_by_operation_for_req( req, ticket, self._op_name) actions = self.filter_actions(actions, ticket) return actions def filter_actions(self, action, ticket): """Finds the actions that use this operation""" filterd_actions = [] for default, action_name in action: action_attributes = self.actions[action_name] if 'tickettype' in action_attributes: #TODO normalization this should be done only once required_types = [a.strip() for a in action_attributes['tickettype'].split(',')] if ticket.get_value_or_default('type') in required_types: filterd_actions.append((default, action_name)) else: filterd_actions.append((default, action_name)) return filterd_actions
This seems to work for me and it literally took 2 minutes to implement via pasting his plugin into yours and just modifying the class inheritance and that one chunk of code.
Regards
Note: I am on a different machine than where I have my source for this plugin, so I just copied and pasted the TypedTicketWorkflowPlugin into the editor here and changed like 3 lines - no warranty is implied here, but you get the idea)
comment:4 Changed 14 years ago by
Resolution: | → wontfix |
---|---|
Status: | new → closed |
Replying to jmartinez@absolutedata.com:
All you need to do is change his class to inherit your ticket base class and make a tiny modification to the get_ticket_actions method, as such:
...
Note: I am on a different machine than where I have my source for this plugin, so I just copied and pasted the TypedTicketWorkflowPlugin into the editor here and changed like 3 lines - no warranty is implied here, but you get the idea)
I don't see how that accomplishes the goal; I don't see how it hooks into anything. I've incorporated #4547, so I think things should work on this side. But I don't think the filtering functionality itself belongs in this plugin.
@anonymous
Did you mention the patch in #4547 and the additional code in #4548?
I've not yet installed the TypedTicketWorkflowPlugin, but it looks interesting and these patches do either.