Steve Kowalik has proposed merging 
lp:~stevenk/launchpad/kill-bugtask-launchbag-with-fire into lp:launchpad.

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)

For more details, see:
https://code.launchpad.net/~stevenk/launchpad/kill-bugtask-launchbag-with-fire/+merge/89357

ILaunchBag needs to die. This branch brings that one step closer to reality by 
removing its use from the BugTask views.
-- 
https://code.launchpad.net/~stevenk/launchpad/kill-bugtask-launchbag-with-fire/+merge/89357
Your team Launchpad code reviewers is requested to review the proposed merge of 
lp:~stevenk/launchpad/kill-bugtask-launchbag-with-fire into lp:launchpad.
=== modified file 'lib/lp/bugs/browser/bugtask.py'
--- lib/lp/bugs/browser/bugtask.py	2012-01-17 14:14:49 +0000
+++ lib/lp/bugs/browser/bugtask.py	2012-01-19 22:56:26 +0000
@@ -281,7 +281,6 @@
     )
 from lp.services.webapp.batching import TableBatchNavigator
 from lp.services.webapp.breadcrumb import Breadcrumb
-from lp.services.webapp.interfaces import ILaunchBag
 from lp.services.webapp.menu import structured
 
 
@@ -651,7 +650,7 @@
 
         # Make sure we always have the current bugtask.
         if not IBugTask.providedBy(context):
-            self.context = getUtility(ILaunchBag).bugtask
+            self.context = context.default_bugtask
         else:
             self.context = context
         list(getUtility(IPersonSet).getPrecachedPersonsFromIDs(
@@ -1216,9 +1215,9 @@
     return '_'.join(parts)
 
 
-def get_assignee_vocabulary_info(context):
+def get_assignee_vocabulary_info(context, user):
     """The vocabulary of bug task assignees the current user can set."""
-    if context.userCanSetAnyAssignee(getUtility(ILaunchBag).user):
+    if context.userCanSetAnyAssignee(user):
         vocab_name = 'ValidAssignee'
     else:
         vocab_name = 'AllUserTeamsParticipation'
@@ -1520,7 +1519,8 @@
             self.form_fields.get('assignee', False)):
             # Make the assignee field editable
             self.form_fields = self.form_fields.omit('assignee')
-            vocabulary, ignored = get_assignee_vocabulary_info(self.context)
+            vocabulary, ignored = get_assignee_vocabulary_info(
+                self.context, self.user)
             self.form_fields += formlib.form.Fields(PersonChoice(
                 __name__='assignee', title=_('Assigned to'), required=False,
                 vocabulary=vocabulary, readonly=False))
@@ -1658,8 +1658,7 @@
 
         if comment_on_change:
             bugtask.bug.newMessage(
-                owner=getUtility(ILaunchBag).user,
-                subject=bugtask.bug.followup_subject(),
+                owner=self.user, subject=bugtask.bug.followup_subject(),
                 content=comment_on_change)
 
         new_status = new_values.pop("status", missing)
@@ -1817,8 +1816,6 @@
                 self.request.response.setHeader('Content-type',
                     'application/json')
                 return dumps(None)
-            launchbag = getUtility(ILaunchBag)
-            launchbag.add(bug.default_bugtask)
             # If we are deleting the current highlighted bugtask via ajax,
             # we must force a redirect to the new default bugtask to ensure
             # all URLs and other client cache content is correctly refreshed.
@@ -2291,8 +2288,8 @@
         # XXX sinzui 2009-05-29 bug=381672: Extract the BugTaskListingItem
         # rules to a mixin so that MilestoneView and others can use it.
         self.request = request
+        self.user = request.user
         self.target_context = target_context
-        self.user = getUtility(ILaunchBag).user
         self.field_visibility_defaults = {
             'show_datecreated': False,
             'show_assignee': False,
@@ -3475,9 +3472,8 @@
 
     def latestBugTasks(self, quantity=5):
         """Return <quantity> latest bugs reported against this target."""
-        params = BugTaskSearchParams(orderby="-datecreated",
-                                     omit_dupes=True,
-                                     user=getUtility(ILaunchBag).user)
+        params = BugTaskSearchParams(
+            orderby="-datecreated", omit_dupes=True, user=self.user)
 
         tasklist = self.context.searchTasks(params)
         return tasklist[:quantity]
@@ -3765,11 +3761,8 @@
 
     @property
     def current_bugtask(self):
-        """Return the current `IBugTask`.
-
-        'current' is determined by simply looking in the ILaunchBag utility.
-        """
-        return getUtility(ILaunchBag).bugtask
+        """Return the current `IBugTask`."""
+        return self.context.default_bugtask
 
     def displayAlsoAffectsLinks(self):
         """Return True if the Also Affects links should be displayed."""
@@ -3942,8 +3935,7 @@
         delete_link = canonical_url(self.context, view_name='+delete')
         can_edit = check_permission('launchpad.Edit', self.context)
         bugtask_id = self.context.id
-        launchbag = getUtility(ILaunchBag)
-        is_primary = self.context.id == launchbag.bugtask.id
+        is_primary = self.context.id == self.context.default_bugtask.id
         self.data = dict(
             # Looking at many_bugtasks is an important optimization.  With
             # 150+ bugtasks, it can save three or four seconds of rendering
@@ -4153,7 +4145,7 @@
     def bugtask_config(self):
         """Configuration for the bugtask JS widgets on the row."""
         assignee_vocabulary, assignee_vocabulary_filters = (
-            get_assignee_vocabulary_info(self.context))
+            get_assignee_vocabulary_info(self.context, self.user))
         # If we have no filters or just the ALL filter, then no filtering
         # support is required.
         filter_details = []
@@ -4365,8 +4357,7 @@
         comment = data.get('comment', None)
         if comment is not None:
             self.context.bug.newMessage(
-                owner=getUtility(ILaunchBag).user,
-                subject=self.context.bug.followup_subject(),
+                owner=self.user, subject=self.context.bug.followup_subject(),
                 content=comment)
 
     @property

_______________________________________________
Mailing list: https://launchpad.net/~launchpad-reviewers
Post to     : launchpad-reviewers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~launchpad-reviewers
More help   : https://help.launchpad.net/ListHelp

Reply via email to