Add integration model and manager for third-party services framework
Review Request #6918 — Created Feb. 7, 2015 and discarded
This provides the integration base class, database model and manager for extensions to implement and register integrations.
Compared to the extension framework, these integration model will provide a way for users, such as local site administrator, to manage their own individiual integration. Third-party services will need to subclass the integration base class to provide the initialize and shutdown method for their services.
With the database model, multiple instances of the integration's configuration could be supported, and thus providing multiple configurations of the integration for a single web server.
All these configured integration will then be managed through the integration manager.
Added unit test for the integrations.
- Test manager on creating, deleting, toggling of configured integration.
- Test manager on handling of invalid configured integration.
Mannual testing with a dummy integration.
Unit tests pass.
Description | From | Last Updated |
---|---|---|
'django_reset' imported but unused |
reviewbot | |
'from settings_local import *' used; unable to detect undefined names |
reviewbot | |
'PIPELINE_CSS' imported but unused |
reviewbot | |
'PIPELINE_JS' imported but unused |
reviewbot | |
'django_reset' imported but unused |
reviewbot | |
'from settings_local import *' used; unable to detect undefined names |
reviewbot | |
'PIPELINE_CSS' imported but unused |
reviewbot | |
'PIPELINE_JS' imported but unused |
reviewbot | |
'django_reset' imported but unused |
reviewbot | |
'from settings_local import *' used; unable to detect undefined names |
reviewbot | |
'PIPELINE_CSS' imported but unused |
reviewbot | |
'PIPELINE_JS' imported but unused |
reviewbot | |
"Allows extensions to register and unregister service integrations." |
chipx86 | |
Two blank lines are needed here. |
chipx86 | |
Must be inserted in alphabetical order. |
chipx86 | |
When the imports can fit on one line, they should be on one line without parens. However, instead of importing … |
chipx86 | |
"registration" |
chipx86 | |
"unregistration" |
chipx86 | |
We don't want to introduce any new fixtures into the codebase. Instead, create the objects as you need them. See … |
chipx86 | |
Each of these should be documented, using this form: #: Single line comment myvar1 = ... #: Single-line summary #: … |
chipx86 | |
Blank line between these. |
chipx86 | |
Why is there a separate initialize method? Why can't subclass initialization be done in __init__? |
brennie | |
"URL" |
chipx86 | |
Two blank lines between these. |
chipx86 | |
No blank line here. |
brennie | |
"Return" instead of "Get". |
chipx86 | |
"Returns" instead of "Retrieves", "ID" instead of "id", and a period is needed. |
chipx86 | |
No blank line here. |
chipx86 | |
Blank line after class docstrings. |
chipx86 | |
Private functions should always come after all the public functions. |
chipx86 | |
This can be combined into one statement. |
chipx86 | |
Should use pk instead of id for model instances. |
chipx86 | |
How about just: "This configuration is already registered." |
chipx86 | |
"ID" |
chipx86 | |
This needs to not break loading the rest of the integrations. If an extension has been disabled, the ConfiguredIntegrations will … |
chipx86 | |
Missing a period. |
chipx86 | |
This would be better as: try: del self._config_instances[config_instance.pl] except KeyError: raise ... Also, note pk instead of id for model … |
chipx86 | |
Missing a trailing period. |
chipx86 | |
Trailing period. |
chipx86 | |
Change the get to a filter, to save an SQL query. This way, we don't have to fetch the entire … |
chipx86 | |
Trailing period. |
chipx86 | |
Trailing period. |
chipx86 | |
Trailing period. |
chipx86 | |
Trailing period. |
chipx86 | |
Trailing period. |
chipx86 | |
Trailing period. |
chipx86 | |
Should use six.itervalues(...) instead of calling values() on the dictionary. |
chipx86 | |
Trailing period. |
chipx86 | |
Needs a docstring. |
chipx86 | |
Must be in alphabetical order. |
chipx86 | |
Needs a docstring. |
chipx86 | |
Needs a docstring. This should use @cached_property instead of doing the hasattr trick. Search the codebase for the proper import … |
chipx86 | |
"has" access. |
chipx86 | |
Must be a single line. How about: "Return whether the user can modify this configuration." |
chipx86 | |
This needs to return something. |
chipx86 | |
Must be in alphabetical order. |
chipx86 | |
Trailing period. |
chipx86 | |
Multi-line unit test docstrings must be in this form: """First line second line. """ |
chipx86 | |
No blank line here. |
chipx86 | |
'django_reset' imported but unused |
reviewbot | |
'from settings_local import *' used; unable to detect undefined names |
reviewbot | |
'PIPELINE_CSS' imported but unused |
reviewbot | |
'PIPELINE_JS' imported but unused |
reviewbot | |
Col: 13 E123 closing bracket does not match indentation of opening bracket's line |
reviewbot | |
'django_reset' imported but unused |
reviewbot | |
'from settings_local import *' used; unable to detect undefined names |
reviewbot | |
'PIPELINE_JS' imported but unused |
reviewbot | |
'PIPELINE_CSS' imported but unused |
reviewbot | |
'django_reset' imported but unused |
reviewbot | |
'from settings_local import *' used; unable to detect undefined names |
reviewbot | |
'PIPELINE_JS' imported but unused |
reviewbot | |
'PIPELINE_CSS' imported but unused |
reviewbot | |
'reviewboard' imported but unused |
reviewbot | |
Col: 1 E302 expected 2 blank lines, found 1 |
reviewbot | |
Col: 5 E303 too many blank lines (2) |
reviewbot | |
'django_reset' imported but unused |
reviewbot | |
'from settings_local import *' used; unable to detect undefined names |
reviewbot | |
'PIPELINE_CSS' imported but unused |
reviewbot | |
'PIPELINE_JS' imported but unused |
reviewbot | |
'reviewboard' imported but unused |
reviewbot | |
'django_reset' imported but unused |
reviewbot | |
'from settings_local import *' used; unable to detect undefined names |
reviewbot | |
'PIPELINE_CSS' imported but unused |
reviewbot | |
'PIPELINE_JS' imported but unused |
reviewbot | |
'reviewboard' imported but unused |
reviewbot | |
This shouldn't be set here. Rather, Integrations should accept an extension in the constructor, but only if that specific integration … |
chipx86 | |
Each comment before an attribute should be in this form: #: Summary #: #: ... Note the #:. That will … |
chipx86 | |
Should be allow_local_sites. |
chipx86 | |
How about config_form? |
chipx86 | |
Instead of using join, we should just use a format string. |
chipx86 | |
"integration" |
chipx86 | |
"toggled" |
chipx86 | |
"Subclasses" ".. to shut down the integration and ..." |
chipx86 | |
"... to be toggled ..." |
chipx86 | |
No need for the None parameter. That's the default. |
chipx86 | |
I don't think we should have a load method, and we certainly shouldn't call it when initializing Review Board. It … |
chipx86 | |
Combine these conditionals. |
chipx86 | |
This is pretty redundant. We should have one or the other. |
chipx86 | |
"integration" |
chipx86 | |
This can be one statement. |
chipx86 | |
Swap these (alphabetical order). |
chipx86 | |
""" on the next line. |
chipx86 | |
Here too. Same below. |
chipx86 | |
'django_reset' imported but unused |
reviewbot | |
'from settings_local import *' used; unable to detect undefined names |
reviewbot | |
'PIPELINE_JS' imported but unused |
reviewbot | |
'PIPELINE_CSS' imported but unused |
reviewbot | |
"Create" |
chipx86 | |
'reviewboard' imported but unused |
reviewbot | |
'django_reset' imported but unused |
reviewbot | |
'from settings_local import *' used; unable to detect undefined names |
reviewbot | |
'PIPELINE_JS' imported but unused |
reviewbot | |
'PIPELINE_CSS' imported but unused |
reviewbot | |
'get_integration_manager' imported but unused |
reviewbot | |
'reviewboard' imported but unused |
reviewbot | |
'django_reset' imported but unused |
reviewbot | |
'from settings_local import *' used; unable to detect undefined names |
reviewbot | |
'PIPELINE_CSS' imported but unused |
reviewbot | |
'PIPELINE_JS' imported but unused |
reviewbot | |
'django_reset' imported but unused |
reviewbot | |
'from settings_local import *' used; unable to detect undefined names |
reviewbot | |
'PIPELINE_CSS' imported but unused |
reviewbot | |
'PIPELINE_JS' imported but unused |
reviewbot | |
Imports should come in alphabetical order. |
david | |
Should be in the imperative mood ("Wrap a callback ...") |
david | |
exc_info should be True, rather than 1 (we have 1 a bunch of other places, but I'm slowly cleaning those … |
david | |
This should use the same terminology as you changed above ("registration" rather than "initializing") |
david | |
This should use the same terminology as you changed above ("registration" rather than "initializing") |
david | |
Should be in the imperative mood ("Shut down...") |
david | |
Should be in the imperative mood ("Return the...") |
david | |
Should be in the imperative mood ("Return the...") |
david | |
Should be in the imperative mood ("Return the...") |
david | |
The logging methods will do a format operation internally, so you can pass in config_id as a parameter rather than … |
david | |
Should be in the imperative mood ("Return all...") |
david | |
Should be in the imperative mood ("Return the...") |
david | |
Should be in the imperative mood ("Return the...") |
david | |
Should be in the imperative mood ("Return...") |
david | |
Should be in the imperative mood ("Return...") |
david | |
'django_reset' imported but unused |
reviewbot | |
'from settings_local import *' used; unable to detect undefined names |
reviewbot | |
'PIPELINE_CSS' imported but unused |
reviewbot | |
'PIPELINE_JS' imported but unused |
reviewbot |
- Description:
-
This provides the integration base class, database model and manager for extensions to implement and register integrations.
Initial: February 8, 2015
- Added IntegrationHook in hooks.py
- Added integration class to be use as the base class for all integration
- Added manager class to manage all integrations
- Added ConfiguredIntegration model that stores the configuration of an integration
~ - Register integration in settings.py
~ - Registered integration in settings.py
- Summary:
-
[WIP] Add integration model and manager for third-party services frameworkAdd integration model and manager for third-party services framework
- Description:
-
This provides the integration base class, database model and manager for extensions to implement and register integrations.
Initial: February 8, 2015
- Added IntegrationHook in hooks.py
- Added integration class to be use as the base class for all integration
- Added manager class to manage all integrations
- Added ConfiguredIntegration model that stores the configuration of an integration
- Registered integration in settings.py
+ + Update: February 15, 2015
+ + - Added unit tests for IntegrationManager
+ - Added unit tests to extensions.test for IntegrationHook
+ - Added fixtures
- Testing Done:
-
~ Manual testing with a dummy integration
~ Manual testing with a dummy integration.
+ + Unit tests pass.
- Commit:
-
1299320179c17866161267d203cb93cd21a587764d035decd1e3a58d078af14f830c0ba759fe9e73
- Diff:
-
Revision 2 (+428 -1)
-
Tool: Pyflakes Processed Files: reviewboard/settings.py reviewboard/extensions/tests.py reviewboard/extensions/hooks.py reviewboard/integrations/models.py reviewboard/integrations/manager.py reviewboard/integrations/tests.py reviewboard/integrations/integration.py Ignored Files: reviewboard/integrations/fixtures/test_configs.json reviewboard/integrations/__init__.py Tool: PEP8 Style Checker Processed Files: reviewboard/settings.py reviewboard/extensions/tests.py reviewboard/extensions/hooks.py reviewboard/integrations/models.py reviewboard/integrations/manager.py reviewboard/integrations/tests.py reviewboard/integrations/integration.py Ignored Files: reviewboard/integrations/fixtures/test_configs.json reviewboard/integrations/__init__.py
-
-
-
-
- Commit:
-
4d035decd1e3a58d078af14f830c0ba759fe9e73d52d21a7e6ef28405240d07e4b1c722b5abed591
- Diff:
-
Revision 3 (+428 -1)
-
Tool: Pyflakes Processed Files: reviewboard/settings.py reviewboard/extensions/tests.py reviewboard/extensions/hooks.py reviewboard/integrations/models.py reviewboard/integrations/manager.py reviewboard/integrations/tests.py reviewboard/integrations/integration.py Ignored Files: reviewboard/integrations/fixtures/test_configs.json reviewboard/integrations/__init__.py Tool: PEP8 Style Checker Processed Files: reviewboard/settings.py reviewboard/extensions/tests.py reviewboard/extensions/hooks.py reviewboard/integrations/models.py reviewboard/integrations/manager.py reviewboard/integrations/tests.py reviewboard/integrations/integration.py Ignored Files: reviewboard/integrations/fixtures/test_configs.json reviewboard/integrations/__init__.py
-
-
-
-
- Commit:
-
d52d21a7e6ef28405240d07e4b1c722b5abed591791665e60fb1f6ef70731ce9fed0cb53b3b6f36f
- Diff:
-
Revision 4 (+427 -1)
-
Tool: Pyflakes Processed Files: reviewboard/settings.py reviewboard/extensions/tests.py reviewboard/extensions/hooks.py reviewboard/integrations/models.py reviewboard/integrations/manager.py reviewboard/integrations/tests.py reviewboard/integrations/integration.py Ignored Files: reviewboard/integrations/fixtures/test_configs.json reviewboard/integrations/__init__.py Tool: PEP8 Style Checker Processed Files: reviewboard/settings.py reviewboard/extensions/tests.py reviewboard/extensions/hooks.py reviewboard/integrations/models.py reviewboard/integrations/manager.py reviewboard/integrations/tests.py reviewboard/integrations/integration.py Ignored Files: reviewboard/integrations/fixtures/test_configs.json reviewboard/integrations/__init__.py
-
-
-
-
-
-
-
-
-
When the imports can fit on one line, they should be on one line without parens.
However, instead of importing
_integrations
, we should import a function that can return an integration with the given ID. -
-
-
We don't want to introduce any new fixtures into the codebase. Instead, create the objects as you need them.
See
reviewboard/testing/testcase.py
. -
Each of these should be documented, using this form:
#: Single line comment myvar1 = ... #: Single-line summary #: #: Description that spans #: multiple lines. myvar2 = ...
-
-
-
-
-
-
-
-
-
-
-
-
-
This needs to not break loading the rest of the integrations. If an extension has been disabled, the ConfiguredIntegrations will still be in the database, which is completely valid.
What I'd suggest is not erroring out if the integration is not registered. Instead, silently skip it.
-
-
This would be better as:
try: del self._config_instances[config_instance.pl] except KeyError: raise ...
Also, note
pk
instead ofid
for model instances.I'd change the test like I suggested above.
-
-
-
Change the
get
to afilter
, to save an SQL query. This way, we don't have to fetch the entire object before deleting it. -
-
-
-
-
-
-
-
-
-
-
-
Needs a docstring.
This should use
@cached_property
instead of doing thehasattr
trick. Search the codebase for the proper import statement. -
-
-
-
-
-
-
- Commit:
-
791665e60fb1f6ef70731ce9fed0cb53b3b6f36fbb05d3e087daed1eb9c8b08905da7c713d562a51
- Diff:
-
Revision 5 (+461 -2)
-
Tool: Pyflakes Processed Files: reviewboard/settings.py reviewboard/extensions/tests.py reviewboard/extensions/hooks.py reviewboard/integrations/models.py reviewboard/integrations/manager.py reviewboard/integrations/tests.py reviewboard/integrations/integration.py Ignored Files: reviewboard/integrations/__init__.py Tool: PEP8 Style Checker Processed Files: reviewboard/settings.py reviewboard/extensions/tests.py reviewboard/extensions/hooks.py reviewboard/integrations/models.py reviewboard/integrations/manager.py reviewboard/integrations/tests.py reviewboard/integrations/integration.py Ignored Files: reviewboard/integrations/__init__.py
-
-
-
-
-
- Commit:
-
bb05d3e087daed1eb9c8b08905da7c713d562a518955efcaad9674e4b65da6e164cc92ecfad9c963
- Diff:
-
Revision 6 (+460 -2)
-
Tool: Pyflakes Processed Files: reviewboard/settings.py reviewboard/extensions/tests.py reviewboard/extensions/hooks.py reviewboard/integrations/models.py reviewboard/integrations/manager.py reviewboard/integrations/tests.py reviewboard/integrations/integration.py Ignored Files: reviewboard/integrations/__init__.py Tool: PEP8 Style Checker Processed Files: reviewboard/settings.py reviewboard/extensions/tests.py reviewboard/extensions/hooks.py reviewboard/integrations/models.py reviewboard/integrations/manager.py reviewboard/integrations/tests.py reviewboard/integrations/integration.py Ignored Files: reviewboard/integrations/__init__.py
-
-
-
-
- Commit:
-
8955efcaad9674e4b65da6e164cc92ecfad9c9632d76fd290f9026538955d85ff2702561574c32ec
- Diff:
-
Revision 7 (+478 -2)
-
Tool: Pyflakes Processed Files: reviewboard/settings.py reviewboard/extensions/tests.py reviewboard/__init__.py reviewboard/accounts/backends.py reviewboard/integrations/models.py reviewboard/extensions/hooks.py reviewboard/integrations/manager.py reviewboard/integrations/tests.py reviewboard/integrations/integration.py Ignored Files: reviewboard/integrations/__init__.py Tool: PEP8 Style Checker Processed Files: reviewboard/settings.py reviewboard/extensions/tests.py reviewboard/__init__.py reviewboard/accounts/backends.py reviewboard/integrations/models.py reviewboard/extensions/hooks.py reviewboard/integrations/manager.py reviewboard/integrations/tests.py reviewboard/integrations/integration.py Ignored Files: reviewboard/integrations/__init__.py
-
-
-
-
-
-
-
- Commit:
-
2d76fd290f9026538955d85ff2702561574c32ec1f5a611c3101001debe91b0e3063613bd76416a3
- Diff:
-
Revision 8 (+478 -2)
-
Tool: PEP8 Style Checker Processed Files: reviewboard/settings.py reviewboard/extensions/tests.py reviewboard/__init__.py reviewboard/accounts/backends.py reviewboard/integrations/models.py reviewboard/extensions/hooks.py reviewboard/integrations/manager.py reviewboard/integrations/tests.py reviewboard/integrations/integration.py Ignored Files: reviewboard/integrations/__init__.py Tool: Pyflakes Processed Files: reviewboard/settings.py reviewboard/extensions/tests.py reviewboard/__init__.py reviewboard/accounts/backends.py reviewboard/integrations/models.py reviewboard/extensions/hooks.py reviewboard/integrations/manager.py reviewboard/integrations/tests.py reviewboard/integrations/integration.py Ignored Files: reviewboard/integrations/__init__.py
-
-
-
-
-
- Description:
-
This provides the integration base class, database model and manager for extensions to implement and register integrations.
Initial: February 8, 2015
- Added IntegrationHook in hooks.py
- Added integration class to be use as the base class for all integration
- Added manager class to manage all integrations
- Added ConfiguredIntegration model that stores the configuration of an integration
- Registered integration in settings.py
Update: February 15, 2015
- Added unit tests for IntegrationManager
- Added unit tests to extensions.test for IntegrationHook
- Added fixtures
+ + Update: March 29, 2015
+ + - Implemented common test method in testcase
+ - Modified permission for models
- Commit:
-
1f5a611c3101001debe91b0e3063613bd76416a3709a7e7548cddf0a611b3e01103c693fd118c992
- Diff:
-
Revision 9 (+507 -2)
-
Tool: PEP8 Style Checker Processed Files: reviewboard/testing/testcase.py reviewboard/settings.py reviewboard/extensions/tests.py reviewboard/__init__.py reviewboard/accounts/backends.py reviewboard/integrations/models.py reviewboard/extensions/hooks.py reviewboard/integrations/manager.py reviewboard/integrations/tests.py reviewboard/integrations/integration.py Ignored Files: reviewboard/integrations/__init__.py Tool: Pyflakes Processed Files: reviewboard/testing/testcase.py reviewboard/settings.py reviewboard/extensions/tests.py reviewboard/__init__.py reviewboard/accounts/backends.py reviewboard/integrations/models.py reviewboard/extensions/hooks.py reviewboard/integrations/manager.py reviewboard/integrations/tests.py reviewboard/integrations/integration.py Ignored Files: reviewboard/integrations/__init__.py
-
-
-
-
-
-
General note: The Description is the wrong place for the updates. Those belong in the draft banner at the top when posting a new change. The Description should be a commit-ready, full description of this change, useful for anyone to understand what this commit provides without knowing the rest of the work going on.
-
-
This shouldn't be set here. Rather, Integrations should accept an extension in the constructor, but only if that specific integration needs to.
-
Each comment before an attribute should be in this form:
#: Summary #: #: ...
Note the
#:
. That will let Sphinx (our docs generator) use the comments as documentation. -
-
-
-
-
-
-
-
-
I don't think we should have a
load
method, and we certainly shouldn't call it when initializing Review Board. It means an extra database query and setup work every timeinitialize
is called, which happens often enough.Instead, how about fetching integrations the first time they're needed for an Integration. That way, we don't have a database query unconditionally for all installs, but rather, only if there are integrations configured.
-
-
-
-
-
-
-
-
- Description:
-
This provides the integration base class, database model and manager for extensions to implement and register integrations.
~ Initial: February 8, 2015
~ Compared to the extension framework, these integration model will provide a way for users, such as local site administrator, to manage their own individiual integration. Third-party services will need to subclass the integration base class to provide the initialize and shutdown method for their services.
~ - Added IntegrationHook in hooks.py
~ With the database model, multiple instances of the integration's configuration could be supported, and thus providing multiple configurations of the integration for a single web server.
- - Added integration class to be use as the base class for all integration
- - Added manager class to manage all integrations
- - Added ConfiguredIntegration model that stores the configuration of an integration
- - Registered integration in settings.py
~ Update: February 15, 2015
~ All these configured integration will then be managed through the integration manager.
- - - Added unit tests for IntegrationManager
- - Added unit tests to extensions.test for IntegrationHook
- - Added fixtures
- - Update: March 29, 2015
- - - Implemented common test method in testcase
- - Modified permission for models
- Change Summary:
-
Fix review issues
- Commit:
-
709a7e7548cddf0a611b3e01103c693fd118c99290f5d8a4e3a602bfd4a77d1f4aa3304badadcb75
- Diff:
-
Revision 10 (+562 -2)
-
Tool: Pyflakes Processed Files: reviewboard/testing/testcase.py reviewboard/settings.py reviewboard/extensions/tests.py reviewboard/__init__.py reviewboard/accounts/backends.py reviewboard/integrations/models.py reviewboard/extensions/hooks.py reviewboard/integrations/manager.py reviewboard/integrations/tests.py reviewboard/integrations/integration.py Ignored Files: reviewboard/integrations/__init__.py
-
-
-
-
-
-
Tool: PEP8 Style Checker Processed Files: reviewboard/testing/testcase.py reviewboard/settings.py reviewboard/extensions/tests.py reviewboard/__init__.py reviewboard/accounts/backends.py reviewboard/integrations/models.py reviewboard/extensions/hooks.py reviewboard/integrations/manager.py reviewboard/integrations/tests.py reviewboard/integrations/integration.py Ignored Files: reviewboard/integrations/__init__.py
- Testing Done:
-
~ Manual testing with a dummy integration.
~ Tested with a dummy integration.
Unit tests pass.
- Commit:
-
90f5d8a4e3a602bfd4a77d1f4aa3304badadcb75145dd6db6d769a0728b5b34f9d185b8e0467f013
- Diff:
-
Revision 11 (+554 -2)
-
Tool: Pyflakes Processed Files: reviewboard/testing/testcase.py reviewboard/settings.py reviewboard/extensions/tests.py reviewboard/__init__.py reviewboard/accounts/backends.py reviewboard/integrations/models.py reviewboard/extensions/hooks.py reviewboard/integrations/manager.py reviewboard/integrations/tests.py reviewboard/integrations/integration.py Ignored Files: reviewboard/integrations/__init__.py Tool: PEP8 Style Checker Processed Files: reviewboard/testing/testcase.py reviewboard/settings.py reviewboard/extensions/tests.py reviewboard/__init__.py reviewboard/accounts/backends.py reviewboard/integrations/models.py reviewboard/extensions/hooks.py reviewboard/integrations/manager.py reviewboard/integrations/tests.py reviewboard/integrations/integration.py Ignored Files: reviewboard/integrations/__init__.py
-
-
-
-
-
-
- Testing Done:
-
~ Tested with a dummy integration.
~ Added unit test for the integrations.
+ + - Test manager on creating, deleting, toggling of configured integration.
+ - Test manager on handling of invalid configured integration.
+ + Mannual testing with a dummy integration.
Unit tests pass.
- Commit:
-
145dd6db6d769a0728b5b34f9d185b8e0467f013bdfd08f950d23f696b8776d8e033dc2b47fd965f
- Diff:
-
Revision 12 (+553 -2)
-
Tool: Pyflakes Processed Files: reviewboard/testing/testcase.py reviewboard/settings.py reviewboard/extensions/tests.py reviewboard/accounts/backends.py reviewboard/extensions/hooks.py reviewboard/integrations/models.py reviewboard/integrations/manager.py reviewboard/integrations/tests.py reviewboard/integrations/integration.py Ignored Files: reviewboard/integrations/__init__.py Tool: PEP8 Style Checker Processed Files: reviewboard/testing/testcase.py reviewboard/settings.py reviewboard/extensions/tests.py reviewboard/accounts/backends.py reviewboard/extensions/hooks.py reviewboard/integrations/models.py reviewboard/integrations/manager.py reviewboard/integrations/tests.py reviewboard/integrations/integration.py Ignored Files: reviewboard/integrations/__init__.py
-
-
-
-
- Commit:
-
bdfd08f950d23f696b8776d8e033dc2b47fd965fd0bd6c60c3d6fe5226dfc01dd62c64c43fd3da05
- Diff:
-
Revision 13 (+556 -2)
-
Tool: Pyflakes Processed Files: reviewboard/testing/testcase.py reviewboard/settings.py reviewboard/extensions/tests.py reviewboard/accounts/backends.py reviewboard/extensions/hooks.py reviewboard/integrations/models.py reviewboard/integrations/manager.py reviewboard/integrations/tests.py reviewboard/integrations/integration.py Ignored Files: reviewboard/integrations/__init__.py Tool: PEP8 Style Checker Processed Files: reviewboard/testing/testcase.py reviewboard/settings.py reviewboard/extensions/tests.py reviewboard/accounts/backends.py reviewboard/extensions/hooks.py reviewboard/integrations/models.py reviewboard/integrations/manager.py reviewboard/integrations/tests.py reviewboard/integrations/integration.py Ignored Files: reviewboard/integrations/__init__.py
-
-
-
-
-
-
-
-
exc_info
should beTrue
, rather than1
(we have 1 a bunch of other places, but I'm slowly cleaning those up). -
This should use the same terminology as you changed above ("registration" rather than "initializing")
-
This should use the same terminology as you changed above ("registration" rather than "initializing")
-
-
-
-
-
The logging methods will do a format operation internally, so you can pass in
config_id
as a parameter rather than formatting it yourself. -
-
-
-
-