Jump to >

reviewboard.scmtools.managers

class ToolQuerySet(model=None, query=None, using=None)[source]

Bases: django.db.models.query.QuerySet

get(*args, **kwargs)[source]

Performs the query and returns a single object matching the given keyword arguments.

class ToolManager[source]

Bases: django.db.models.manager.Manager

Manages Tool models.

Any get() operations performed (directly or indirectly through a ForeignKey) will go through a cache to attempt to minimize Tool lookups.

The Tool cache is never cleared, but as Tool objects should never be modified by hand (they’re registered when doing an rb-site upgrade, and then the server process must be reloaded), this shouldn’t be a problem.

get_queryset()[source]

Return a QuerySet for Tool models.

Returns:The new QuerySet instance.
Return type:ToolQuerySet
get_query_set(**kwargs)[source]
class RepositoryManager[source]

Bases: django.db.models.manager.Manager

A manager for Repository models.

accessible(user, visible_only=True, local_site=None, show_all_local_sites=False)[source]

Return a queryset for repositories accessible by the given user.

For superusers, all public and private repositories will be returned.

For regular users, only repositories that are public or that the user is on the access lists for (directly or through a review group) will be returned.

For anonymous users, only public repositories will be returned.

The returned list is further filtered down based on the visible_only, local_site, and show_all_local_sites parameters.

Parameters:
  • user (django.contrib.auth.models.User) – The user that must have access to any returned repositories.
  • visible_only (bool, optional) – Whether only visible repositories should be returned.
  • local_site (reviewboard.site.models.LocalSite, optional) – A specific Local Site that the repositories must be associated with. By default, this will only return repositories not part of a site.
  • show_all_local_sites (bool, optional) – Whether repositories from all Local Sites should be returned. This cannot be True if a local_site argument was provided.
Returns:

The resulting queryset.

Return type:

django.db.models.query.QuerySet

accessible_ids(*args, **kwargs)[source]

Return IDs of repositories that are accessible by the given user.

This wraps accessible() and takes the same arguments.

Parameters:
Returns:

The list of IDs.

Return type:

list of int

get_best_match(repo_identifier, local_site=None)[source]

Return a repository best matching the provided identifier.

This is used when a consumer provides a repository identifier of some form (database ID, repository name, path, or mirror path), and needs a single repository back.

If the identifier appears to be a numeric database ID, then an attempt will be made to fetch based on that ID.

Otherwise, this will perform a lookup, fetching all repositories where a name, path, or mirror path match the identifier. If multiple entries are found, the following checks are performed in order to locate a match:

  1. Is there a single visible repository? If so, return that.
  2. Is there a single repository name matching the identifier? If so, return that.
  3. Is there a single repository with a path matching the identifier? If so, return that.
  4. Is there a single repository with a mirror path matching the identifier? If so, return that.

Anything else will cause the lookup to fail.

Note

This does not check whether a user has access to the repository. Access does not influence any of the checks. The caller is expected to check for access permissions using is_accessible_by() on the resulting repository.

Parameters:
Returns:

The resulting repository, if one is found.

Return type:

reviewboard.scmtools.models.Repository

Raises:
  • reviewboard.scmtools.models.Repository.DoesNotExist – A repository could not be found.
  • reviewboard.scmtools.models.Repository.MultipleObjectsReturned – Too many repositories matching the identifier were found.
can_create(user, local_site=None)[source]
encrypt_plain_text_passwords()[source]

Encrypts any stored plain-text passwords.