Author: matevz
Date: Tue Apr 16 20:03:40 2013
New Revision: 1468583

URL: http://svn.apache.org/r1468583
Log:
add a warning if a ticket is assigned to non-existant user (other than the 
default one)

Modified:
    bloodhound/trunk/bloodhound_multiproduct/multiproduct/api.py

Modified: bloodhound/trunk/bloodhound_multiproduct/multiproduct/api.py
URL: 
http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_multiproduct/multiproduct/api.py?rev=1468583&r1=1468582&r2=1468583&view=diff
==============================================================================
--- bloodhound/trunk/bloodhound_multiproduct/multiproduct/api.py (original)
+++ bloodhound/trunk/bloodhound_multiproduct/multiproduct/api.py Tue Apr 16 
20:03:40 2013
@@ -32,10 +32,10 @@ from trac.env import IEnvironmentSetupPa
 from trac.perm import IPermissionRequestor, PermissionCache
 from trac.resource import IExternalResourceConnector, IResourceChangeListener,\
                           IResourceManager, ResourceNotFound
-from trac.ticket.api import ITicketFieldProvider
+from trac.ticket.api import ITicketFieldProvider, ITicketManipulator
 from trac.util.text import to_unicode, unquote_label, unicode_unquote
 from trac.util.translation import _, N_
-from trac.web.chrome import ITemplateProvider
+from trac.web.chrome import ITemplateProvider, add_warning
 from trac.web.main import FakePerm, FakeSession
 from trac.wiki.api import IWikiSyntaxProvider
 from trac.wiki.parser import WikiParser
@@ -74,7 +74,7 @@ class MultiProductSystem(Component):
     implements(IEnvironmentSetupParticipant, IExternalResourceConnector,
                IPermissionRequestor, IResourceChangeListener, IResourceManager,
                ISupportMultiProductEnvironment, ITemplateProvider, 
-               ITicketFieldProvider, IWikiSyntaxProvider)
+               ITicketFieldProvider, IWikiSyntaxProvider, ITicketManipulator)
 
     product_base_url = Option('multiproduct', 'product_base_url', '',
         """A pattern used to generate the base URL of product environments,
@@ -569,6 +569,22 @@ class MultiProductSystem(Component):
         yield ('global', self._format_link)
         yield ('product', self._format_link)
 
+    # ITicketManipulator methods
+    def validate_ticket(self, req, ticket):
+        # check whether the owner exists in db, add a warning if not
+        if ticket['owner'] != self.env.config.get('ticket', 'default_owner'):
+            owner = self.env.db_direct_query(
+                "SELECT sid FROM session WHERE sid=%s",
+                (ticket['owner'], ))
+            if not owner:
+                # Note: add_warning() is used intead of returning a list of
+                # error tuples, since the latter results in trac rendering
+                # errors (ticket's change.date is not populated)
+                add_warning(req, _('The user "%s" does not exist.' %
+                    ticket['owner']))
+        return []
+
+
     # Internal methods
 
     def _render_link(self, context, name, label, extra='', prefix=None):


Reply via email to