*vh NddlZddlmZmZddlmZmZmZGddeZdS)N)Modelinstance)datetimetimezone timedeltaceZdZdZGddZejZejdZ ejdZ ej dZ ej dejejZejddejdg Zej dejejZed Zedd ZeddZededzfdZedZedZdS)AnalystCleanupRequestz Model for storing analyst cleanup requests. Tracks request details and status for each cleanup request submitted. c eZdZejZdZdS)AnalystCleanupRequest.Metaanalyst_cleanup_requestsN)__name__ __module__ __qualname__rdbdatabasedb_tableZ/opt/imunify360/venv/lib/python3.11/site-packages/defence360agent/model/analyst_cleanup.pyMetar s;-rrF)null)rdefaultpendingz/status in ('pending','in_progress','completed'))rr constraintsc2||||S)zCreate a new cleanup request)username zendesk_id ticket_link)create)clsrrrs rcreate_requestz$AnalystCleanupRequest.create_request"s&zz*+   r2rc||j|k|j||S)z$Get all requests for a specific user)selectwhererorder_by created_atdesclimitoffset)r rr)r*s rget_user_requestsz'AnalystCleanupRequest.get_user_requests)sY JJLL U3<8+ , , Xcn))++ , , U5\\ VF^^  rc||j||S)zGet all requests for a sever)r$r&r'r(r)r*)r r)r*s rget_all_requestsz&AnalystCleanupRequest.get_all_requests4sE JJLL Xcn))++ , , U5\\ VF^^  rreturnNc||j|k|jddgzd}|r|jndS)z Gets user requests for a user and checks if there are requests with [pending | in_progress] state. If found, returns ticket_link, otherwise returns None r in_progressN)r$r%rstatusin_r)firstr)r ractive_requests rget_active_request_linkz-AnalystCleanupRequest.get_active_request_link>ss JJLL U):>>9m"<==?U1XX %'' .<E~))Erc||||j|kS)zUpdate the status of a request)r2 last_updated)updater%rexecute)r r new_statusr8s r update_statusz#AnalystCleanupRequest.update_statusPs9 JJj|J D D U3>Z/ 0 0 WYY rctjtjt dz }t t jt jt j t j  t j ddgt j dkt j |kzzS)z Returns a query to fetch active cleanup requests and recently completed requests for the specified users. )daysrr0 completed) rnowrutcrr r$rrr2r8r%r3)r three_days_agos rget_all_relevant_requestsz/AnalystCleanupRequest.get_all_relevant_requestsYs"hl33iQ6G6G6GG$++ ! * ! , ! ( ! .   % " ) - -y-.H I I&-<(5GI   r)r"r)r rr__doc__rpw AutoFieldid CharFieldrr TextFieldrTimestampFieldrrArrBr'Checkr2r8 classmethodr!r+r-strr6r<rDrrrr r s ........ Br|'''H5)))J",E***K"" LHL66JR\  BHF G G F%2$ LHL66L  [    [    [ F#*FFF[F"  [   [   rr ) peeweerFdefence360agent.modelrrrrrr rrrrQs111111112222222222f f f f f Ef f f f f r