mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-12 08:12:27 -05:00
Add model class and migration script for invited user.
This commit is contained in:
@@ -34,6 +34,7 @@ export NOTIFICATION_QUEUE_PREFIX='[unique-to-environment]-notification_developme
|
||||
export SECRET_KEY='dev-notify-secret-key'
|
||||
export SQLALCHEMY_DATABASE_URI = 'postgresql://localhost/notification_api'
|
||||
export VERIFY_CODE_FROM_EMAIL_ADDRESS='no-reply@notify.works'
|
||||
export NOTIFY_EMAIL_DOMAIN='dev.notify.com'
|
||||
"> environment.sh
|
||||
```
|
||||
|
||||
|
||||
@@ -224,3 +224,38 @@ class Notification(db.Model):
|
||||
onupdate=datetime.datetime.now)
|
||||
status = db.Column(
|
||||
db.Enum(*NOTIFICATION_STATUS_TYPES, name='notification_status_types'), nullable=False, default='sent')
|
||||
|
||||
|
||||
INVITED_USER_STATUS_TYPES = ['pending', 'accepted', 'cancelled']
|
||||
|
||||
|
||||
class InvitedUser(db.Model):
|
||||
|
||||
__tablename__ = 'invited_users'
|
||||
|
||||
id = db.Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
|
||||
email_address = db.Column(db.String(255), nullable=False)
|
||||
user_id = db.Column(db.Integer, db.ForeignKey('users.id'), index=True, nullable=False)
|
||||
from_user = db.relationship('User')
|
||||
service_id = db.Column(UUID(as_uuid=True), db.ForeignKey('services.id'), index=True, unique=False)
|
||||
service = db.relationship('Service')
|
||||
_token = db.Column(db.String, nullable=False)
|
||||
created_at = db.Column(
|
||||
db.DateTime,
|
||||
index=False,
|
||||
unique=False,
|
||||
nullable=False,
|
||||
default=datetime.datetime.now)
|
||||
status = db.Column(
|
||||
db.Enum(*INVITED_USER_STATUS_TYPES, name='invited_users_status_types'), nullable=False, default='invited')
|
||||
|
||||
@property
|
||||
def token(self):
|
||||
raise AttributeError("Token not readable")
|
||||
|
||||
@token.setter
|
||||
def token(self, token):
|
||||
self._token = hashpw(token)
|
||||
|
||||
def check_token(self, token):
|
||||
return check_hash(token, self._token)
|
||||
|
||||
42
migrations/versions/0022_add_invite_users.py
Normal file
42
migrations/versions/0022_add_invite_users.py
Normal file
@@ -0,0 +1,42 @@
|
||||
"""empty message
|
||||
|
||||
Revision ID: 0022_add_invite_users
|
||||
Revises: 0021_add_job_metadata
|
||||
Create Date: 2016-02-23 16:41:40.481468
|
||||
|
||||
"""
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '0022_add_invite_users'
|
||||
down_revision = '0021_add_job_metadata'
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy.dialects import postgresql
|
||||
|
||||
def upgrade():
|
||||
### commands auto generated by Alembic - please adjust! ###
|
||||
op.create_table('invited_users',
|
||||
sa.Column('id', postgresql.UUID(as_uuid=True), nullable=False),
|
||||
sa.Column('email_address', sa.String(length=255), nullable=False),
|
||||
sa.Column('user_id', sa.Integer(), nullable=False),
|
||||
sa.Column('service_id', postgresql.UUID(as_uuid=True), nullable=True),
|
||||
sa.Column('_token', sa.String(), nullable=False),
|
||||
sa.Column('created_at', sa.DateTime(), nullable=False),
|
||||
sa.Column('status', sa.Enum('pending', 'accepted', 'cancelled', name='invited_users_status_types'), nullable=False),
|
||||
sa.ForeignKeyConstraint(['service_id'], ['services.id'], ),
|
||||
sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
|
||||
sa.PrimaryKeyConstraint('id')
|
||||
)
|
||||
op.create_index(op.f('ix_invited_users_service_id'), 'invited_users', ['service_id'], unique=False)
|
||||
op.create_index(op.f('ix_invited_users_user_id'), 'invited_users', ['user_id'], unique=False)
|
||||
### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_index(op.f('ix_invited_users_user_id'), table_name='invited_users')
|
||||
op.drop_index(op.f('ix_invited_users_service_id'), table_name='invited_users')
|
||||
op.drop_table('invited_users')
|
||||
op.execute('DROP TYPE invited_users_status_types')
|
||||
### end Alembic commands ###
|
||||
Reference in New Issue
Block a user