Add e-mail authorization to the repository notification flow. Also validates the creation of the other notification methods.
This commit is contained in:
parent
56fec63fcd
commit
34fc279092
15 changed files with 483 additions and 34 deletions
|
@ -1763,3 +1763,39 @@ def check_health():
|
|||
return found_count > 0
|
||||
except:
|
||||
return False
|
||||
|
||||
def get_email_authorized_for_repo(namespace, repository, email):
|
||||
found = list(RepositoryAuthorizedEmail.select()
|
||||
.join(Repository)
|
||||
.where(Repository.namespace == namespace,
|
||||
Repository.name == repository,
|
||||
RepositoryAuthorizedEmail.email == email)
|
||||
.switch(RepositoryAuthorizedEmail)
|
||||
.limit(1))
|
||||
if not found or len(found) < 1:
|
||||
return None
|
||||
|
||||
return found[0]
|
||||
|
||||
|
||||
def create_email_authorization_for_repo(namespace_name, repository_name, email):
|
||||
try:
|
||||
repo = Repository.get(Repository.name == repository_name,
|
||||
Repository.namespace == namespace_name)
|
||||
except Repository.DoesNotExist:
|
||||
raise DataModelException('Invalid repository %s/%s' %
|
||||
(namespace_name, repository_name))
|
||||
|
||||
return RepositoryAuthorizedEmail.create(repository=repo, email=email, confirmed=False)
|
||||
|
||||
|
||||
def confirm_email_authorization_for_repo(code):
|
||||
try:
|
||||
found = RepositoryAuthorizedEmail.get(RepositoryAuthorizedEmail.code == code)
|
||||
except RepositoryAuthorizedEmail.DoesNotExist:
|
||||
raise DataModelException('Invalid confirmation code.')
|
||||
|
||||
found.confirmed = True
|
||||
found.save()
|
||||
|
||||
return found
|
||||
|
|
Reference in a new issue