You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bloodhound.apache.org by as...@apache.org on 2013/07/12 10:51:54 UTC

svn commit: r1502480 - in /bloodhound/trunk/bloodhound_relations/bhrelations: api.py tests/web_ui.py web_ui.py

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: