create AliasUsedOn and ApiKey model
This commit is contained in:
parent
a5e1a36718
commit
565508689f
|
@ -576,3 +576,43 @@ class EmailChange(db.Model, ModelMixin):
|
|||
|
||||
def is_expired(self):
|
||||
return self.expired < arrow.now()
|
||||
|
||||
|
||||
class AliasUsedOn(db.Model, ModelMixin):
|
||||
"""Used to know where an alias is created"""
|
||||
|
||||
__table_args__ = (
|
||||
db.UniqueConstraint("gen_email_id", "hostname", name="uq_alias_used"),
|
||||
)
|
||||
|
||||
gen_email_id = db.Column(
|
||||
db.ForeignKey(GenEmail.id, ondelete="cascade"), nullable=False
|
||||
)
|
||||
|
||||
hostname = db.Column(db.String(1024), nullable=False)
|
||||
|
||||
|
||||
class ApiKey(db.Model, ModelMixin):
|
||||
"""used in browser extension to identify user"""
|
||||
|
||||
user_id = db.Column(db.ForeignKey(User.id, ondelete="cascade"), nullable=False)
|
||||
code = db.Column(db.String(128), unique=True, nullable=False)
|
||||
name = db.Column(db.String(128), nullable=False)
|
||||
last_used = db.Column(ArrowType, default=None)
|
||||
times = db.Column(db.Integer, default=0, nullable=False)
|
||||
|
||||
user = db.relationship(User)
|
||||
|
||||
@classmethod
|
||||
def create(cls, user_id, name):
|
||||
# generate unique code
|
||||
found = False
|
||||
while not found:
|
||||
code = random_string(60)
|
||||
|
||||
if not cls.get_by(code=code):
|
||||
found = True
|
||||
|
||||
a = cls(user_id=user_id, code=code, name=name)
|
||||
db.session.add(a)
|
||||
return a
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
"""empty message
|
||||
|
||||
Revision ID: e505cb517589
|
||||
Revises: 83f4dbe125c4
|
||||
Create Date: 2019-11-28 21:59:13.064634
|
||||
|
||||
"""
|
||||
import sqlalchemy_utils
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'e505cb517589'
|
||||
down_revision = '83f4dbe125c4'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.create_table('api_key',
|
||||
sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
|
||||
sa.Column('created_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=False),
|
||||
sa.Column('updated_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=True),
|
||||
sa.Column('user_id', sa.Integer(), nullable=False),
|
||||
sa.Column('code', sa.String(length=128), nullable=False),
|
||||
sa.Column('name', sa.String(length=128), nullable=False),
|
||||
sa.Column('last_used', sqlalchemy_utils.types.arrow.ArrowType(), nullable=True),
|
||||
sa.Column('times', sa.Integer(), nullable=False),
|
||||
sa.ForeignKeyConstraint(['user_id'], ['users.id'], ondelete='cascade'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
sa.UniqueConstraint('code')
|
||||
)
|
||||
op.create_table('alias_used_on',
|
||||
sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
|
||||
sa.Column('created_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=False),
|
||||
sa.Column('updated_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=True),
|
||||
sa.Column('gen_email_id', sa.Integer(), nullable=False),
|
||||
sa.Column('hostname', sa.String(length=1024), nullable=False),
|
||||
sa.ForeignKeyConstraint(['gen_email_id'], ['gen_email.id'], ondelete='cascade'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
sa.UniqueConstraint('gen_email_id', 'hostname', name='uq_alias_used')
|
||||
)
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_table('alias_used_on')
|
||||
op.drop_table('api_key')
|
||||
# ### end Alembic commands ###
|
Loading…
Reference in New Issue