async def get(self, oid): try: agg_user =userDB.aggregate([ { '$match':{'_id': ObjectId(oid)} }, { '$lookup': { 'from': 'Department', 'localField': 'Department', 'foreignField': '_id', 'as': 'DepartmentInfo' } }, { '$project' : { 'Password': 0, 'DepartmentInfo' : { '_id' : 0 , 'TaskList' : 0} } }, { '$unwind' : "$DepartmentInfo" } ]) User = list(agg_user) return dumps(User[0]), 200 except : traceback.print_exc() return '', 400
async def patch(self, oid): try: Data = await request.get_json() print('asdf') print(oid) # req_id = Data['email'] # req_psw = Data['password'] req_grd = Data['grade'] req_dpt = Data['department'] req_name = Data['name'] req_ent = Data['etrdate'] req_stat = Data['status'] # if req_id is None or req_id is '': # return '', 400 # elif req_psw is None or req_psw is '': # return '', 400 if req_name is None or req_name is '': return '', 400 elif req_ent is None or req_ent is '': return '', 400 elif req_dpt is None or req_dpt is '': return '', 400 elif req_stat is None or req_stat is '': return '', 400 elif req_grd is None or req_grd is '': return '', 400 if req_grd == "관리자": req_grd = 0 elif req_grd == "부서장": req_grd = 1 elif req_grd == "사원": req_grd = 2 else: print("직급을 정확하게 입력해주세요") return '',410 # req_ent = datetime.datetime.strptime(req_ent, '%Y-%m-%d %h:%M:%S.%f') req_ent = datetime.datetime.strptime(req_ent, '%Y-%m-%d') userDB.update_one( {'_id': ObjectId(oid)}, {'$set':{ # 'Id': req_id, # 'Password': req_psw, 'Grade': int(req_grd), 'Department': req_dpt, 'Name': req_name, 'EtrDate': req_ent, 'Status': req_stat, 'EditDate' : datetime.datetime.now() } }) return '', 200 except: traceback.print_exc() return '', 401
async def get(self): try: req_list = TaskDB.find({}) print(datetime.datetime.now()) print(datetime.time()) print(datetime.date(2021, 4, 15)) if req_list is None or req_list == '': return '', 400 return dumps({req_list}), 200 except : traceback.print_exc()
async def delete(self, oid): try: find_userDB = userDB.find_one({'_id': ObjectId(oid)}) if find_userDB is None: return '', 400 else: userDB.delete_one({'_id': ObjectId(oid)}) return '', 200 except: traceback.print_exc() return '', 401
async def post(self): try: Data = await request.get_json() req_task= Data['taskname'] if req_task is None and req_task == '': return '', 400 # for result in range(1,100): TaskDB.insert_one({ 'Name': req_task }) return '', 201 except: traceback.print_exc() return '', 401
async def delete(self, taskId): try: find_task = TaskDB.find_one({'_id': ObjectId(taskId)}) if find_task is None: return '', 401 else: if taskId is None or taskId == '': return '', 402 else: TaskDB.delete_one({ '_id' : ObjectId(taskId) }) return '' , 200 return '', 403 except: traceback.print_exc() return '', 406
async def patch(self, taskId): Data = await request.get_json() try: find_task = TaskDB.find_one({'_id': ObjectId(taskId)}) if find_task is None or Data['Name'] is None or Data['Name'] is '': return '', 401 else: req_name = Data['Name'] TaskDB.update_one({ '_id': ObjectId(taskId) }, {'$set':{'Name': req_name}}) return '', 200 return '', 402 except: traceback.print_exc() return '', 403
async def post(self, userId, taskId): try: if taskId is not None or taskId is not '': TaskHistoryDB.insert_one({ 'StartDate': None, 'EndDate': None, 'TmpDate': None, 'Time': None, 'Status': 'working', 'Task': ObjectId(taskId), 'Description': None, 'User': ObjectId(userId), 'RestTime': None }) return '', 200 return '', 401 except: traceback.print_exc() return '', 402
async def delete(self, userId, taskId): try: find_taskH = TaskHistoryDB.find_one({'_id': ObjectId(taskId)}) if find_taskH is None and find_taskH is '': return '', 400 else: TaskHistoryDB.delete_one({'_id': ObjectId(taskId)}) return '', 200 return '', 401 except: traceback.print_exc() return '', 403 async def get(self, userId, taskId): try: return '', 200 except: traceback.print_exc() return '', 401
async def get(self, userId, taskId): try: return '', 200 except: traceback.print_exc() return '', 401
async def UserGradeList(): try: agg_user =userDB.aggregate([ { '$match':{'Grade': int(1)} }, { '$lookup': { 'from': 'Department', 'localField': 'Department', 'foreignField': '_id', 'as': 'DepartmentInfo' } }, { '$project' : { 'Password': 0, 'DepartmentInfo' : { '_id' : 0 , 'TaskList' : 0} } }, { '$unwind' : "$DepartmentInfo" } ]) if agg_user is None: return '', 400 # print('부서장: ',dumps(agg_user)) return dumps(agg_user), 200 except : traceback.print_exc() return '', 401 # # 사원관리 Searching # @app.route('/employee/search', methods=['GET']) # async def Searching(): # try: # return '', 200 # except: # traceback.print_exc() # return '', 403 # # 사원관리 Sort # @app.route('/employee/sort/<sort>/<sort_opt>', methods=['GET']) # async def Sorting(sort, sort_opt): # try: # Data = await request.get_json() # req_sort = Data['sort'] # req_sort_opt = Data['sortOpt'] # print(sort, sort_opt) # agg_user =userDB.aggregate([ # { # '$sort':{sort: int(sort_opt)} # }, # { # '$lookup': # { # 'from': 'Department', # 'localField': 'Department', # 'foreignField': '_id', # 'as': 'DepartmentInfo' # } # }, # { # '$project' : { # 'Password': 0, # 'DepartmentInfo' : { '_id' : 0 , 'TaskList' : 0} # } # }, # { # '$unwind' : "$DepartmentInfo" # } # ]) # return dumps(agg_user), 200 # except: # traceback.print_exc() # return '', 403 """ @app.route('/user/<opt>', methods=['GET'])
async def User(): try: url = urlparse(request.url) searchQuery = dict(parse_qsl(url.query)) print(searchQuery) print('사원 관리페이지 Session Chack:', session['Grade']) search = {} search_Dpt = {} if math.ceil(int(userDB.count()) / int(searchQuery['limit'])) < int(searchQuery['page']): print('페이지 초과') return '', 400 if searchQuery['search'] is not None and searchQuery['search'] != '' and len(searchQuery['search']) > 0: query = json.loads(searchQuery['search']) for key, value in query.items(): searchKey = key if searchKey == "Department": search_Dpt = { 'DepartmentInfo.Department' : {"$regex": value}} elif key == "Grade": if value == "관리자": # if session['Grade'] > 0: # return '',409 search = {"Grade" : 0} elif value == "부서장": # if session['Grade'] > 1: # return '',409 search = {"Grade" : 1} elif value == "사원": # if session['Grade']: # return '',409 search = {"Grade" : 2} # else: # return '',409 else: search = {str(key) : {"$regex": value}} print("1: ",search_Dpt) print("2: ",search) agg_user = userDB.aggregate([ {'$match' : { '$and' : [ { 'Grade' : {'$gte': 0}}, search ] } } , {'$sort': { searchQuery['orderby'] :int(searchQuery['ascending'])}}, # {'$sort': { 'Name':int(searchQuery['ascending'])}}, { '$lookup': { 'from': 'Department', 'localField': 'Department', 'foreignField': '_id', 'as': 'DepartmentInfo' } }, { '$match': search_Dpt }, { '$facet' : { 'edge' : [ { '$match' : {} }, {'$limit' : int(searchQuery['limit']) * int(searchQuery['page']) }, {'$skip' : (int(searchQuery['page']) -1) * int(searchQuery['limit']) }, { '$unwind' : {'path': "$DepartmentInfo", 'preserveNullAndEmptyArrays' : True} } ], 'UserInfo' : [ { '$group' : { '_id' : None, 'Count' : {'$sum' : 1} } } ] } }, { '$unwind': "$UserInfo" } ]) # DB 결과가 O일경우 IndexError: list index out of range 발생, 조건문 추가하기 Data = list(agg_user) # print(len(Data)) if len(Data) > 0: return dumps({ 'Data' : Data[0]['edge'], 'Count' : Data[0]['UserInfo']['Count']}), 201 return dumps({ 'Data' : [], 'Count' : 1 }), 201 except : traceback.print_exc() return '',401