Changeset 104 for trunk/multiproduct/multiproduct
- Timestamp:
- 09/05/09 17:30:02 (16 months ago)
- Location:
- trunk/multiproduct
- Files:
-
- 2 added
- 3 modified
-
. (modified) (1 prop)
-
multiproduct/htdocs/js/ticket_depselect_fettler.js (added)
-
multiproduct/main.py (modified) (1 diff)
-
multiproduct/model.py (modified) (2 diffs)
-
multiproduct/ticket.py (added)
Legend:
- Unmodified
- Added
- Removed
-
trunk/multiproduct
-
Property
svn:ignore set
to
MultiProduct.egg-info
-
Property
svn:ignore set
to
-
trunk/multiproduct/multiproduct/main.py
r103 r104 11 11 12 12 from multiproduct.model import schema, schema_ver 13 14 __all__ = ['MultiProductPlugin'] 13 15 14 16 -
trunk/multiproduct/multiproduct/model.py
r103 r104 7 7 from datetime import datetime 8 8 9 from trac.config import Option10 9 from trac.core import * 11 10 from trac.db import Table, Column 12 11 from trac.resource import ResourceNotFound 13 from trac.ticket.api import TicketSystem , ITicketManipulator12 from trac.ticket.api import TicketSystem 14 13 from trac.ticket.model import simplify_whitespace 15 14 from trac.util import embedded_numbers, sorted … … 17 16 from trac.util.translation import _ 18 17 19 20 class TicketExtensions(Component):21 """Provides some extensions to the ticket model behaviour,22 including extra validation."""23 24 implements(ITicketManipulator)25 26 # Config options27 28 default_product = Option('ticket', 'default_product', '',29 """Default product for newly created tickets.""")30 31 # ITicketManipulator methods32 33 def prepare_ticket(self, req, ticket, fields, actions):34 return None35 36 def validate_ticket(self, req, ticket):37 db = self.env.get_db_cnx()38 39 # Default the owner field to the product owner, if left blank40 if ticket.values.get('product') and not ticket.values.get('owner'):41 try:42 product = Product(self.env, ticket['product'], db=db)43 if product.owner:44 ticket['owner'] = product.owner45 except ResourceNotFound, e:46 # No such product exists47 pass48 return []49 18 50 19 class Product(object):