Files
MermsCoreFlask/app/models/password_reset.py
T
2025-07-21 14:15:11 -04:00

53 lines
1.8 KiB
Python

from datetime import datetime, timezone
from app.extensions import db
from app.models.charge import Charge
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
from sqlalchemy.exc import IntegrityError
import uuid
from app.utils.logger import logger
class PasswordReset(db.Model):
__tablename__ = 'password_reset'
id = db.Column(db.String, primary_key=True)
uid = db.Column(db.String(150), nullable=True)
username = db.Column(db.String, nullable=False)
status = db.Column(db.Integer, nullable=True, default=0)
added = db.Column(db.DateTime(timezone=True), server_default=func.now())
updated = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
def to_dict(self):
return {
"id": self.id,
"uid": str(self.uid),
"username": self.account_id,
"status": self.status,
"added": self.added.isoformat() if self.added else None,
"updated": self.updated.isoformat() if self.updated else None,
}
@classmethod
def create_reset(cls, username):
logger.info(f"Enter to reset the password********** "+username)
pass_reset = cls(
uid=str(uuid.uuid4()),
username=username,
added=datetime.now(timezone.utc),
updated=datetime.now(timezone.utc)
)
logger.info(f"About to reset the password**********")
try:
db.session.add(pass_reset)
db.session.flush()
logger.info(f"After Insert to reset the password**********")
except IntegrityError as err:
raise ValueError(f"Database integrity error: {err}")
return pass_reset
def __repr__(self):
return f'<pPassReset {self.id} - {self.username}>'