def uploadAdminlist(): resp = {"code": 200, "msg": "success", "data": {}} # 权限判断 if g.current_user.super != 1: #超级管理员权限 resp["code"] = -1 resp["msg"] = "无权限" return jsonify(resp) id = request.values["venue_id"] if "venue_id" in request.values else None file = request.files["file"] if "file" in request.files else None if not id: resp["code"] = -1 resp["msg"] = "请选择场所" return jsonify(resp) if not file: resp["code"] = -1 resp["msg"] = "请选择文件" return jsonify(resp) # 保存文件 config_upload = app.config["UPLOAD"] # filename = secure_filename(file.filename) filename = file.filename ext = filename.rsplit(".", 1)[1] #后缀名 if ext not in config_upload["ext"]: resp["code"] = -1 resp["msg"] = "文件类型错误" jsonify(resp) root_path = app.root_path + config_upload["adminlist_prefix_path"] file_dir = getCurrentDate("%Y%m%d") save_dir = root_path + file_dir if not os.path.exists(save_dir): os.mkdir(save_dir) os.chmod(save_dir, stat.S_IRWXU | stat.S_IRGRP | stat.S_IRWXO) file_name = str(uuid.uuid4()).replace("-", "") + "." + ext filepathname = "{0}/{1}".format(save_dir, file_name) file.save(filepathname) adminlist = [] with open(filepathname, 'r') as f: reader = csv.reader(f) for row in reader: if not row or not row[0]: continue else: if (row[0].strip() != ""): adminlist.append(getParserValue(row[0].strip())) # 先批量删 VenueService.deleteAdminList(id) # 再批量增 VenueService.updateAdminList(id, adminlist) return jsonify(resp)
def addAdminNo(): resp = {"code": 200, "msg": "success", "data": {}} # 权限判断 if g.current_user.super != 1: #超级管理员权限 resp["code"] = -1 resp["msg"] = "无权限" return jsonify(resp) id = request.values["venue_id"] if "venue_id" in request.values else None no = request.values["no"] if "no" in request.values else None if not id: resp["code"] = -1 resp["msg"] = "请选择场所" return jsonify(resp) if not no: resp["code"] = -1 resp["msg"] = "请输入学工号" return jsonify(resp) adminlist = [] if no.strip() != "": adminlist.append(getParserValue(no.strip())) VenueService.updateAdminList(id, adminlist) return jsonify(resp)
def deleteAdminNo(): resp = {"code": 200, "msg": "success", "data": {}} # 权限判断 if g.current_user.super != 1: #超级管理员权限 resp["code"] = -1 resp["msg"] = "无权限" return jsonify(resp) id = request.values["venue_id"] if "venue_id" in request.values else None no = request.values["no"] if "no" in request.values else None if not id: resp["code"] = -1 resp["msg"] = "请选择场所" return jsonify(resp) if not no: resp["code"] = -1 resp["msg"] = "请选择人员" return jsonify(resp) VenueService.deleteAdminNo(id, no) return jsonify(resp)
def addWhiteNo(): resp = {"code": 200, "msg": "success", "data": {}} tagID = int(request.values["tagID"]) if 'tagID' in request.values else 0 id = request.values["venue_id"] if "venue_id" in request.values else None no = request.values["no"] if "no" in request.values else None if not id: resp["code"] = -1 resp["msg"] = "请选择场所" return jsonify(resp) if not no: resp["code"] = -1 resp["msg"] = "请输入学工号" return jsonify(resp) #根据id获取tag,若不存在提示先添加版本 tag = VenueService.getWhiteListTag(tagID, id) if not tag: resp["code"] = -1 resp["msg"] = "请选择白名单版本" return jsonify(resp) whitelist = [] if (no.strip() != ""): whitelist.append(getParserValue(no.strip())) # 权限判断 if g.current_user.super == 1: #超级管理员 VenueService.updateWhiteList("", tag, id, whitelist) else: VenueService.updateWhiteList(g.current_user.no, tag, id, whitelist) return jsonify(resp)
def getVenueStatistics(): resp_data = {"code": 200, "msg": "success", "data": {}} req = request.values id = req["id"] if 'id' in req else '' # 权限判断 if g.current_user.super == 1: #超级管理员 statistics = VenueService.getVenueStatistics("", id) else: #场所管理员 statistics = VenueService.getVenueStatistics(g.current_user.no, id) resp_data['data'] = statistics return jsonify(resp_data)
def getWhiteListTagsDetail(): resp_data = {} req = request.values id = req["id"] if 'id' in req else '' # 权限判断 if g.current_user.super == 1: #超级管理员 tagList = VenueService.getWhiteListTagsDetail("", id) else: #场所管理员 tagList = VenueService.getWhiteListTagsDetail(g.current_user.no, id) resp_data["list"] = tagList return jsonify(resp_data)
def getAllPOI(): resp_data = {"code": 200, "msg": "success", "data": {}} # if user_info.super==None: # 权限判断 if g.current_user.super==1:#超级管理员 data=VenueService.getAllForIndex("") else:#场所管理员 data=VenueService.getAllForIndex(g.current_user.no) # 场所列表 resp_data['data'] = data return jsonify(resp_data)
def getAdminList(): resp_data = {"code": 200, "msg": "操作成功", "data": {}} # 权限判断 if g.current_user.super != 1: #超级管理员权限 resp_data["code"] = -1 resp_data["msg"] = "无权限" return jsonify(resp_data) req = request.values id = req["id"] if 'id' in req else '' dept = req["dept"] if 'dept' in req else '' no = req["no"] if 'no' in req else '' name = req["name"] if 'name' in req else '' page = int(req["p"]) if ("p" in req and req["p"]) else 1 totalCount, adminList = VenueService.getAdminList(id, dept, no, name, page, app.config["PAGE_SIZE"]) page_params = { "total": totalCount, "page_size": app.config["PAGE_SIZE"], "page_num": page, "display": app.config["PAGE_DISPLAY"], } pages = iPagination(page_params) resp_data["list"] = adminList resp_data["pages"] = pages return jsonify(resp_data)
def getMyVenue(): resp_data = {"code": 200, "msg": "success", "venueList": {}} member_info = g.member_info venueList = VenueService.getMyVenueIdAndName(member_info.no) resp_data['venueList'] = venueList return jsonify(resp_data)
def reverseStatus(): resp = {"code": 200, "msg": "操作成功", "data": {}} req = request.values id = req["id"] if "id" in req else None if not id: resp["code"] = -1 resp["msg"] = "请选择需要操作的场所" return jsonify(resp) # 权限判断 if g.current_user.super == 1: #超级管理员 VenueService.reverseStatus("", id) else: #场所管理员 VenueService.reverseStatus(g.current_user.no, id) return jsonify(resp)
def editVenue(): resp = {"code": 200, "msg": "操作成功", "data": {}} req = request.values id = req["id"] if "id" in req else None name = req["name"] if "name" in req else None lon = req["lon"] if "lon" in req else None lat = req["lat"] if "lat" in req else None permissionType = int(req["permissionType"]) if ( "permissionType" in req and req["permissionType"]) else 1 if not name: resp["code"] = -1 resp["msg"] = "请输入场所名称" return jsonify(resp) if not lon or not lat: resp["code"] = -1 resp["msg"] = "请选择场所地点" return jsonify(resp) if permissionType not in [1, 2, 3, 4]: permissionType = 1 name = getParserValue(name) lon = getParserValue(lon) lat = getParserValue(lat) # print("name=="+name+"-lon"+lon+"-"+lat) resp["msg"] = "保存成功" if not id: #新增 # 权限判断 if g.current_user.super == 1: #超级管理员才能新增 id = VenueService.geneVenueID() createtime = getFormatDate(date=datetime.datetime.now()) VenueService.create(id, name, lon, lat, permissionType, createtime) # 获取小程序码 url = createWXcode(id) resp["wxCodeUrl"] = url else: resp["code"] = -1 resp["msg"] = "无权限" return jsonify(resp) else: #修改 # 权限判断 if g.current_user.super == 1: #超级管理员 VenueService.update("", id, name, lon, lat, permissionType) else: #场所管理员 VenueService.update(g.current_user.no, id, name, lon, lat, permissionType) return jsonify(resp)
def getVenueList(): resp_data = {} req = request.values page = int(req["p"]) if ("p" in req and req["p"]) else 1 status = int(req["status"]) if ("status" in req and req["status"]) else 0 name = req["name"] if 'name' in req else '' # 权限判断 if g.current_user.super == 1: #超级管理员 totalCount, venueList = VenueService.search("", status, name, page, app.config["PAGE_SIZE"]) resp_data["super"] = 1 else: #场所管理员 totalCount, venueList = VenueService.search(g.current_user.no, status, name, page, app.config["PAGE_SIZE"]) resp_data["super"] = 0 page_params = { "total": totalCount, "page_size": app.config["PAGE_SIZE"], "page_num": page, "display": app.config["PAGE_DISPLAY"], } pages = iPagination(page_params) _venueList = [] for record in venueList: _venueList.append({ "id": record.id, "name": record.name, "lat": record.lat, "lon": record.lon, "status": record.status, "permissionType": record.permissionType, "createtime": record.createtime, }) resp_data["list"] = _venueList resp_data["pages"] = pages return jsonify(resp_data)
def getVenueAndReviewer(): resp_data = { "code": 200, "msg": "success", "venueList": {}, "reviewerList": {} } venueList = VenueService.getVenueIdAndName() reviewerList = UserService.getReviewerNoAndName() resp_data['venueList'] = venueList resp_data['reviewerList'] = reviewerList return jsonify(resp_data)
def getWhiteList(): # timestamp=int(round(time.time())) # time_str=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(timestamp)) # print(timestamp) # print(time_str) resp_data = {} req = request.values tagID = int(req["tagID"]) if 'tagID' in req else 0 id = req["id"] if 'id' in req else '' dept = req["dept"] if 'dept' in req else '' no = req["no"] if 'no' in req else '' name = req["name"] if 'name' in req else '' page = int(req["p"]) if ("p" in req and req["p"]) else 1 # 权限判断 if g.current_user.super == 1: #超级管理员 totalCount, whiteList = VenueService.getWhiteList( "", tagID, id, dept, no, name, page, app.config["PAGE_SIZE"]) else: #场所管理员 totalCount, whiteList = VenueService.getWhiteList( g.current_user.no, tagID, id, dept, no, name, page, app.config["PAGE_SIZE"]) page_params = { "total": totalCount, "page_size": app.config["PAGE_SIZE"], "page_num": page, "display": app.config["PAGE_DISPLAY"], } pages = iPagination(page_params) resp_data["list"] = whiteList resp_data["pages"] = pages return jsonify(resp_data)
def deleteTag(): resp = {"code": 200, "msg": "操作成功", "data": {}} req = request.values id = req["id"] if "id" in req else None tagID = int(req["tagID"]) if "tagID" in req else None if not id: resp["code"] = -1 resp["msg"] = "请选择需要操作的场所" return jsonify(resp) if not tagID: resp["code"] = -1 resp["msg"] = "请选择需要操作的白名单" return jsonify(resp) # 权限判断 if g.current_user.super == 1: #超级管理员 VenueService.deleteTag("", id, tagID) else: #场所管理员 VenueService.deleteTag(g.current_user.no, id, tagID) return jsonify(resp)
def deleteWhiteNo(): resp = {"code": 200, "msg": "success", "data": {}} tagID = int(request.values["tagID"]) if 'tagID' in request.values else 0 id = request.values["venue_id"] if "venue_id" in request.values else None no = request.values["no"] if "no" in request.values else None if not id: resp["code"] = -1 resp["msg"] = "请选择场所" return jsonify(resp) if not no: resp["code"] = -1 resp["msg"] = "请选择人员" return jsonify(resp) # 权限判断 if g.current_user.super == 1: #超级管理员 VenueService.deleteWhiteNo("", tagID, id, no) else: VenueService.deleteWhiteNo(g.current_user.no, tagID, id, no) return jsonify(resp)
def addApply(): resp = {"code": 200, "msg": "success", "data": {}} req = request.values venueid = req["venueid"] if "venueid" in req else None if not venueid: resp["code"] = -1 resp["msg"] = "请选择场所" return jsonify(resp) reviewer = req["reviewer"] if "reviewer" in req else None if not reviewer: resp["code"] = -1 resp["msg"] = "请选择审核人" return jsonify(resp) starttime = req["starttime"] if "starttime" in req else None if not starttime: resp["code"] = -1 resp["msg"] = "请选择开始时间" return jsonify(resp) endtime = req["endtime"] if "endtime" in req else None if not endtime: resp["code"] = -1 resp["msg"] = "请选择结束时间" return jsonify(resp) reason = req["reason"] if "reason" in req else None if not reason: resp["code"] = -1 resp["msg"] = "请填写申请原因" return jsonify(resp) id = VenueService.geneVenueID() #生成审批id applytime = getFormatDate(date=datetime.datetime.now()) member_info = g.member_info UserService.addApply(member_info.no, venueid, reviewer, id, applytime, starttime, endtime, reason) return jsonify(resp)
def addTrackByAdmin(): resp = {"code": 1000, "msg": "venue_name", "data": {}} req = request.values venueid = req["venueid"] if "venueid" in req else None if not venueid: resp["code"] = -1 resp["msg"] = "需要场所id" return jsonify(resp) userid = req["userid"] if "userid" in req else None if not userid: resp["code"] = -1 resp["msg"] = "需要用户id" return jsonify(resp) venue_info = VenueService.getByID(venueid) if not venue_info: resp["code"] = -1 resp["msg"] = "场所不存在" return jsonify(resp) if venue_info.status == -1: resp["code"] = -1 resp["msg"] = "场所已删除" return jsonify(resp) #通过userid获取User member_info = UserService.getByUserid(userid) if not member_info: resp["code"] = -1 resp["msg"] = "用户不存在" return jsonify(resp) if member_info.leader == None: #不是领导 resp['data'] = { "userdept": member_info.dept, "username": member_info.name, } else: #是领导 resp['data'] = { "userdept": "", "username": "******", } now = datetime.datetime.now() str_now = getFormatDate(date=now) # now = datetime.datetime.now() # expiretime = now + datetime.timedelta(days=+10) # str_now = getFormatDate(date=expiretime) currentUser = g.member_info # -1直接红码 if member_info.state == -1: # print("红码") resp["code"] = 2000 resp["msg"] = venue_info.name #获取场所名称返回 放在msg里 return jsonify(resp) # 1直接绿码 if member_info.state == 1: # print("超级用户绿码") # 添加轨迹 TrackService.createByAdmin(currentUser.no, member_info.no, venueid, str_now, 1) #type=1 绿码 2黄码 resp["code"] = 1001 #1001绿码 1002黄码 #2000红码 resp["msg"] = venue_info.name #绿码 return jsonify(resp) # 判断是否有提交过审批 需要审批通过且时间合法 result2 = UserService.hasLegalApply(member_info.no, venueid, str_now) if result2 == True: TrackService.create(member_info.no, venueid, str_now, 1) #绿码 resp["code"] = 1001 #1001绿码 1002黄码 #2000红码 resp["msg"] = venue_info.name return jsonify(resp) permissionType = venue_info.permissionType if permissionType == 2: #对全体教职工开放 if "TEACHER" in member_info.labels: #教职工 # print("绿码") TrackService.createByAdmin(currentUser.no, member_info.no, venueid, str_now, 1) #type=1 绿码 2黄码 resp["code"] = 1001 #1001绿码 1002黄码 #2000红码 resp["msg"] = venue_info.name #绿码 return jsonify(resp) else: # print("黄码") TrackService.createByAdmin(currentUser.no, member_info.no, venueid, str_now, 2) #type=1 绿码 2黄码 resp["code"] = 1002 #1001绿码 1002黄码 #2000红码 resp["msg"] = venue_info.name #绿码 return jsonify(resp) elif permissionType == 3: #对全体学生开放 if "STUDENT" in member_info.labels: #学生 # print("绿码") TrackService.createByAdmin(currentUser.no, member_info.no, venueid, str_now, 1) #type=1 绿码 2黄码 resp["code"] = 1001 #1001绿码 1002黄码 #2000红码 resp["msg"] = venue_info.name #绿码 return jsonify(resp) else: # print("黄码") TrackService.createByAdmin(currentUser.no, member_info.no, venueid, str_now, 2) #type=1 绿码 2黄码 resp["code"] = 1002 #1001绿码 1002黄码 #2000红码 resp["msg"] = venue_info.name #绿码 return jsonify(resp) elif permissionType == 4: #对所有人开放 # print("绿码") TrackService.createByAdmin(currentUser.no, member_info.no, venueid, str_now, 1) #type=1 绿码 2黄码 resp["code"] = 1001 #1001绿码 1002黄码 #2000红码 resp["msg"] = venue_info.name #绿码 return jsonify(resp) else: #permissionType==1 #根据白名单授权 if member_info.state == None: #没有赋值过state状态,暂且当做黄码处理 # 添加轨迹 TrackService.createByAdmin(currentUser.no, member_info.no, venueid, str_now, 2) #type=1 绿码 2黄码 resp["code"] = 1002 #1001绿码 1002黄码 #2000红码 resp["msg"] = venue_info.name #绿码 return jsonify(resp) if member_info.state == 0: # print("需要进一步判断") result = TrackService.hasPermission(member_info.no, venueid) if result == True: # print("有权限") type = 1 resp["code"] = 1001 #1001绿码 1002黄码 #2000红码 else: type = 2 resp["code"] = 1002 #1001绿码 1002黄码 #2000红码 # 添加轨迹 TrackService.createByAdmin(currentUser.no, member_info.no, venueid, str_now, type) #绿码 resp["msg"] = venue_info.name return jsonify(resp)
def uploadWhitelist(): resp = {"code": 200, "msg": "success", "data": {}} tag_name = request.values[ "tag_name"] if 'tag_name' in request.values else "" id = request.values["venue_id"] if "venue_id" in request.values else None file = request.files["file"] if "file" in request.files else None if not id: resp["code"] = -1 resp["msg"] = "请选择场所" return jsonify(resp) if not tag_name: resp["code"] = -1 resp["msg"] = "请输入批次名" return jsonify(resp) if not file: resp["code"] = -1 resp["msg"] = "请选择文件" return jsonify(resp) tag_name = getParserValue(tag_name) #防注入 # 保存文件 config_upload = app.config["UPLOAD"] # filename = secure_filename(file.filename) filename = file.filename ext = filename.rsplit(".", 1)[1] #后缀名 if ext not in config_upload["ext"]: resp["code"] = -1 resp["msg"] = "文件类型错误" return jsonify(resp) root_path = app.root_path + config_upload["whitelist_prefix_path"] file_dir = getCurrentDate("%Y%m%d") save_dir = root_path + file_dir if not os.path.exists(save_dir): os.mkdir(save_dir) os.chmod(save_dir, stat.S_IRWXU | stat.S_IRGRP | stat.S_IRWXO) file_name = str(uuid.uuid4()).replace("-", "") + "." + ext filepathname = "{0}/{1}".format(save_dir, file_name) file.save(filepathname) whitelist = [] with open(filepathname, 'r', encoding='UTF-8') as f: reader = csv.reader(f) for row in reader: if not row or not row[0]: continue else: if row[0].strip() != "": whitelist.append(getParserValue(row[0].strip())) #防注入 # # 权限判断 # if g.current_user.super==1:#超级管理员 # # 先批量删 # VenueService.deleteWhiteList("",tag,id) # # 再批量增 # VenueService.updateWhiteList("",tag,id,whitelist) # else:#场所管理员 # # 先批量删 # VenueService.deleteWhiteList(g.current_user.no,tag,id) # # 再批量增 # VenueService.updateWhiteList(g.current_user.no,tag,id,whitelist) timestamp = int(round(time.time())) tag = { "id": timestamp, "tag": tag_name, "active": 1, } # 权限判断 if g.current_user.super == 1: #超级管理员 VenueService.updateWhiteList("", tag, id, whitelist) else: #场所管理员 VenueService.updateWhiteList(g.current_user.no, tag, id, whitelist) return jsonify(resp)
def uploadBatchAdminlist(): resp = {"code": 200, "msg": "success", "data": {}} # tag_name = request.values["tag_name"] if 'tag_name' in request.values else "" ids = request.values["venue_ids"] if "venue_ids" in request.values else None file = request.files["file"] if "file" in request.files else None ids = ids.split(",") if not ids: resp["code"] = -1 resp["msg"] = "请选择场所" return jsonify(resp) # if not tag_name: # resp["code"] = -1 # resp["msg"] = "请输入批次名" # return jsonify(resp) if not file: resp["code"] = -1 resp["msg"] = "请选择文件" return jsonify(resp) # 保存文件 config_upload = app.config["UPLOAD"] # filename = secure_filename(file.filename) filename = file.filename ext = filename.rsplit(".", 1)[1] # 后缀名 if ext not in config_upload["ext"]: resp["code"] = -1 resp["msg"] = "文件类型错误" return jsonify(resp) root_path = app.root_path + config_upload["adminlist_prefix_path"] file_dir = getCurrentDate("%Y%m%d") save_dir = root_path + file_dir if not os.path.exists(save_dir): os.mkdir(save_dir) os.chmod(save_dir, stat.S_IRWXU | stat.S_IRGRP | stat.S_IRWXO) file_name = str(uuid.uuid4()).replace("-", "") + "." + ext filepathname = "{0}/{1}".format(save_dir, file_name) file.save(filepathname) adminlist = [] with open(filepathname, 'r', encoding='UTF-8') as f: reader = csv.reader(f) for row in reader: if not row or not row[0]: continue else: if row[0].strip() != "": adminlist.append(getParserValue(row[0].strip())) # 防注入 timestamp = int(round(time.time())) tag = { "id": timestamp, # "tag": tag_name, "active": 1, } for id in ids: VenueService.updateAdminList(id, adminlist) # 权限判断 # if g.current_user.super == 1: # 超级管理员 # for id in ids: # VenueService.updateAdminList(id, adminlist) # else: # 场所管理员 # for id in ids: # VenueService.updateAdminList(id, adminlist)######################################################################################## resp["data"] = {"tagID": timestamp} return jsonify(resp)