That fixed it, thanks! Now I get invalid SQL being executed, but that's a 
different problem.

Graeme


On Tuesday, 3 November 2015 19:33:23 UTC-5, Christian Hammond wrote:
>
> The extension ID has now changed, due to the new location of the 
> extension. You'll probably end up with two entries for this, and they may 
> conflict. Try going into the database editor in the admin UI, clicking 
> Registered Extensions, and deleting the old entry. Then re-run 'setup.py 
> develop' or 'install' or whatever for your extension, restart the server, 
> and see if the situation improves at all.
>
> Christian
>
> -- 
> Christian Hammond - chri...@beanbaginc.com <javascript:>
> Review Board - https://www.reviewboard.org
> Beanbag, Inc. - https://www.beanbaginc.com
>
> On Tue, Nov 3, 2015 at 4:17 PM, Graeme Perrow <graeme...@gmail.com 
> <javascript:>> wrote:
>
>> I moved the code into sapauth/extension/__init__.py, created an empty 
>> sapauth/__init__.py, and changed setup.py to:
>>
>> setup( name='sapauth',
>>        version='1.0',
>>        description='SAP Authentication backend for sareviews',
>>        author='Graeme Perrow',
>>        packages=['sapauth.extension'],
>>        entry_points={
>>           'reviewboard.extensions': 'sapauth = 
>> sapauth.extension:SAPExtension',
>>       }
>> )
>>
>> Now when I load the extension page, I see "The extension failed to load 
>> with the following error: " (followed by nothing). There is nothing in the 
>> log file relating to the extension.
>>
>>
>>
>> On Tuesday, 3 November 2015 18:19:37 UTC-5, Christian Hammond wrote:
>>>
>>> You'll need to move your module into a submodule of sap auth, like 
>>> sapauth.extension.
>>>
>>> Christian
>>>
>>>
>>> On Tuesday, November 3, 2015, Graeme Perrow <graeme...@gmail.com> wrote:
>>>
>>>>
>>>> Here is setup.py:
>>>>
>>>> from reviewboard.extensions.packaging import setup
>>>>
>>>> setup( name='sapauth',
>>>>        version='1.0',
>>>>        description='SAP Authentication backend for sareviews',
>>>>        author='Graeme Perrow',
>>>>        packages=['sapauth'],
>>>>        entry_points={
>>>>           'reviewboard.extensions': [
>>>>               'sapauth = sapauth:SAPExtension',
>>>>           ],
>>>>       }
>>>> )
>>>>
>>>>
>>>> And sapauth/__init__.py (with much of the code removed):
>>>>
>>>> import sys,urllib2,xml.sax
>>>> import logging
>>>> from django.conf import settings
>>>> from django.contrib.auth.models import User
>>>> from djblets.db.query import get_object_or_none
>>>>
>>>> from reviewboard.accounts.backends import AuthBackend
>>>> from reviewboard.extensions.base import Extension
>>>> from reviewboard.extensions.hooks import AuthBackendHook
>>>>
>>>> class sapauth(AuthBackend):
>>>>     name = 'SAP'
>>>>     backend_id = 'SAP_Auth_1.0'
>>>>     supports_registration = False
>>>>     supports_change_name = False
>>>>     supports_change_email = False
>>>>     supports_change_password = False
>>>>
>>>>     def authenticate(self, username, password):
>>>>         ...
>>>>     #
>>>>
>>>>     def get_user( self, user_id ):
>>>>         return get_object_or_none(User, pk=user_id)
>>>>     #
>>>>     
>>>>     def get_or_create_user(self, username, handler=None):
>>>>         ...
>>>> #
>>>>
>>>> class SAPExtension(Extension):
>>>>     def initialize(self):
>>>>         AuthBackendHook(self, sapauth)
>>>> #
>>>>
>>>>
>>>>
>>>> On Tuesday, 3 November 2015 16:29:55 UTC-5, Christian Hammond wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> I'd have to see the source of the extension to really be able to tell 
>>>>> you more, but it sounds like perhaps the extension or its registration 
>>>>> (in 
>>>>> setup.py) isn't using absolute module paths to refer to some module.
>>>>>
>>>>> Would you be able to show me how you're registering it in setup.py, 
>>>>> and the class attributes for your extension?
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Christian
>>>>>
>>>>> -- 
>>>>> Christian Hammond - chri...@beanbaginc.com
>>>>> Review Board - https://www.reviewboard.org
>>>>> Beanbag, Inc. - https://www.beanbaginc.com
>>>>>
>>>>> On Tue, Nov 3, 2015 at 12:23 PM, Graeme Perrow <graeme...@gmail.com> 
>>>>> wrote:
>>>>>
>>>>>> I am trying to create an authentication extension for reviewboard 
>>>>>> (running 2.0.18). I've followed the authentication backend instructions 
>>>>>> here 
>>>>>> <https://www.reviewboard.org/docs/manual/2.0/extending/auth-backends/#authentication-classes>
>>>>>>  and 
>>>>>> the installation instructions here 
>>>>>> <https://www.reviewboard.org/docs/manual/2.0/extending/extensions/distribution/#python-egg>.
>>>>>>  
>>>>>> But I'm obviously missing something. My extension shows up in the list 
>>>>>> of 
>>>>>> available extensions, but attempting to enable it results in a 
>>>>>> "Loading..." 
>>>>>> message that never goes away.
>>>>>>
>>>>>> If I look in the log file (specified in the Logging admin page), I 
>>>>>> see this exception:
>>>>>>
>>>>>> relative imports require the 'package' argument
>>>>>> Traceback (most recent call last):
>>>>>>   File 
>>>>>> "/usr/lib/python2.7/site-packages/django/core/handlers/base.py", line 
>>>>>> 112, 
>>>>>> in get_response
>>>>>>     response = wrapped_callback(request, *callback_args, 
>>>>>> **callback_kwargs)
>>>>>>   File 
>>>>>> "/usr/lib/python2.7/site-packages/django/views/decorators/cache.py", 
>>>>>> line 
>>>>>> 52, in _wrapped_view_func
>>>>>>     response = view_func(request, *args, **kwargs)
>>>>>>   File 
>>>>>> "/usr/lib/python2.7/site-packages/django/views/decorators/vary.py", line 
>>>>>> 19, in inner_func
>>>>>>     response = func(*args, **kwargs)
>>>>>>   File 
>>>>>> "/usr/lib/python2.7/site-packages/djblets/webapi/resources.py", line 
>>>>>> 497, 
>>>>>> in __call__
>>>>>>     request, method, view, api_format=api_format, *args, **kwargs)
>>>>>>   File 
>>>>>> "/usr/lib/python2.7/site-packages/djblets/webapi/resources.py", line 
>>>>>> 568, 
>>>>>> in call_method_view
>>>>>>     return view(request, *args, **kwargs)
>>>>>>   File 
>>>>>> "/usr/lib/python2.7/site-packages/djblets/webapi/resources.py", line 
>>>>>> 765, 
>>>>>> in put
>>>>>>     return self.update(request, *args, **kwargs)
>>>>>>   File 
>>>>>> "/usr/lib/python2.7/site-packages/djblets/webapi/decorators.py", line 
>>>>>> 117, 
>>>>>> in _call
>>>>>>     return view_func(*args, **kwargs)
>>>>>>   File 
>>>>>> "/usr/lib/python2.7/site-packages/djblets/webapi/decorators.py", line 
>>>>>> 138, 
>>>>>> in _checklogin
>>>>>>     return view_func(*args, **kwargs)
>>>>>>   File 
>>>>>> "/usr/lib/python2.7/site-packages/djblets/webapi/decorators.py", line 
>>>>>> 117, 
>>>>>> in _call
>>>>>>     return view_func(*args, **kwargs)
>>>>>>   File 
>>>>>> "/usr/lib/python2.7/site-packages/djblets/webapi/decorators.py", line 
>>>>>> 164, 
>>>>>> in _checkpermissions
>>>>>>     response = view_func(*args, **kwargs)
>>>>>>   File 
>>>>>> "/usr/lib/python2.7/site-packages/djblets/webapi/decorators.py", line 
>>>>>> 117, 
>>>>>> in _call
>>>>>>     return view_func(*args, **kwargs)
>>>>>>   File 
>>>>>> "/usr/lib/python2.7/site-packages/djblets/webapi/decorators.py", line 
>>>>>> 117, 
>>>>>> in _call
>>>>>>     return view_func(*args, **kwargs)
>>>>>>   File 
>>>>>> "/usr/lib/python2.7/site-packages/djblets/webapi/decorators.py", line 
>>>>>> 287, 
>>>>>> in _validate
>>>>>>     return view_func(*args, **new_kwargs)
>>>>>>   File 
>>>>>> "/usr/lib/python2.7/site-packages/djblets/extensions/resources.py", line 
>>>>>> 211, in update
>>>>>>     self._extension_manager.enable_extension(extension_id)
>>>>>>   File 
>>>>>> "/usr/lib/python2.7/site-packages/djblets/extensions/manager.py", line 
>>>>>> 310, 
>>>>>> in enable_extension
>>>>>>     extension = self._init_extension(ext_class)
>>>>>>   File 
>>>>>> "/usr/lib/python2.7/site-packages/djblets/extensions/manager.py", line 
>>>>>> 608, 
>>>>>> in _init_extension
>>>>>>     self._reset_templatetags_cache()
>>>>>>   File 
>>>>>> "/usr/lib/python2.7/site-packages/djblets/extensions/manager.py", line 
>>>>>> 667, 
>>>>>> in _reset_templatetags_cache
>>>>>>     get_templatetags_modules()
>>>>>>   File "/usr/lib/python2.7/site-packages/django/template/base.py", 
>>>>>> line 1292, in get_templatetags_modules
>>>>>>     import_module(templatetag_module)
>>>>>>   File "/usr/lib/python2.7/site-packages/django/utils/importlib.py", 
>>>>>> line 33, in import_module
>>>>>>     raise TypeError("relative imports require the 'package' argument")
>>>>>> TypeError: relative imports require the 'package' argument
>>>>>>
>>>>>> My actual extension is not listed in the call stack. What am I 
>>>>>> missing?
>>>>>>
>>>>>>
>>>>>> -- 
>>>>>> Supercharge your Review Board with Power Pack: 
>>>>>> https://www.reviewboard.org/powerpack/
>>>>>> Want us to host Review Board for you? Check out RBCommons: 
>>>>>> https://rbcommons.com/
>>>>>> Happy user? Let us know! https://www.reviewboard.org/users/
>>>>>> --- 
>>>>>> You received this message because you are subscribed to the Google 
>>>>>> Groups "reviewboard" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>> send an email to reviewboard...@googlegroups.com.
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>
>>>>>
>>>
>>> -- 
>>> -- 
>>> Christian Hammond - chri...@beanbaginc.com
>>> Review Board - https://www.reviewboard.org
>>> Beanbag, Inc. - https://www.beanbaginc.com
>>>
>>>
>

-- 
Supercharge your Review Board with Power Pack: 
https://www.reviewboard.org/powerpack/
Want us to host Review Board for you? Check out RBCommons: 
https://rbcommons.com/
Happy user? Let us know! https://www.reviewboard.org/users/
--- 
You received this message because you are subscribed to the Google Groups 
"reviewboard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to reviewboard+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to