Add a central function for registering SCMTools in the database.

Review Request #11338 — Created Dec. 17, 2020 and submitted — Latest diff uploaded


Review Board


This replaces the core logic from the registerscmtools management
command with a call to a new Tool.objects.register_from_entrypoints()
method. This method does the work of looking for any entrypoint-provided
SCMTools not already in the database, and registers them.

The new implementation executes fewer queries, and slims down the query
for the initial lookup of tools. The management command is also less
verbose, providing a single-line summary after registration instead of a
one line per tool.

Tested the registerscmtools command with registering 1 SCMTool, many
SCMTools, and no SCMTools.