95 lines
2.7 KiB
Python
95 lines
2.7 KiB
Python
"""Application Members Models"""
|
|
import os
|
|
# bson,
|
|
from dotenv import load_dotenv
|
|
from werkzeug.security import generate_password_hash, check_password_hash
|
|
import psycopg2
|
|
|
|
load_dotenv()
|
|
|
|
# DATABASE_URL=os.environ.get('DATABASE_URL') or 'mongodb://localhost:27017/myDatabase'
|
|
# print(DATABASE_URL)
|
|
# client = MongoClient(DATABASE_URL)
|
|
# db = client.myDatabase
|
|
|
|
dataUrl = os.getenv("DATABASE_URL")
|
|
db = psycopg2.connect(dataUrl)
|
|
|
|
|
|
class Members:
|
|
"""User Model"""
|
|
def __init__(self):
|
|
return
|
|
|
|
|
|
|
|
# def get_by_id(self, user_id):
|
|
# """Get a user by id"""
|
|
# user = db.users.find_one({"_id": bson.ObjectId(user_id), "active": True})
|
|
# if not user:
|
|
# return
|
|
# user["_id"] = str(user["_id"])
|
|
# user.pop("password")
|
|
# return user
|
|
|
|
def get_by_username(self, username):
|
|
"""Get a user by username"""
|
|
print(db)
|
|
# sqv = "SELECT * FROM members WHERE id=%s"
|
|
# x=["1"]
|
|
sqv = "SELECT * FROM members WHERE username='"+username+"'"
|
|
with db:
|
|
with db.cursor() as cursor:
|
|
cursor.execute(sqv, x)
|
|
member = cursor.fetchall()
|
|
# cursor.execute(sqv,x)
|
|
# result = cursor.fetchall()
|
|
#
|
|
# member = db.members.find_one({"username": username, "active": True})
|
|
if not member:
|
|
return
|
|
member["_id"] = str(member["id"])
|
|
return member
|
|
|
|
# def update(self, user_id, name=""):
|
|
# """Update a user"""
|
|
# data = {}
|
|
# if name:
|
|
# data["name"] = name
|
|
# user = db.users.update_one(
|
|
# {"_id": bson.ObjectId(user_id)},
|
|
# {
|
|
# "$set": data
|
|
# }
|
|
# )
|
|
# user = self.get_by_id(user_id)
|
|
# return user
|
|
#
|
|
# def delete(self, user_id):
|
|
# """Delete a user"""
|
|
# Books().delete_by_user_id(user_id)
|
|
# user = db.users.delete_one({"_id": bson.ObjectId(user_id)})
|
|
# user = self.get_by_id(user_id)
|
|
# return user
|
|
#
|
|
# def disable_account(self, user_id):
|
|
# """Disable a user account"""
|
|
# user = db.users.update_one(
|
|
# {"_id": bson.ObjectId(user_id)},
|
|
# {"$set": {"active": False}}
|
|
# )
|
|
# user = self.get_by_id(user_id)
|
|
# return user
|
|
|
|
def encrypt_password(self, password):
|
|
"""Encrypt password"""
|
|
return generate_password_hash(password)
|
|
|
|
def login(self, username, password):
|
|
"""Login a user"""
|
|
member = self.get_by_username(username)
|
|
if not member or not check_password_hash(member["password"], password):
|
|
return
|
|
member.pop("password")
|
|
return member
|