51 lines
1.3 KiB
Python
51 lines
1.3 KiB
Python
from sqlalchemy import Column, ForeignKey
|
|
from sqlalchemy.dialects.postgresql import UUID
|
|
from sqlalchemy.orm import relationship, backref
|
|
|
|
from atat.models.base import Base
|
|
import atat.models.mixins as mixins
|
|
|
|
|
|
class ApplicationInvitation(
|
|
Base, mixins.TimestampsMixin, mixins.AuditableMixin, mixins.InvitesMixin
|
|
):
|
|
__tablename__ = "application_invitations"
|
|
|
|
application_role_id = Column(
|
|
UUID(as_uuid=True),
|
|
ForeignKey("application_roles.id"),
|
|
index=True,
|
|
nullable=False,
|
|
)
|
|
role = relationship(
|
|
"ApplicationRole",
|
|
backref=backref("invitations", order_by="ApplicationInvitation.time_created"),
|
|
)
|
|
|
|
@property
|
|
def application(self):
|
|
if self.role: # pragma: no branch
|
|
return self.role.application
|
|
|
|
@property
|
|
def application_id(self):
|
|
return self.role.application_id
|
|
|
|
@property
|
|
def portfolio_id(self):
|
|
return self.role.portfolio_id
|
|
|
|
@property
|
|
def event_details(self):
|
|
return {"email": self.email, "dod_id": self.user_dod_id}
|
|
|
|
@property
|
|
def history(self):
|
|
changes = self.get_changes()
|
|
change_set = {}
|
|
|
|
if "status" in changes:
|
|
change_set["status"] = [s.name for s in changes["status"]]
|
|
|
|
return change_set
|