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.status = ApplicationRoleStatus.DISABLED
application_role.deleted = True
db.session.add(application_role) db.session.add(application_role)
db.session.commit() db.session.commit()

View File

@ -1,16 +1,10 @@
from sqlalchemy import Column, ForeignKey, String 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 import Base
from atst.models.types import Id from atst.models.types import Id
from atst.models import mixins from atst.models import mixins
from atst.models.application_role import (
ApplicationRole,
Status as ApplicationRoleStatuses,
)
from atst.database import db
class Application( class Application(
Base, mixins.TimestampsMixin, mixins.AuditableMixin, mixins.DeletableMixin Base, mixins.TimestampsMixin, mixins.AuditableMixin, mixins.DeletableMixin
@ -28,25 +22,15 @@ class Application(
back_populates="application", back_populates="application",
primaryjoin="and_(Environment.application_id==Application.id, Environment.deleted==False)", primaryjoin="and_(Environment.application_id==Application.id, Environment.deleted==False)",
) )
# TODO: filter condition on this relationship? roles = relationship(
roles = relationship("ApplicationRole") "ApplicationRole",
primaryjoin="and_(ApplicationRole.application_id==Application.id, ApplicationRole.deleted==False)",
)
members = synonym("roles")
@property @property
def users(self): def users(self):
return set(role.user for role in self.roles) 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 @property
def displayname(self): def displayname(self):

View File

@ -54,7 +54,7 @@
<a <a
href="{{ url_for('applications.team', application_id=application.id) }}" href="{{ url_for('applications.team', application_id=application.id) }}"
class='icon-link'> class='icon-link'>
<span>{{ "portfolios.applications.team_text" | translate }} ({{ application.num_users }})</span> <span>{{ "portfolios.applications.team_text" | translate }} ({{ application.users | length }})</span>
</a> </a>
<div class='separator'></div> <div class='separator'></div>
{% endif %} {% 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(): def test_application_environments_excludes_deleted():
app = ApplicationFactory.create() app = ApplicationFactory.create()
env = EnvironmentFactory.create(application=app) env = EnvironmentFactory.create(application=app)