Add migration for enforcing uniqueness of an application name within a portfolio and update create/update Applicaiton domain methods.
This commit is contained in:
@@ -1,4 +1,7 @@
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
|
||||
from . import BaseDomainClass
|
||||
from .exceptions import AlreadyExistsError
|
||||
from flask import g
|
||||
from atst.database import db
|
||||
from atst.domain.application_roles import ApplicationRoles
|
||||
@@ -28,7 +31,12 @@ class Applications(BaseDomainClass):
|
||||
if environment_names:
|
||||
Environments.create_many(user, application, environment_names)
|
||||
|
||||
db.session.commit()
|
||||
try:
|
||||
db.session.commit()
|
||||
except IntegrityError:
|
||||
db.session.rollback()
|
||||
raise AlreadyExistsError("application")
|
||||
|
||||
return application
|
||||
|
||||
@classmethod
|
||||
@@ -54,7 +62,12 @@ class Applications(BaseDomainClass):
|
||||
g.current_user, application, new_data["environment_names"]
|
||||
)
|
||||
db.session.add(application)
|
||||
db.session.commit()
|
||||
|
||||
try:
|
||||
db.session.commit()
|
||||
except IntegrityError:
|
||||
db.session.rollback()
|
||||
raise AlreadyExistsError("application")
|
||||
|
||||
return application
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
from sqlalchemy import and_, Column, ForeignKey, String
|
||||
from sqlalchemy import and_, Column, ForeignKey, String, UniqueConstraint
|
||||
from sqlalchemy.orm import relationship, synonym
|
||||
|
||||
from atst.models.base import Base
|
||||
@@ -34,6 +34,11 @@ class Application(
|
||||
),
|
||||
)
|
||||
members = synonym("roles")
|
||||
__table_args__ = (
|
||||
UniqueConstraint(
|
||||
"name", "portfolio_id", name="name_portfolio_id_unique_constraint"
|
||||
),
|
||||
)
|
||||
|
||||
@property
|
||||
def users(self):
|
||||
|
Reference in New Issue
Block a user