새소식

BE/Flask

[블로그 구현 with Flask] 3.블로그 구현을 위한 클래스 구현

  • -

정적메소드: 사용자가 별도 객체로 만들어졌을 때, 그 객체 안에서 필요한 기능과는 달리 클래스 전체적으로 필요한 기능

소스의 여러 곳에서 사용

 

사용자(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]
728x90
Contents