48 lines
1.2 KiB
Plaintext
48 lines
1.2 KiB
Plaintext
from PDAPI import *
|
|
import TempLateAPI.GERP.API.FormAPI.FormData as FormData
|
|
from Utils.Models import GERPRole
|
|
|
|
|
|
def fuzzy_search_roles(keyword, limit=5):
|
|
if not keyword or len(keyword.strip()) < 1:
|
|
return []
|
|
|
|
pattern = f"%{keyword.strip()}%"
|
|
roles = GERPRole.query.filter(
|
|
GERPRole.RoleName.like(pattern)
|
|
).limit(limit).all()
|
|
|
|
results = []
|
|
for role in roles:
|
|
results.append({
|
|
"RoleUUID": FormData.GetTable("Role").KeyToUUIDConversion("RoleUUID", role.RoleUUID, str),
|
|
"RoleName": role.RoleName,
|
|
"RoleType": role.RoleType,
|
|
"RoleStatus": role.RoleStatus,
|
|
"MatchedBy": "name",
|
|
})
|
|
return results
|
|
|
|
|
|
__metadata__ = {
|
|
"route": "{DEFAULT_ROUTE}",
|
|
"methods": ["GET"],
|
|
"blueprint": "GERP",
|
|
"permission": 1.0,
|
|
"attributes": [],
|
|
"limit": "10 per second"
|
|
}
|
|
|
|
|
|
def HandleRequest(_CleanedData):
|
|
keyword = flask.request.args.get("keyword", "").strip()
|
|
limit = min(max(int(flask.request.args.get("limit", 5)), 1), 20)
|
|
|
|
results = fuzzy_search_roles(keyword, limit)
|
|
|
|
return {
|
|
"code": 0,
|
|
"data": results,
|
|
"total": len(results)
|
|
}, 200
|