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):