Pass custom form data to SCMTool.check_repository().

Review Request #12577 — Created Sept. 2, 2022 and submitted — Latest diff uploaded

Information

Review Board
release-4.0.x

Reviewers

Review Board 3.0.16 introduced support for custom forms for SCMTools,
storing any saved fields in Repository.extra_data. However, this data
was never passed to check_repository(), meaning that validation could
not happen based on this data for plain SCMTools (though it was passed
to hosting services).

This change adds support for passing custom data to
check_repository(). This requires that the implementation supports
**kwargs (a deprecation warning will be emitted if not) and accepts
all arguments as keyword arguments in any order. This will be required
in Review Board 5. All custom form data will then be passed.

In the process, some of the RepositoryForm code has been cleaned up.
There was a _build_repository_extra_data() method that only worked for
hosting services, and was mostly made redundant when per-SCM subforms
were added. It's now been removed, utilizing the subform data instead.

Unit tests pass on Python 2 and 3.

Tested creating new GitHub repositories, verifying that hosting service
forms still worked correctly.

Tested creating new standard Git repositories, with and without the
updates to check_repository().

Tested creating a new repository for SOS making use of form data in
check_repository().

Commits

Files