[WIP] Adding MessageBus
Review Request #9235 — Created Sept. 29, 2017 and discarded
Information | |
---|---|
nicho | |
Review Board | |
master | |
Reviewers | |
reviewboard, students | |
On the client side message requests can be registered at a desired time
interval. The minimum desired time interval is the interval in which
message requests are made to MessageBus, at url /messagebus/. There is
currently no handling of the payload response. AMessageRequest
called
ReviewRequestUpdatesMessageRequest
was created to handle storing
relevant data (namely the review request id), which is sent alongside the
associatedmessage_provider_id
as parameters of the request to the
message bus.On the server side, requests, identified by their
message_provider_id
,
pass their data to the appropriateMessageProvider
, which is responsible
for accumulating messages and writing the data to the payload. Currently,
a message provider has been created for review request updates, ultimately
to replace the existing functionality of the ReviewRequestUpdatesView.
This MessageProvider returns the exact same data as you would expect by
going to the url /r/<#>/_updates.
A
ReviewRequestUpdatesMessageRequest
was created and registered to the
client side message bus. The request is received by the server side
message bus, and the request arguments are passed to the
ReviewRequestUpdatesMessageProvider
. Any entries registered to the
message request have their payloads properly returned. Not providing an
entry will request all the entries. The data returned, which consists of
two payloads which match up exactly with what url/r/<#>/_updates
would
output (message bus is going to replace this, so consistency between the
two is important).
Description | From | Last Updated |
---|---|---|
F401 'django.conf.urls.patterns' imported but unused |
![]() |
|
F401 'reviewboard.messagebus.views' imported but unused |
![]() |
|
E302 expected 2 blank lines, found 1 |
![]() |
|
E302 expected 2 blank lines, found 1 |
![]() |
|
Col: 10 Expected an assignment or function call and instead saw an expression. |
![]() |
|
Col: 35 Expected '===' and instead saw '=='. |
![]() |
|
Col: 6 Missing semicolon. |
![]() |
|
F401 'django.conf.urls.patterns' imported but unused |
![]() |
|
F401 'reviewboard.messagebus.views' imported but unused |
![]() |
|
F401 'django.template.loader' imported but unused |
![]() |
|
E302 expected 2 blank lines, found 1 |
![]() |
|
E703 statement ends with a semicolon |
![]() |
|
E302 expected 2 blank lines, found 1 |
![]() |
|
E231 missing whitespace after ':' |
![]() |
|
Col: 29 Missing '()' invoking a constructor. |
![]() |
|
Col: 14 Missing 'new' prefix when invoking a constructor. |
![]() |
|
This file is missing a file-level docstring. |
|
|
F401 'djblets.registries.registry.ALREADY_REGISTERED' imported but unused |
![]() |
|
F401 'reviewboard.messagebus.provider.MessageProvider' imported but unused |
![]() |
|
E302 expected 2 blank lines, found 1 |
![]() |
|
E265 block comment should start with '# ' |
![]() |
|
E302 expected 2 blank lines, found 1 |
![]() |
|
Missing a class-level docstring. This class should inheirit from object. |
|
|
unicode. |
|
|
Remove this blank line. |
|
|
Blank line between these. |
|
|
We should use six.iteritems(obj) because in Python 2, dict.items returns a list instead of a generator. You can get six … |
|
|
Blank line between these. |
|
|
Missing a docstring. |
|
|
F821 undefined name 'payload' |
![]() |
|
E128 continuation line under-indented for visual indent |
![]() |
|
F401 'datetime' imported but unused |
![]() |
|
E231 missing whitespace after ':' |
![]() |
|
E127 continuation line over-indented for visual indent |
![]() |
|
F841 local variable 'x' is assigned to but never used |
![]() |
|
E303 too many blank lines (3) |
![]() |
|
F841 local variable 'x' is assigned to but never used |
![]() |
|
F401 'reviewboard.messagebus.views' imported but unused |
![]() |
|
This list should be kept in alphabetical order. |
|
|
Blank line between ) and {. Same for all cases below. |
|
|
Col: 49 Expected '===' and instead saw '=='. |
![]() |
|
Col: 22 Missing semicolon. |
![]() |
|
Space after //. Missing period. |
|
|
You can use an arrow function here, e.g. setTimeout(() => model._loadUpdates(), this._intervalMS); |
|
|
Col: 10 'MBRequest' is defined but never used. |
![]() |
|
This should be a member of the RB namespace e.g. RB.MessageBusRequest = function MessageBusRequest() {}; Also, this might be a … |
|
|
Col: 19 Missing semicolon. |
![]() |
|
Col: 25 Missing semicolon. |
![]() |
|
E302 expected 2 blank lines, found 1 |
![]() |
|
E265 block comment should start with '# ' |
![]() |
|
E302 expected 2 blank lines, found 1 |
![]() |
|
E302 expected 2 blank lines, found 1 |
![]() |
|
F401 'django.contrib.auth.decorators.login_required' imported but unused |
![]() |
|
F401 'django.utils.decorators.method_decorator' imported but unused |
![]() |
|
F401 'django.utils.six.moves.cStringIO as StringIO' imported but unused |
![]() |
|
F401 'reviewboard.reviews.views.ReviewRequestViewMixin' imported but unused |
![]() |
|
F401 'reviewboard.site.decorators.check_local_site_access' imported but unused |
![]() |
|
E128 continuation line under-indented for visual indent |
![]() |
|
F821 undefined name 'dateutil' |
![]() |
|
F821 undefined name 'is_aware' |
![]() |
|
F821 undefined name 'make_aware' |
![]() |
|
F821 undefined name 'utc' |
![]() |
|
F821 undefined name 'HttpResponseBadRequest' |
![]() |
|
F821 undefined name 'Http404' |
![]() |
|
F821 undefined name 'SiteConfiguration' |
![]() |
|
F821 undefined name 'get_last_line_number_in_diff' |
![]() |
|
F821 undefined name 'get_file_chunks_in_range' |
![]() |
|
F821 undefined name 'get_last_header_before_line' |
![]() |
|
F821 undefined name 'Site' |
![]() |
|
F821 undefined name 'exception_traceback_string' |
![]() |
|
F821 undefined name 'Site' |
![]() |
|
Col: 25 ['review_id'] is better written in dot notation. |
![]() |
|
E501 line too long (80 > 79 characters) |
![]() |
|
E127 continuation line over-indented for visual indent |
![]() |
|
E127 continuation line over-indented for visual indent |
![]() |
|
MBRequest doesn't seem to be a thing (here and elsewhere). Do you mean RB.MessageRequest? |
|
|
Col: 39 Missing semicolon. |
![]() |
|
F401 'django.utils.six' imported but unused |
![]() |
|
E128 continuation line under-indented for visual indent |
![]() |
|
E501 line too long (81 > 79 characters) |
![]() |
|
E265 block comment should start with '# ' |
![]() |
|
E501 line too long (81 > 79 characters) |
![]() |
|
E501 line too long (88 > 79 characters) |
![]() |
|
E303 too many blank lines (2) |
![]() |
|
F401 'django.http.Http404' imported but unused |
![]() |
|
E127 continuation line over-indented for visual indent |
![]() |
|
E265 block comment should start with '# ' |
![]() |
|
Col: 28 Missing semicolon. |
![]() |
|
E127 continuation line over-indented for visual indent |
![]() |
|
E128 continuation line under-indented for visual indent |
![]() |
Commit: |
|
||||
---|---|---|---|---|---|
Diff: |
Revision 2 (+156) |
Checks run (2 failed)
flake8
-
reviewboard/messagebus/urls.py (Diff revision 2) Show all issues -
reviewboard/messagebus/urls.py (Diff revision 2) F401 'reviewboard.messagebus.views' imported but unused
-
-
JSHint
-
reviewboard/static/rb/js/messagebus/test.js (Diff revision 2) Col: 10 Expected an assignment or function call and instead saw an expression.
-
reviewboard/static/rb/js/messagebus/test.js (Diff revision 2) Col: 35 Expected '===' and instead saw '=='.
-
Change Summary:
Changed how MessageBus works, and added more functionality.
Summary: |
|
||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Description: |
|
||||||||||||||||||||||||||||||||||||||||||
Testing Done: |
|
||||||||||||||||||||||||||||||||||||||||||
Commit: |
|
||||||||||||||||||||||||||||||||||||||||||
Diff: |
Revision 3 (+42) |
Checks run (2 failed)
flake8
-
reviewboard/messagebus/urls.py (Diff revision 3) F401 'django.conf.urls.patterns' imported but unused
-
reviewboard/messagebus/urls.py (Diff revision 3) F401 'reviewboard.messagebus.views' imported but unused
-
-
-
-
-
JSHint
-
reviewboard/static/rb/js/messagebus/test.js (Diff revision 3) Col: 29 Missing '()' invoking a constructor.
-
reviewboard/static/rb/js/messagebus/test.js (Diff revision 3) Col: 14 Missing 'new' prefix when invoking a constructor.
Change Summary:
Added the ability to register callbacks for message requests, and changed the payload format.
Commit: |
|
||||
---|---|---|---|---|---|
Diff: |
Revision 4 (+324) |
Checks run (2 failed)
flake8
-
reviewboard/messagebus/base.py (Diff revision 4) F401 'djblets.registries.registry.ALREADY_REGISTERED' imported but unused
-
reviewboard/messagebus/base.py (Diff revision 4) F401 'reviewboard.messagebus.provider.MessageProvider' imported but unused
-
-
-
-
-
reviewboard/messagebus/base.py (Diff revision 4) E128 continuation line under-indented for visual indent
-
-
-
reviewboard/messagebus/provider.py (Diff revision 4) E127 continuation line over-indented for visual indent
-
reviewboard/messagebus/provider.py (Diff revision 4) F841 local variable 'x' is assigned to but never used
-
-
reviewboard/messagebus/provider.py (Diff revision 4) F841 local variable 'x' is assigned to but never used
-
reviewboard/messagebus/urls.py (Diff revision 4) F401 'reviewboard.messagebus.views' imported but unused
JSHint
-
reviewboard/static/rb/js/messagebus/messageBus.js (Diff revision 4) Col: 49 Expected '===' and instead saw '=='.
-
-
reviewboard/static/rb/js/messagebus/messageBus.js (Diff revision 4) Col: 10 'MBRequest' is defined but never used.
-
-
-
-
-
reviewboard/messagebus/base.py (Diff revision 4) Missing a class-level docstring.
This class should inheirit from
object
. -
-
-
-
reviewboard/messagebus/base.py (Diff revision 4) We should use
six.iteritems(obj)
because in Python 2,dict.items
returns a list instead of a generator.You can get
six
from:from django.utils import six
-
-
-
-
reviewboard/static/rb/js/messagebus/messageBus.js (Diff revision 4) Blank line between
)
and{
. Same for all cases below. -
-
reviewboard/static/rb/js/messagebus/messageBus.js (Diff revision 4) You can use an arrow function here, e.g.
setTimeout(() => model._loadUpdates(), this._intervalMS);
-
reviewboard/static/rb/js/messagebus/messageBus.js (Diff revision 4) This should be a member of the
RB
namespace e.g.RB.MessageBusRequest = function MessageBusRequest() {};
Also, this might be a good place to use a Backbone model?
Change Summary:
Created a message provider to handle review request updates.
Description: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Testing Done: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Commit: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Diff: |
Revision 5 (+630) |
Checks run (2 failed)
flake8
-
-
-
-
-
reviewboard/messagebus/review.py (Diff revision 5) F401 'django.contrib.auth.decorators.login_required' imported but unused
-
reviewboard/messagebus/review.py (Diff revision 5) F401 'django.utils.decorators.method_decorator' imported but unused
-
reviewboard/messagebus/review.py (Diff revision 5) F401 'django.utils.six.moves.cStringIO as StringIO' imported but unused
-
reviewboard/messagebus/review.py (Diff revision 5) F401 'reviewboard.reviews.views.ReviewRequestViewMixin' imported but unused
-
reviewboard/messagebus/review.py (Diff revision 5) F401 'reviewboard.site.decorators.check_local_site_access' imported but unused
-
reviewboard/messagebus/review.py (Diff revision 5) E128 continuation line under-indented for visual indent
-
-
-
-
-
-
-
-
reviewboard/messagebus/review.py (Diff revision 5) F821 undefined name 'get_last_line_number_in_diff'
-
-
reviewboard/messagebus/review.py (Diff revision 5) F821 undefined name 'get_last_header_before_line'
-
-
-
JSHint
-
reviewboard/static/rb/js/messagebus/messageBus.js (Diff revision 5) Col: 25 ['review_id'] is better written in dot notation.
Change Summary:
Moved much of the entry update logic from the ReviewRequestPage model to the ReviewRequestUpdatesMessageRequest.
Commit: |
|
||||
---|---|---|---|---|---|
Diff: |
Revision 6 (+817 -167) |
Checks run (2 failed)
flake8
-
-
reviewboard/messagebus/review.py (Diff revision 6) E127 continuation line over-indented for visual indent
-
reviewboard/messagebus/review.py (Diff revision 6) E127 continuation line over-indented for visual indent
JSHint
-
-
reviewboard/static/rb/js/messagebus/messageBus.js (Diff revision 6) MBRequest doesn't seem to be a thing (here and elsewhere). Do you mean
RB.MessageRequest
?
Change Summary:
Finished the MessageProvider and MessageRequest for review request updates.
Testing Done: |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Commit: |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
Diff: |
Revision 7 (+892 -337) |
Checks run (2 failed)
flake8
-
-
reviewboard/messagebus/base.py (Diff revision 7) E128 continuation line under-indented for visual indent
-
-
-
-
-
-
-
reviewboard/messagebus/review.py (Diff revision 7) E127 continuation line over-indented for visual indent
-
JSHint
Change Summary:
Fixed ReviewBot complaints.
Commit: |
|
||||
---|---|---|---|---|---|
Diff: |
Revision 8 (+892 -337) |
Checks run (1 failed, 1 succeeded)
flake8
-
reviewboard/messagebus/base.py (Diff revision 8) E127 continuation line over-indented for visual indent
-
reviewboard/messagebus/review.py (Diff revision 8) E128 continuation line under-indented for visual indent
Change Summary:
Finished much of the integration of review request updates with message bus.
Commit: |
|
||||
---|---|---|---|---|---|
Diff: |
Revision 9 (+892 -338) |