Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from datetime import datetime, timezone
- from flask_login import UserMixin
- from app import db
- from itsdangerous.url_safe import URLSafeTimedSerializer
- from typing import Optional
- import sqlalchemy as sa
- import sqlalchemy.orm as so
- #user_mixin still used?
- class User(UserMixin, db.Model):
- '''
- one to many relationship between both tables.
- The One relationship.
- '''
- id: so.Mapped[int] = so.mapped_column(primary_key=True)
- # unique blocks the same username
- # I can't have Nullable=False because it will make me add the columns everytime I add a column in User table
- username: so.Mapped[str] = so.mapped_column(sa.String(80), index=True, unique=True)
- hashed_password: so.Mapped[str] = so.mapped_column(sa.String(128))
- email: so.Mapped[str] = so.mapped_column(sa.String(120), index=True, unique=True)
- registration_confirmation_email: so.Mapped[bool] = so.mapped_column(sa.Boolean, default=False)
- profile_pic_name: so.Mapped[Optional[str]] = so.mapped_column(sa.String())
- '''Might not be needed'''
- #route_salt: so.Mapped[Optional[str]] = so.mapped_column(sa.String())
- route_token_1: so.Mapped[Optional[str]] = so.mapped_column(sa.String())
- route_token_2: so.Mapped[Optional[str]] = so.mapped_column(sa.String())
- # used to be VerificationEmailToken
- email_token: so.Mapped[Optional[str]] = so.mapped_column(sa.String())
- time_token_created: so.Mapped[Optional[datetime]] = so.mapped_column(index=True)
- time_token_expired: so.Mapped[Optional[datetime]] = so.mapped_column(index=True)
- route_token: so.Mapped[Optional[str]] = so.mapped_column(sa.String())
- attempts_token_tried: so.Mapped[int] = so.mapped_column(sa.Integer, default=0)
- # relationship connects the tables.
- #rel_verification_email_token: so.WriteOnlyMapped["VerificationEmailToken"] = so.relationship(back_populates="rel_user")
- rel_posts: so.WriteOnlyMapped['Posts'] = so.relationship(back_populates='rel_user')
- rel_payments: so.WriteOnlyMapped['Payments'] = so.relationship(back_populates='rel_user')
- def __repr__(self):
- return '<User {}>'.format(self.username)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement