272 lines
12 KiB
Python
272 lines
12 KiB
Python
from pymongo import MongoClient, ASCENDING
|
|
from werkzeug.security import generate_password_hash
|
|
from datetime import datetime, timedelta
|
|
|
|
# MongoDB 접속
|
|
client = MongoClient('mongodb://root:1234@cckb9998.synology.me:27017/')
|
|
db = client['taobao_project'] # 사용할 데이터베이스 지정
|
|
|
|
# 이메일 필드에 대한 고유 인덱스 생성
|
|
db.users.create_index([("email", ASCENDING)], unique=True)
|
|
|
|
# 현재 날짜와 시간
|
|
now = datetime.now()
|
|
|
|
# 사용자 데이터 샘플
|
|
users_data = [
|
|
{
|
|
"email": "testMaster1@gmail.com",
|
|
"username": "테스트마스터1",
|
|
"password": "1234",
|
|
"userType": "master",
|
|
"userGrade": 1, # 사용자 등급
|
|
"joinDate": now.strftime('%Y-%m-%d %H:%M:%S'), # 가입일자
|
|
"planStartDate": (now + timedelta(days=1)).strftime('%Y-%m-%d 00:00'), # 유료 플랜 시작일자
|
|
"planEndDate": (now + timedelta(days=91)).strftime('%Y-%m-%d 00:00'), # 유료 플랜 종료일자
|
|
"planDurationDays": 90, # 유료 플랜 기간
|
|
"lastLoginTime": None, # 마지막 로그인 시간
|
|
"lastLogoutTime": None, # 마지막 로그아웃 시간
|
|
"totalWorkload": 100, # 총 작업량
|
|
"weeklyPerformance": { # 주별 성과
|
|
"2023-01": 20, # 예시: 2023년 1주차의 작업량
|
|
"2023-02": 30, # 예시: 2023년 2주차의 작업량
|
|
},
|
|
"monthlyPerformance": { # 월별 성과
|
|
"2023-01": 50, # 예시: 2023년 1월의 작업량
|
|
"2023-02": 50, # 예시: 2023년 2월의 작업량
|
|
}
|
|
},
|
|
|
|
# 슬레이브 사용자 데이터 예시 (마스터 사용자 정보 참조)
|
|
{
|
|
"email": "T1slave1@gmail.com",
|
|
"username": "테스트1슬레이브1",
|
|
"password": "1234",
|
|
"userType": "slave",
|
|
"master": "testMaster1@gmail.com", # 마스터 사용자 참조
|
|
"lastLoginTime": None, # 마지막 로그인 시간
|
|
"lastLogoutTime": None, # 마지막 로그아웃 시간
|
|
"totalWorkload": 100, # 총 작업량
|
|
"weeklyPerformance": { # 주별 성과
|
|
"2023-01": 20, # 예시: 2023년 1주차의 작업량
|
|
"2023-02": 30, # 예시: 2023년 2주차의 작업량
|
|
},
|
|
"monthlyPerformance": { # 월별 성과
|
|
"2023-01": 50, # 예시: 2023년 1월의 작업량
|
|
"2023-02": 50, # 예시: 2023년 2월의 작업량
|
|
}
|
|
},
|
|
# 슬레이브 사용자 데이터 예시 (마스터 사용자 정보 참조)
|
|
{
|
|
"email": "T1slave2@gmail.com",
|
|
"username": "테스트1슬레이브2",
|
|
"password": "1234",
|
|
"userType": "slave",
|
|
"master": "testMaster1@gmail.com", # 마스터 사용자 참조
|
|
"lastLoginTime": None, # 마지막 로그인 시간
|
|
"lastLogoutTime": None, # 마지막 로그아웃 시간
|
|
"totalWorkload": 100, # 총 작업량
|
|
"weeklyPerformance": { # 주별 성과
|
|
"2023-01": 20, # 예시: 2023년 1주차의 작업량
|
|
"2023-02": 30, # 예시: 2023년 2주차의 작업량
|
|
},
|
|
"monthlyPerformance": { # 월별 성과
|
|
"2023-01": 50, # 예시: 2023년 1월의 작업량
|
|
"2023-02": 50, # 예시: 2023년 2월의 작업량
|
|
}
|
|
},
|
|
# 슬레이브 사용자 데이터 예시 (마스터 사용자 정보 참조)
|
|
{
|
|
"email": "T1Manager@gmail.com",
|
|
"username": "테스트1매니저",
|
|
"password": "1234",
|
|
"userType": "manager",
|
|
"master": "testMaster1@gmail.com", # 마스터 사용자 참조
|
|
"lastLoginTime": None, # 마지막 로그인 시간
|
|
"lastLogoutTime": None, # 마지막 로그아웃 시간
|
|
"totalWorkload": 100, # 총 작업량
|
|
"weeklyPerformance": { # 주별 성과
|
|
"2023-01": 20, # 예시: 2023년 1주차의 작업량
|
|
"2023-02": 30, # 예시: 2023년 2주차의 작업량
|
|
},
|
|
"monthlyPerformance": { # 월별 성과
|
|
"2023-01": 50, # 예시: 2023년 1월의 작업량
|
|
"2023-02": 50, # 예시: 2023년 2월의 작업량
|
|
}
|
|
},
|
|
{
|
|
"email": "testMaster2@gmail.com",
|
|
"username": "테스트마스터2",
|
|
"password": "1234",
|
|
"userType": "master",
|
|
"userGrade": 2, # 사용자 등급
|
|
"joinDate": now.strftime('%Y-%m-%d %H:%M:%S'), # 가입일자
|
|
"planStartDate": (now + timedelta(days=1)).strftime('%Y-%m-%d 00:00'), # 유료 플랜 시작일자
|
|
"planEndDate": (now + timedelta(days=31)).strftime('%Y-%m-%d 00:00'), # 유료 플랜 종료일자
|
|
"planDurationDays": 30, # 유료 플랜 기간
|
|
"lastLoginTime": None, # 마지막 로그인 시간
|
|
"lastLogoutTime": None, # 마지막 로그아웃 시간
|
|
"totalWorkload": 100, # 총 작업량
|
|
"weeklyPerformance": { # 주별 성과
|
|
"2023-01": 20, # 예시: 2023년 1주차의 작업량
|
|
"2023-02": 30, # 예시: 2023년 2주차의 작업량
|
|
},
|
|
"monthlyPerformance": { # 월별 성과
|
|
"2023-01": 50, # 예시: 2023년 1월의 작업량
|
|
"2023-02": 50, # 예시: 2023년 2월의 작업량
|
|
}
|
|
},
|
|
# 슬레이브 사용자 데이터 예시 (마스터 사용자 정보 참조)
|
|
{
|
|
"email": "T2slave1@gmail.com",
|
|
"username": "테스트2슬레이브1",
|
|
"password": "1234",
|
|
"userType": "slave",
|
|
"master": "testMaster2@gmail.com", # 마스터 사용자 참조
|
|
"lastLoginTime": None, # 마지막 로그인 시간
|
|
"lastLogoutTime": None, # 마지막 로그아웃 시간
|
|
"totalWorkload": 100, # 총 작업량
|
|
"weeklyPerformance": { # 주별 성과
|
|
"2023-01": 20, # 예시: 2023년 1주차의 작업량
|
|
"2023-02": 30, # 예시: 2023년 2주차의 작업량
|
|
},
|
|
"monthlyPerformance": { # 월별 성과
|
|
"2023-01": 50, # 예시: 2023년 1월의 작업량
|
|
"2023-02": 50, # 예시: 2023년 2월의 작업량
|
|
}
|
|
},
|
|
# 슬레이브 사용자 데이터 예시 (마스터 사용자 정보 참조)
|
|
{
|
|
"email": "T2slave2@gmail.com",
|
|
"username": "테스트2슬레이브2",
|
|
"password": "1234",
|
|
"userType": "slave",
|
|
"master": "testMaster2@gmail.com", # 마스터 사용자 참조
|
|
"lastLoginTime": None, # 마지막 로그인 시간
|
|
"lastLogoutTime": None, # 마지막 로그아웃 시간
|
|
"totalWorkload": 100, # 총 작업량
|
|
"weeklyPerformance": { # 주별 성과
|
|
"2023-01": 20, # 예시: 2023년 1주차의 작업량
|
|
"2023-02": 30, # 예시: 2023년 2주차의 작업량
|
|
},
|
|
"monthlyPerformance": { # 월별 성과
|
|
"2023-01": 50, # 예시: 2023년 1월의 작업량
|
|
"2023-02": 50, # 예시: 2023년 2월의 작업량
|
|
}
|
|
},
|
|
# 슬레이브 사용자 데이터 예시 (마스터 사용자 정보 참조)
|
|
{
|
|
"email": "T2Manager@gmail.com",
|
|
"username": "테스트2매니저",
|
|
"password": "1234",
|
|
"userType": "manager",
|
|
"master": "testMaster2@gmail.com", # 마스터 사용자 참조
|
|
"lastLoginTime": None, # 마지막 로그인 시간
|
|
"lastLogoutTime": None, # 마지막 로그아웃 시간
|
|
"totalWorkload": 100, # 총 작업량
|
|
"weeklyPerformance": { # 주별 성과
|
|
"2023-01": 20, # 예시: 2023년 1주차의 작업량
|
|
"2023-02": 30, # 예시: 2023년 2주차의 작업량
|
|
},
|
|
"monthlyPerformance": { # 월별 성과
|
|
"2023-01": 50, # 예시: 2023년 1월의 작업량
|
|
"2023-02": 50, # 예시: 2023년 2월의 작업량
|
|
}
|
|
},
|
|
{
|
|
"email": "testMaster3@gmail.com",
|
|
"username": "테스트마스터3",
|
|
"password": "1234",
|
|
"userType": "master",
|
|
"userGrade": 3, # 사용자 등급
|
|
"joinDate": now.strftime('%Y-%m-%d %H:%M:%S'), # 가입일자
|
|
"planStartDate": (now + timedelta(days=1)).strftime('%Y-%m-%d 00:00'), # 유료 플랜 시작일자
|
|
"planEndDate": (now + timedelta(days=8)).strftime('%Y-%m-%d 00:00'), # 유료 플랜 종료일자
|
|
"planDurationDays": 7, # 유료 플랜 기간
|
|
"lastLoginTime": None, # 마지막 로그인 시간
|
|
"lastLogoutTime": None, # 마지막 로그아웃 시간
|
|
"totalWorkload": 100, # 총 작업량
|
|
"weeklyPerformance": { # 주별 성과
|
|
"2023-01": 20, # 예시: 2023년 1주차의 작업량
|
|
"2023-02": 30, # 예시: 2023년 2주차의 작업량
|
|
},
|
|
"monthlyPerformance": { # 월별 성과
|
|
"2023-01": 50, # 예시: 2023년 1월의 작업량
|
|
"2023-02": 50, # 예시: 2023년 2월의 작업량
|
|
}
|
|
},
|
|
|
|
# 슬레이브 사용자 데이터 예시 (마스터 사용자 정보 참조)
|
|
{
|
|
"email": "T3slave1@gmail.com",
|
|
"username": "테스트3슬레이브1",
|
|
"password": "1234",
|
|
"userType": "slave",
|
|
"master": "testMaster3@gmail.com", # 마스터 사용자 참조
|
|
"lastLoginTime": None, # 마지막 로그인 시간
|
|
"lastLogoutTime": None, # 마지막 로그아웃 시간
|
|
"totalWorkload": 100, # 총 작업량
|
|
"weeklyPerformance": { # 주별 성과
|
|
"2023-01": 20, # 예시: 2023년 1주차의 작업량
|
|
"2023-02": 30, # 예시: 2023년 2주차의 작업량
|
|
},
|
|
"monthlyPerformance": { # 월별 성과
|
|
"2023-01": 50, # 예시: 2023년 1월의 작업량
|
|
"2023-02": 50, # 예시: 2023년 2월의 작업량
|
|
}
|
|
},
|
|
# 슬레이브 사용자 데이터 예시 (마스터 사용자 정보 참조)
|
|
{
|
|
"email": "T3slave2@gmail.com",
|
|
"username": "테스트3슬레이브2",
|
|
"password": "1234",
|
|
"userType": "slave",
|
|
"master": "testMaster3@gmail.com", # 마스터 사용자 참조
|
|
"lastLoginTime": None, # 마지막 로그인 시간
|
|
"lastLogoutTime": None, # 마지막 로그아웃 시간
|
|
"totalWorkload": 100, # 총 작업량
|
|
"weeklyPerformance": { # 주별 성과
|
|
"2023-01": 20, # 예시: 2023년 1주차의 작업량
|
|
"2023-02": 30, # 예시: 2023년 2주차의 작업량
|
|
},
|
|
"monthlyPerformance": { # 월별 성과
|
|
"2023-01": 50, # 예시: 2023년 1월의 작업량
|
|
"2023-02": 50, # 예시: 2023년 2월의 작업량
|
|
}
|
|
},
|
|
# 슬레이브 사용자 데이터 예시 (마스터 사용자 정보 참조)
|
|
{
|
|
"email": "T3Manager@gmail.com",
|
|
"username": "테스트3매니저",
|
|
"password": "1234",
|
|
"userType": "manager",
|
|
"master": "testMaster3@gmail.com", # 마스터 사용자 참조
|
|
"lastLoginTime": None, # 마지막 로그인 시간
|
|
"lastLogoutTime": None, # 마지막 로그아웃 시간
|
|
"totalWorkload": 100, # 총 작업량
|
|
"weeklyPerformance": { # 주별 성과
|
|
"2023-01": 20, # 예시: 2023년 1주차의 작업량
|
|
"2023-02": 30, # 예시: 2023년 2주차의 작업량
|
|
},
|
|
"monthlyPerformance": { # 월별 성과
|
|
"2023-01": 50, # 예시: 2023년 1월의 작업량
|
|
"2023-02": 50, # 예시: 2023년 2월의 작업량
|
|
}
|
|
}
|
|
]
|
|
|
|
# # 사용자 정보 저장
|
|
# for user in users_data:
|
|
# user['password'] = generate_password_hash(user['password']) # 비밀번호 해싱
|
|
# db.users.insert_one(user)
|
|
|
|
|
|
# 사용자 정보 업데이트 또는 추가
|
|
for user in users_data:
|
|
user['password'] = generate_password_hash(user['password']) # 비밀번호 해싱
|
|
# upsert=True 옵션을 사용하여, 문서가 없으면 추가하고, 있으면 업데이트
|
|
db.users.update_one(
|
|
{"email": user['email']},
|
|
{"$set": user},
|
|
upsert=True
|
|
) |