Author: astaric Date: Fri Jul 12 08:51:54 2013 New Revision: 1502480 URL: http://svn.apache.org/r1502480 Log: Handling of cases when resource id cannot be constructed from resource_instance.
Refs: #588 Modified: bloodhound/trunk/bloodhound_relations/bhrelations/api.py bloodhound/trunk/bloodhound_relations/bhrelations/tests/web_ui.py bloodhound/trunk/bloodhound_relations/bhrelations/web_ui.py Modified: bloodhound/trunk/bloodhound_relations/bhrelations/api.py URL: http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_relations/bhrelations/api.py?rev=1502480&r1=1502479&r2=1502480&view=diff ============================================================================== --- bloodhound/trunk/bloodhound_relations/bhrelations/api.py (original) +++ bloodhound/trunk/bloodhound_relations/bhrelations/api.py Fri Jul 12 08:51:54 2013 @@ -445,6 +445,9 @@ class ResourceIdSerializer(object): #TODO: temporary workaround for the ticket specific behavior #change it to generic resource behaviour ticket = resource_instance + if ticket.id is None: + raise ValueError("Cannot get resource id for ticket " + "that does not exist yet.") nbhprefix = ticket["product"] resource_full_id = cls.RESOURCE_ID_DELIMITER.join( Modified: bloodhound/trunk/bloodhound_relations/bhrelations/tests/web_ui.py URL: http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_relations/bhrelations/tests/web_ui.py?rev=1502480&r1=1502479&r2=1502480&view=diff ============================================================================== --- bloodhound/trunk/bloodhound_relations/bhrelations/tests/web_ui.py (original) +++ bloodhound/trunk/bloodhound_relations/bhrelations/tests/web_ui.py Fri Jul 12 08:51:54 2013 @@ -120,7 +120,6 @@ class ResolveTicketIntegrationTestCase(B t1 = self._insert_and_load_ticket("Foo") t2 = self._insert_and_load_ticket("Bar") self.relations_system.add(t2, t1, 'duplicateof') - self.req.args['id'] = t2.id self.req.path_info = '/ticket/%d' % t2.id data = self.process_request() @@ -141,6 +140,15 @@ class ResolveTicketIntegrationTestCase(B self.assertEqual(t2['status'], 'closed') self.assertEqual(t2['resolution'], 'duplicate') + def test_post_process_request_does_not_break_ticket(self): + t1 = self._insert_and_load_ticket("Foo") + self.req.path_info = '/ticket/%d' % t1.id + self.process_request() + + def test_post_process_request_does_not_break_newticket(self): + self.req.path_info = '/newticket' + self.process_request() + def resolve_as_duplicate(self, ticket, duplicate_id): self.req.method = 'POST' self.req.path_info = '/ticket/%d' % ticket.id @@ -154,8 +162,10 @@ class ResolveTicketIntegrationTestCase(B return self.process_request() def process_request(self): - template, data, content_type = \ - TicketModule(self.env).process_request(self.req) + ticket_module = TicketModule(self.env) + + ticket_module.match_request(self.req) + template, data, content_type = ticket_module.process_request(self.req) template, data, content_type = \ RelationManagementModule(self.env).post_process_request( self.req, template, data, content_type) Modified: bloodhound/trunk/bloodhound_relations/bhrelations/web_ui.py URL: http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_relations/bhrelations/web_ui.py?rev=1502480&r1=1502479&r2=1502480&view=diff ============================================================================== --- bloodhound/trunk/bloodhound_relations/bhrelations/web_ui.py (original) +++ bloodhound/trunk/bloodhound_relations/bhrelations/web_ui.py Fri Jul 12 08:51:54 2013 @@ -134,10 +134,13 @@ class RelationManagementModule(Component if 'ticket' in data: ticket = data['ticket'] rls = RelationsSystem(self.env) - resid = ResourceIdSerializer.get_resource_id_from_instance( - self.env, ticket) + try: + resid = ResourceIdSerializer.get_resource_id_from_instance( + self.env, ticket) + except ValueError: + resid = None - if rls.duplicate_relation_type: + if rls.duplicate_relation_type and resid is not None: duplicate_relations = \ rls._select_relations(resid, rls.duplicate_relation_type) if duplicate_relations: