From 5489524be1df4df0943d2069c4bcbb1e8c884ebe Mon Sep 17 00:00:00 2001 From: "CHIEFSOFT\\ameye" Date: Thu, 10 Jul 2025 17:36:06 -0400 Subject: [PATCH] Create account --- SQL/site_data.sql | 1 + app/api/services/register.py | 14 ++++++++++- app/models/members.py | 49 ++++++++++++++++++++++++++++++++---- 3 files changed, 58 insertions(+), 6 deletions(-) diff --git a/SQL/site_data.sql b/SQL/site_data.sql index 900809d..3622057 100644 --- a/SQL/site_data.sql +++ b/SQL/site_data.sql @@ -43,6 +43,7 @@ ALTER TABLE members ADD account_name VARCHAR(100); ALTER TABLE members ADD firstname VARCHAR(25); ALTER TABLE members ADD lastname VARCHAR(25); ALTER TABLE members ALTER COLUMN password TYPE VARCHAR(250); +ALTER TABLE members ADD country VARCHAR(3); -- UPDATE members SET account_name ='This is the account name'; -- UPDATE members SET firstname ='Firstname'; diff --git a/app/api/services/register.py b/app/api/services/register.py index aa10385..3f9f101 100644 --- a/app/api/services/register.py +++ b/app/api/services/register.py @@ -30,6 +30,10 @@ class RegisterService(BaseService): SEND_EMAIL_FROM = Config.SEND_EMAIL_FROM SEND_EMAIL_PASS = Config.SEND_EMAIL_PASS + @staticmethod + def encrypt_password(self, password): + """Encrypt password""" + return generate_password_hash(password) @staticmethod def process_complete(data): @@ -40,6 +44,8 @@ class RegisterService(BaseService): # Simulate processing verify_link = validated_data.get('verify_link') username = validated_data.get('username') + password = validated_data.get('password') + country = validated_data.get('country') data ={} if not verify_link: @@ -56,10 +62,16 @@ class RegisterService(BaseService): "error_message_key": "use_another_username", } return ResponseHelper.error(data=response_data) + user= data["user"] + firstname = user['first_name'] + lastname = user['last_name'] + email = user['email'] + encrypted_pass = generate_password_hash(password) + newAccount = Members.add_member(firstname, lastname, email, username,encrypted_pass, country) + - country = { "last_update": datetime.datetime.utcnow(), "list": [ diff --git a/app/models/members.py b/app/models/members.py index 4981133..eaaf94c 100644 --- a/app/models/members.py +++ b/app/models/members.py @@ -1,7 +1,8 @@ from datetime import datetime, timezone from app.extensions import db from sqlalchemy.sql import func - +from sqlalchemy.exc import IntegrityError +import uuid class Members(db.Model): __tablename__ = 'members' @@ -48,11 +49,49 @@ class Members(db.Model): @classmethod def get_member_by_uid(cls, uid): - """ - Return an offer by its UID. - """ member = cls.query.filter_by(uid=str(uid)).first() if not member: raise ValueError(f"User UID = {uid} not found") - return member \ No newline at end of file + return member + + + @classmethod + def add_member(cls, firstname, lastname, email, username,password, country): + + # Save the response + member_data = cls( + uid=str(uuid.uuid4()), + firstname=firstname, + lastname=lastname, + username =username, + email=email, + country=country, + password=password, + added=datetime.now(timezone.utc), + updated=datetime.now(timezone.utc) + ) + + try: + db.session.add(member_data) + except IntegrityError as err: + raise ValueError(f"Database integrity error: {err}") + return member_data + +# ''' +# Table "public.members" +# Column | Type | Collation | Nullable | Default +# --------------+-----------------------------+-----------+----------+------------------------------------- +# id | integer | | not null | nextval('members_id_seq'::regclass) +# uid | uuid | | | uuid_generate_v4() +# username | character varying(25) | | not null | +# password | character varying(250) | | not null | +# loc | inet | | | +# status | integer | | | 0 +# added | timestamp without time zone | | | now() +# updated | timestamp without time zone | | | now() +# email | character varying(100) | | | +# account_name | character varying(100) | | | +# firstname | character varying(25) | | | +# lastname | character varying(25) | | | +# ''' \ No newline at end of file