new signup data
This commit is contained in:
+13
-3
@@ -1372,7 +1372,17 @@ grant all privileges on database merms_panel to merms_panel;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
CREATE TABLE signup (
|
||||
id SERIAL,
|
||||
uid uuid DEFAULT uuid_generate_v4(),
|
||||
email VARCHAR(100) NOT NULL,
|
||||
firstname VARCHAR(25) NOT NULL,
|
||||
lastname VARCHAR(25) NOT NULL,
|
||||
loc INET,
|
||||
status INT DEFAULT 0,
|
||||
added timestamp without time zone DEFAULT now(),
|
||||
updated timestamp without time zone DEFAULT now()
|
||||
);
|
||||
ALTER TABLE ONLY signup
|
||||
ADD CONSTRAINT signup_id_key UNIQUE (id);
|
||||
|
||||
|
||||
@@ -22,10 +22,11 @@ from .custom_templates import CustomTemplates
|
||||
from .products_colorstyle import ProductsColorStyle
|
||||
from .country import Country
|
||||
from .members_webfiles import MembersWebfiles
|
||||
from .signup import Signup
|
||||
|
||||
__all__ = ['Members', 'Account', 'Products',
|
||||
'MembersProducts', 'MembersActions', 'MembersPending', 'ProductsDetails',
|
||||
'ProvisionActions', 'MembersProductsRefresh', 'MembersProductsSettings',
|
||||
'ProvisionActions', 'MembersProductsRefresh', 'MembersProductsSettings', 'Signup',
|
||||
'PasswordReset', 'MembersProfile', 'SubscriptionOptions', 'SubscriptionOptionsItems',
|
||||
'ProductsTemplates', 'ProductsColorStyle', 'Payments', 'PaymentsSession',
|
||||
'SubscriptionGenerative', 'GenerativeResults',
|
||||
|
||||
@@ -20,7 +20,7 @@ class Members(db.Model):
|
||||
email = db.Column(db.String(100), nullable=False)
|
||||
account_name = db.Column(db.String(100), nullable=True)
|
||||
firstname = db.Column(db.String(25), nullable=False)
|
||||
lastname = db.Column(db.String(100), nullable=True)
|
||||
lastname = db.Column(db.String(25), nullable=True)
|
||||
country = db.Column(db.String(3), nullable=True)
|
||||
profile_completed = db.Column(db.DateTime(timezone=False))
|
||||
stripe_customer_id = db.Column(db.String(100), nullable=True)
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
from datetime import datetime, timezone, timedelta
|
||||
from app.extensions import db
|
||||
from sqlalchemy.sql import func
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
import uuid
|
||||
from app.utils.logger import logger
|
||||
|
||||
|
||||
class Signup(db.Model):
|
||||
__tablename__ = 'signup'
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
|
||||
uid = db.Column(db.String(150), nullable=False)
|
||||
email = db.Column(db.String(100), nullable=False)
|
||||
firstname = db.Column(db.String(25), nullable=False)
|
||||
lastname = db.Column(db.String(25), nullable=True)
|
||||
loc = db.Column(db.String(20), nullable=True)
|
||||
status = db.Column(db.Integer, default=1)
|
||||
added = db.Column(db.DateTime(timezone=False), server_default=func.now())
|
||||
updated = db.Column(db.DateTime(timezone=False), server_default=func.now(), onupdate=func.now())
|
||||
|
||||
|
||||
|
||||
# "account_id": self.account_id,
|
||||
def to_dict(self):
|
||||
return {
|
||||
"id": self.id,
|
||||
"uid": str(self.uid),
|
||||
"loc": self.loc,
|
||||
"status": self.status,
|
||||
"added": self.added.isoformat() if self.added else None,
|
||||
"updated": self.updated.isoformat() if self.updated else None,
|
||||
"email": self.email,
|
||||
"firstname": self.firstname,
|
||||
"lastname": self.lastname,
|
||||
}
|
||||
|
||||
def __repr__(self):
|
||||
return f'<Signup {self.id} - {self.uid}>'
|
||||
|
||||
|
||||
@classmethod
|
||||
def add_signup(cls, firstname, lastname, email):
|
||||
|
||||
# Save the response
|
||||
signup_data = cls(
|
||||
uid=str(uuid.uuid4()),
|
||||
firstname=firstname,
|
||||
lastname=lastname,
|
||||
email=email,
|
||||
added=datetime.now(timezone.utc),
|
||||
updated=datetime.now(timezone.utc)
|
||||
)
|
||||
|
||||
try:
|
||||
db.session.add(signup_data)
|
||||
except IntegrityError as err:
|
||||
raise ValueError(f"Database integrity error: {err}")
|
||||
return signup_data
|
||||
|
||||
|
||||
Reference in New Issue
Block a user