Commit 6bb0e5e3 authored by Ahmad Anvari's avatar Ahmad Anvari

Finalize user model class

parent 887fbe1c
from abc import ABC from bson.objectid import ObjectId
from .mongo import Model from .mongo import Model
from pymongo.errors import DuplicateKeyError
import hashlib
class User(Model): class User(Model):
@staticmethod
def dict_to_object(dictionary):
u = User(
first_name=dictionary["first_name"],
last_name=dictionary["last_name"],
email=dictionary["email"],
hashed_password=dictionary["hashed_password"]
)
u.__id = str(dictionary["_id"])
return u
def to_dict(self): def to_dict(self):
res = {} res = {}
if self.__id is not None: if self.__id is not None:
...@@ -13,29 +25,48 @@ class User(Model): ...@@ -13,29 +25,48 @@ class User(Model):
res["first_name"] = self.__first_name res["first_name"] = self.__first_name
if self.__last_name is not None: if self.__last_name is not None:
res["last_name"] = self.__last_name res["last_name"] = self.__last_name
if self.__email is not None:
res["email"] = self.__email
if self.__hashed_password is not None:
res["hashed_password"] = self.__hashed_password
return res
def __init__(self, first_name, last_name, email, hashed_password): def __init__(self, first_name, last_name, email, hashed_password):
self.__id = "" self.__id = None
self.__first_name = first_name self.__first_name = first_name
self.__last_name = last_name self.__last_name = last_name
self.__email = email self.__email = email
self.__hashed_password = hashed_password self.__hashed_password = hashed_password
def get_collection(self): @staticmethod
return self.get_db()["users"] def get_collection():
return Model.get_db()["users"]
def get_id(self): def get_id(self):
return self.__id return self.__id
def store(self): def store(self):
add_document = self.get_collection().insert_one({ try:
"first_name": self.__first_name, add_document = User.get_collection().insert_one(self.to_dict())
"last_name": self.__last_name, self.__id = str(add_document.inserted_id)
"email": self.__email, except DuplicateKeyError:
"hashed_password": self.__hashed_password, print("Error occurred")
})
self.__id = str(add_document.inserted_id) @staticmethod
def find_by_username(email):
u = User.get_collection().find_one({"email": email})
if u is not None:
return User.dict_to_object(u)
return u
@staticmethod @staticmethod
def find_by_username(self, email): def find_by_id(object_id):
return self.get_collection().find_one({"email": email}) u = User.get_collection().find_one({"_id": ObjectId(object_id)})
if u is not None:
return User.dict_to_object(u)
return u
def compare_password(self, new_password):
new_hashed_password = hashlib.md5(new_password.encode()).hexdigest()
return self.__hashed_password == new_hashed_password
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment