atst/atat/models/application_invitation.py
2020-03-04 11:51:15 -05:00

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