newTao/testDBInput_syno.py

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
)