MozReview: Move rbbz/auth to mozreview extension (Bug 1262548). r?smacleod draft
authorDavid Walsh <dwalsh@mozilla.com>
Fri, 29 Apr 2016 11:37:29 -0500
changeset 8483 1566a5911f1b607eff5f66d0f1cef160990e7726
parent 8482 e6536426265114d4877d70f92bd43920b3de0604
child 8484 898c76e634748699818422d5cb0fbe5205fe5658
push id917
push userbmo:dwalsh@mozilla.com
push dateThu, 09 Jun 2016 17:49:07 +0000
reviewerssmacleod
bugs1262548
MozReview: Move rbbz/auth to mozreview extension (Bug 1262548). r?smacleod MozReview-Commit-ID: 6aLiOLrRKRI
pylib/mozreview/mozreview/bugzilla/auth.py
pylib/mozreview/mozreview/extension.py
pylib/mozreview/mozreview/forms.py
pylib/mozreview/mozreview/resources/bugzilla_login.py
pylib/mozreview/mozreview/views.py
pylib/rbbz/rbbz/auth.py
pylib/rbbz/rbbz/extension.py
rename from pylib/rbbz/rbbz/auth.py
rename to pylib/mozreview/mozreview/bugzilla/auth.py
--- a/pylib/mozreview/mozreview/extension.py
+++ b/pylib/mozreview/mozreview/extension.py
@@ -6,17 +6,18 @@ import os
 
 from django.conf.urls import include, patterns, url
 
 from reviewboard.diffviewer.opcode_generator import (
     get_diff_opcode_generator_class,
     set_diff_opcode_generator_class,
 )
 from reviewboard.extensions.base import Extension, JSExtension
-from reviewboard.extensions.hooks import (HeaderDropdownActionHook,
+from reviewboard.extensions.hooks import (AuthBackendHook,
+                                          HeaderDropdownActionHook,
                                           HostingServiceHook,
                                           ReviewRequestDropdownActionHook,
                                           ReviewRequestFieldsHook,
                                           TemplateHook,
                                           URLHook)
 from reviewboard.reviews.builtin_fields import (TestingDoneField,
                                                 BranchField,
                                                 DependsOnField,
@@ -30,16 +31,17 @@ from mozreview.autoland.resources import
     autoland_enable_resource,
     autoland_request_update_resource,
     autoland_trigger_resource,
     try_autoland_trigger_resource,
 )
 from mozreview.batchreview.resources import (
     batch_review_resource,
 )
+from mozreview.bugzilla.auth import BugzillaBackend
 from mozreview.diffviewer.opcode_generator import (
     NoFilterDiffOpcodeGenerator
 )
 from mozreview.extra_data import (
     is_parent,
 )
 from mozreview.fields import (
     BaseCommitField,
@@ -186,16 +188,18 @@ class MozReviewExtension(Extension):
 
     middleware = [
         CorsHeaderMiddleware,
         MozReviewCacheDisableMiddleware,
         MozReviewUserProfileMiddleware,
     ]
 
     def initialize(self):
+        AuthBackendHook(self, BugzillaBackend)
+
         self.original_opcode_generator = get_diff_opcode_generator_class()
         set_diff_opcode_generator_class(NoFilterDiffOpcodeGenerator)
 
         initialize_pulse_handlers(self)
 
         URLHook(self,
                 patterns('', url(r'^mozreview/', include('mozreview.urls'))))
 
--- a/pylib/mozreview/mozreview/forms.py
+++ b/pylib/mozreview/mozreview/forms.py
@@ -1,21 +1,20 @@
+import os
+
 from django import forms
 from django.utils.translation import ugettext as _
 from djblets.extensions.forms import SettingsForm
 from djblets.siteconfig.forms import SiteSettingsForm
 
-import mozreview.extension
-
-
 class MozReviewSettingsForm(SettingsForm):
     config = forms.CharField(
         required=False,
         help_text=_('Configure this extension by editing ' +
-                    mozreview.extension.SETTINGS_PATH)
+                    os.path.join('/', 'mozreview-settings.json'))
     )
 
 
 class BugzillaAuthSettingsForm(SiteSettingsForm):
     auth_bz_xmlrpc_url = forms.CharField(
         label="Bugzilla XMLRPC URL",
         help_text="URL for your Bugzilla installation's XMLRPC interface",
         required=True)
--- a/pylib/mozreview/mozreview/resources/bugzilla_login.py
+++ b/pylib/mozreview/mozreview/resources/bugzilla_login.py
@@ -73,17 +73,17 @@ def auth_api_key(request, username, api_
         extra = {
             'web_login_needed': True,
             'login_url': login_url,
         }
         return WebAPIResponseError(request, LOGIN_FAILED,
                                    extra_params=extra)
 
     # Django housekeeping.
-    user.backend = 'rbbz.auth.BugzillaBackend'
+    user.backend = 'mozreview.bugzilla.auth.BugzillaBackend'
     return user
 
 
 class BugzillaAPIKeyLoginResource(WebAPIResource):
     """Resource for authenticating web API requests from Bugzilla API keys.
 
     Takes a Bugzilla username and API key and attempts to authenticate.
     """
--- a/pylib/mozreview/mozreview/views.py
+++ b/pylib/mozreview/mozreview/views.py
@@ -219,14 +219,14 @@ def get_bmo_auth_callback(request):
     assert user.email == bmo_username
 
     if not user.is_active:
         logger.warning('Validated API key but user %s is inactive.' %
                        bmo_username)
         return show_error_page(request)
 
     set_bugzilla_api_key(user, bmo_api_key)
-    user.backend = 'rbbz.auth.BugzillaBackend'
+    user.backend = 'mozreview.bugzilla.auth.BugzillaBackend'
     logger.info('BMO Auth callback succeeded for user: %s' % bmo_username)
     login(request, user)
     response = HttpResponseRedirect(redirect)
     response.delete_cookie('bmo_auth_secret')
     return response
--- a/pylib/rbbz/rbbz/extension.py
+++ b/pylib/rbbz/rbbz/extension.py
@@ -4,17 +4,17 @@
 
 import logging
 
 from django.contrib.sites.models import Site
 
 from djblets.siteconfig.models import SiteConfiguration
 
 from reviewboard.extensions.base import Extension
-from reviewboard.extensions.hooks import AuthBackendHook, SignalHook
+from reviewboard.extensions.hooks import SignalHook
 from reviewboard.reviews.signals import (
     reply_publishing,
     review_publishing,
 )
 
 from mozreview.bugzilla.client import Bugzilla
 from mozreview.bugzilla.errors import (
     bugzilla_to_publish_errors,
@@ -29,27 +29,23 @@ from mozreview.extra_data import (
     REVIEW_FLAG_KEY
 )
 from mozreview.models import (
     get_bugzilla_api_key,
 )
 from mozreview.rb_utils import (
     get_obj_url,
 )
-from rbbz.auth import BugzillaBackend
-
 
 logger = logging.getLogger(__name__)
 
 
 class BugzillaExtension(Extension):
 
     def initialize(self):
-        AuthBackendHook(self, BugzillaBackend)
-
         # Any abortable signal hooks that talk to Bugzilla should have
         # sandbox_errors=False, since we don't want to complete the action if
         # updating Bugzilla failed for any reason.
         SignalHook(self, review_publishing, on_review_publishing,
                    sandbox_errors=False)
         SignalHook(self, reply_publishing, on_reply_publishing,
                    sandbox_errors=False)