정적메소드: 사용자가 별도 객체로 만들어졌을 때, 그 객체 안에서 필요한 기능과는 달리 클래스 전체적으로 필요한 기능
소스의 여러 곳에서 사용
사용자(email) Class
mysql schema
CREATE TABLE user_info(
USER_ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
USER_EMAIL VARCHAR(100) NOT NULL,
BLOG_ID CHAR(4),
PRIMARY KEY(USER_ID)
);
class User(UserMixin):
def __init__(self, user_id, user_email, blog_id):
self.id = user_id
self.user_email = user_email
self.blog_id = blog_id
def get_id(self):
return str(self.id)
@staticmethod
def get(user_id):
mysql_db = conn_mysqldb()
db_cursor = mysql_db.cursor()
sql = "SELECT * FROM user_info WHERE USER_ID = '" + str(user_id) + "' "
db_cursor.execute(sql)
user = db_cursor.fetchone()
if not user:
db_cursor.close()
return None
print(user)
user = User(user_id =user[0], user_email=user[1], blog_id=user[2])
db_cursor.close()
return user
@staticmethod
def find(user_email):
mysql_db = conn_mysqldb()
db_cursor = mysql_db.cursor()
sql = "SELECT * FROM user_info WHERE USER_EMAIL = '" + str(user_email) + "'"
db_cursor.execute(sql)
user = db_cursor.fetchone()
if not user:
db_cursor.close()
return None
print(user)
user = User(user_id=user[0], user_email=user[1], blog_id=user[2])
db_cursor.close()
return user
@staticmethod
def create(user_email, blog_id):
user = User.find(user_email)
if user == None:
mysql_db = conn_mysqldb()
db_cursor = mysql_db.cursor()
sql = "INSERT INTO user_info (USER_EMAIL, BLOG_ID) VALUES ('%s', '%s')" %(str(user_email), str(blog_id))
db_cursor.execute(sql)
mysql_db.commit()
return User.find(user_email)
else:
return user
blog session 관리 Class
class BlogSession():
blog_page = {'A': 'blog_A.html', 'B': 'blog_B.html'}
session_count = 0
@staticmethod
def save_session_info(session_ip, user_email, webpage_name):
now = datetime.now()
now_time = now.strftime("%d/%m/%Y %H:%M:%S")
mongo_db = conn_mongodb()
mongo_db.insert_one({'session_ip':session_ip,
'user_email':user_email,
'page': webpage_name,
'access_time' : now_time})
@staticmethod
def get_blog_page(force=None):
print(force)
if force == None:
if BlogSession.session_count == 0:
BlogSession.session_count = 1
return 'blog_A.html'
else:
BlogSession.session_count = 0
return 'blog_B.html'
else:
return BlogSession.blog_page[force]