Merge pull request #840 from dod-ccpo/update-team-members-count

Update team members number on app index page
This commit is contained in:
leigh-mil 2019-05-24 10:15:28 -04:00 committed by GitHub
commit 48fbc1c997
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 9 additions and 34 deletions

View File

@ -109,6 +109,7 @@ class Applications(BaseDomainClass):
)
application_role.status = ApplicationRoleStatus.DISABLED
application_role.deleted = True
db.session.add(application_role)
db.session.commit()

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,25 +22,15 @@ 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.roles)
@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)
return set(role.user for role in self.members)
@property
def displayname(self):

View File

@ -54,7 +54,7 @@
<a
href="{{ url_for('applications.team', application_id=application.id) }}"
class='icon-link'>
<span>{{ "portfolios.applications.team_text" | translate }} ({{ application.num_users }})</span>
<span>{{ "portfolios.applications.team_text" | translate }} ({{ application.users | length }})</span>
</a>
<div class='separator'></div>
{% endif %}

View File

@ -8,16 +8,6 @@ from tests.factories import (
)
def test_application_num_users():
application = ApplicationFactory.create(
environments=[{"name": "dev"}, {"name": "staging"}, {"name": "prod"}]
)
assert application.num_users == 0
ApplicationRoleFactory.create(application=application)
assert application.num_users == 1
def test_application_environments_excludes_deleted():
app = ApplicationFactory.create()
env = EnvironmentFactory.create(application=app)