Filter the roles relationship on applications to remove deleted roles

This commit is contained in:
leigh-mil
2019-05-23 11:07:54 -04:00
parent 86e315e56f
commit 8980b04f7e
4 changed files with 8 additions and 33 deletions

View File

@@ -1,16 +1,10 @@
from sqlalchemy import Column, ForeignKey, String
from sqlalchemy.orm import relationship
from sqlalchemy.orm import relationship, synonym
from atst.models import Base
from atst.models.types import Id
from atst.models import mixins
from atst.models.application_role import (
ApplicationRole,
Status as ApplicationRoleStatuses,
)
from atst.database import db
class Application(
Base, mixins.TimestampsMixin, mixins.AuditableMixin, mixins.DeletableMixin
@@ -28,26 +22,16 @@ class Application(
back_populates="application",
primaryjoin="and_(Environment.application_id==Application.id, Environment.deleted==False)",
)
# TODO: filter condition on this relationship?
roles = relationship("ApplicationRole")
roles = relationship(
"ApplicationRole",
primaryjoin="and_(ApplicationRole.application_id==Application.id, ApplicationRole.deleted==False)",
)
members = synonym("roles")
@property
def users(self):
return set(role.user for role in self.members)
@property
def members(self):
return (
db.session.query(ApplicationRole)
.filter(ApplicationRole.application_id == self.id)
.filter(ApplicationRole.status != ApplicationRoleStatuses.DISABLED)
.all()
)
@property
def num_users(self):
return len(self.users)
@property
def displayname(self):
return self.name