Add TeamSync database and API support
Teams can now have a TeamSync entry in the database, indicating how they are synced via an external group. If found, then the user membership of the team cannot be changed via the API.
This commit is contained in:
parent
d718829f5d
commit
f5a854c189
5 changed files with 131 additions and 13 deletions
|
@ -1,9 +1,13 @@
|
|||
from data.database import Team, TeamMember, TeamRole, User, TeamMemberInvite, RepositoryPermission
|
||||
import json
|
||||
|
||||
from peewee import fn
|
||||
|
||||
from data.database import (Team, TeamMember, TeamRole, User, TeamMemberInvite, RepositoryPermission,
|
||||
TeamSync, LoginService)
|
||||
from data.model import (DataModelException, InvalidTeamException, UserAlreadyInTeam,
|
||||
InvalidTeamMemberException, user, _basequery)
|
||||
InvalidTeamMemberException, _basequery)
|
||||
from data.text import prefix_search
|
||||
from util.validation import validate_username
|
||||
from peewee import fn, JOIN_LEFT_OUTER
|
||||
from util.morecollections import AttrDict
|
||||
|
||||
|
||||
|
@ -369,3 +373,24 @@ def confirm_team_invite(code, user_obj):
|
|||
team = found.team
|
||||
inviter = found.inviter
|
||||
return (team, inviter)
|
||||
|
||||
def set_team_syncing(team, login_service_name, config):
|
||||
login_service = LoginService.get(name=login_service_name)
|
||||
TeamSync.create(team=team, transaction_id='', service=login_service, config=json.dumps(config))
|
||||
|
||||
def get_team_sync_information(orgname, teamname):
|
||||
""" Returns the team syncing information for the team with the given name under the organization
|
||||
with the given name or None if none.
|
||||
"""
|
||||
query = (TeamSync
|
||||
.select(TeamSync, LoginService)
|
||||
.join(Team)
|
||||
.join(User)
|
||||
.switch(TeamSync)
|
||||
.join(LoginService)
|
||||
.where(Team.name == teamname, User.organization == True, User.username == orgname))
|
||||
|
||||
try:
|
||||
return query.get()
|
||||
except TeamSync.DoesNotExist:
|
||||
return None
|
||||
|
|
Reference in a new issue