You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bloodhound.apache.org by gj...@apache.org on 2012/04/20 20:30:06 UTC
svn commit: r1328476 -
/incubator/bloodhound/trunk/bloodhound_multiproduct/multiproduct/ticket/web_ui.py
Author: gjm
Date: Fri Apr 20 18:30:05 2012
New Revision: 1328476
URL: http://svn.apache.org/viewvc?rev=1328476&view=rev
Log:
multiproduct: improving TicketModule modifications - towards #3
Modified:
incubator/bloodhound/trunk/bloodhound_multiproduct/multiproduct/ticket/web_ui.py
Modified: incubator/bloodhound/trunk/bloodhound_multiproduct/multiproduct/ticket/web_ui.py
URL: http://svn.apache.org/viewvc/incubator/bloodhound/trunk/bloodhound_multiproduct/multiproduct/ticket/web_ui.py?rev=1328476&r1=1328475&r2=1328476&view=diff
==============================================================================
--- incubator/bloodhound/trunk/bloodhound_multiproduct/multiproduct/ticket/web_ui.py (original)
+++ incubator/bloodhound/trunk/bloodhound_multiproduct/multiproduct/ticket/web_ui.py Fri Apr 20 18:30:05 2012
@@ -21,16 +21,19 @@
import re
from trac.core import TracError
+from trac.ticket.model import Ticket
from trac.ticket.web_ui import TicketModule
from trac.ticket.report import ReportModule
from trac.attachment import AttachmentModule
from trac.ticket.api import TicketSystem
-from trac.resource import Resource, get_resource_shortname
+from trac.resource import Resource, get_resource_shortname, ResourceNotFound
from trac.search import search_to_sql, shorten_result
from trac.util.datefmt import from_utimestamp
from trac.util.translation import _, tag_
from genshi.builder import tag
+from multiproduct.web_ui import ProductModule
+
REPORT_RE = re.compile(r'/report(?:/(?:([0-9]+)|-1))?$')
class ProductTicketModule(TicketModule):
@@ -42,14 +45,20 @@ class ProductTicketModule(TicketModule):
def process_request(self, req):
"""Override for TicketModule process_request"""
- if 'id' in req.args:
- pathinfo = req.path_info
- prod = req.args.get('product')
- if ((prod is not None and pathinfo == '/' + prod + '/newticket') or
- (pathinfo == '/newticket')):
- raise TracError(_("id can't be set for a new ticket request"))
+ ticketid = req.args.get('id')
+ productid = req.args.get('productid','')
+ ticket = Ticket(self.env, ticketid)
+
+ if ticketid:
+ if (req.path_info == '/products/' + productid + '/newticket' or
+ req.path_info == '/products'):
+ raise TracError(_("id can't be set for a new ticket request."))
+ ticket = Ticket(self.env, ticketid)
+ if productid and ticket['product'] != req.args.get('product',''):
+ msg = "Ticket %(id)s in product '%(prod)' does not exist."
+ raise ResourceNotFound(_(msg, id=ticketid, prod=productid),
+ _("Invalid ticket number"))
return self._process_ticket_request(req)
- #switch to the surrogate key
return self._process_newticket_request(req)
# INavigationContributor methods
@@ -61,8 +70,9 @@ class ProductTicketModule(TicketModule):
"""Overriding TicketModules New Ticket nav item"""
if 'TICKET_CREATE' in req.perm:
product = req.args.get('productid','')
- if product:
- href = req.href.__getattr__(product)('newticket')
+ if product and self.env.is_component_enabled(ProductModule):
+ # this path will only exist if ProductModule is active
+ href = req.href('products', product, 'newticket')
else:
href = req.href.newticket()
yield ('mainnav', 'newticket',