Proposed migration to django-modern-rpc v2.1.0#4451
Draft
atodorov wants to merge 1 commit into
Draft
Conversation
atodorov
force-pushed
the
migrate-django-modern-rpc-v2
branch
from
July 15, 2026 11:12
0663b08 to
4ed0291
Compare
atodorov
force-pushed
the
migrate-django-modern-rpc-v2
branch
from
July 15, 2026 11:13
a5444d9 to
c7681b4
Compare
atodorov
force-pushed
the
migrate-django-modern-rpc-v2
branch
8 times, most recently
from
July 15, 2026 11:51
a830c06 to
2f12a1b
Compare
atodorov
force-pushed
the
migrate-django-modern-rpc-v2
branch
6 times, most recently
from
July 15, 2026 12:05
01c778e to
ab6f4e8
Compare
dependabot
Bot
force-pushed
the
dependabot/pip/django-modern-rpc-2.1.0
branch
from
July 15, 2026 14:57
ebefdce to
61183ad
Compare
atodorov
force-pushed
the
migrate-django-modern-rpc-v2
branch
4 times, most recently
from
July 15, 2026 15:50
fda8bf8 to
14458be
Compare
atodorov
force-pushed
the
migrate-django-modern-rpc-v2
branch
from
July 15, 2026 16:01
b2d288c to
bb9c8f2
Compare
atodorov
force-pushed
the
migrate-django-modern-rpc-v2
branch
from
July 15, 2026 16:01
e80b481 to
821e82a
Compare
atodorov
force-pushed
the
migrate-django-modern-rpc-v2
branch
19 times, most recently
from
July 15, 2026 17:59
ece9447 to
6832163
Compare
atodorov
force-pushed
the
migrate-django-modern-rpc-v2
branch
4 times, most recently
from
July 16, 2026 09:05
cb786af to
c636371
Compare
- refactor the @rpc_method decorator and how API methods are registered - adjust how authentication and permissions are checked to account for the new version of the library - update custom linters in kiwi_lint/ to account for new decorators structure
atodorov
force-pushed
the
migrate-django-modern-rpc-v2
branch
from
July 16, 2026 13:19
b1a6f0f to
e9285f5
Compare
This was referenced Jul 16, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Proposed changes for django-modern-rpc v1.x → v2.1.0
This PR shows the changes needed to make Kiwi TCMS compatible with
django-modern-rpc v2.1.0 (from PR #4378).
This is a DRAFT proposal. The library has NOT been upgraded yet
in requirements/base.txt — that is done in the dependabot branch.
What changed in the library
django-modern-rpc v2.0+ is a complete architecture redesign:
RPCEntryPoint.as_view()RpcServer.view@rpc_method(name="X.Y")@server.register_procedure(name="X.Y")kwargs.get(REQUEST_KEY)context_target="_ctx"+_ctx.request@http_basic_auth_login_requiredauth=http_basic_auth_login_predicateset_authentication_predicate()auth=permissions_required(...)dumps_result()build_success_result()MODERNRPC_METHODS_MODULESFiles changed
tcms/rpc/servers.py— Two RpcServer instances (XML-RPC + JSON-RPC)tcms/handlers.py— Rewritten for new RpcHandler base classtcms/urls.py— RPCEntryPoint → server.viewtcms/rpc/decorators.py— New v2 auth predicate factoriestcms/settings/common.py— Removed MODERNRPC_METHODS_MODULEStcms/bugs/api.py— Same patternstcms/telemetry/api.py— Same patternsWhat's NOT done yet
tcms/tests/test_handlers.py) — kept unchanged per requestkiwi_lint/AST check updates — the old decorator names won't match anymoreMigration guide
https://django-modern-rpc.readthedocs.io/latest/misc/migration_guide.html
Notes for review
permissions_required()factory returns a predicate that both authenticates AND checks Django permissions — same behavior as beforebuild_success_result()context_targetor the_ctxparameter