晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
| DIR:/opt/imunify360/venv/lib64/python3.11/site-packages/defence360agent/model/ |
| Current File : //opt/imunify360/venv/lib64/python3.11/site-packages/defence360agent/model/analyst_cleanup.py |
import peewee as pw
from defence360agent.model import Model, instance
from datetime import datetime, timezone, timedelta
class AnalystCleanupRequest(Model):
"""
Model for storing analyst cleanup requests.
Tracks request details and status for each cleanup request submitted.
"""
class Meta:
database = instance.db
db_table = "analyst_cleanup_requests"
id = pw.AutoField()
username = pw.CharField(null=False)
zendesk_id = pw.CharField(null=False)
ticket_link = pw.TextField(null=False)
created_at = pw.TimestampField(
null=False, default=datetime.now(timezone.utc)
)
status = pw.CharField(
null=False,
default="pending",
constraints=[
pw.Check("status in ('pending','in_progress','completed')")
],
)
last_updated = pw.TimestampField(
null=False, default=datetime.now(timezone.utc)
)
@classmethod
def create_request(cls, username, zendesk_id, ticket_link):
"""Create a new cleanup request"""
return cls.create(
username=username, zendesk_id=zendesk_id, ticket_link=ticket_link
)
@classmethod
def get_user_requests(cls, username, limit=50, offset=0):
"""Get all requests for a specific user"""
return (
cls.select()
.where(cls.username == username)
.order_by(cls.created_at.desc())
.limit(limit)
.offset(offset)
)
@classmethod
def get_all_requests(cls, limit=50, offset=0):
"""Get all requests for a sever"""
return (
cls.select()
.order_by(cls.created_at.desc())
.limit(limit)
.offset(offset)
)
@classmethod
def get_active_request_link(cls, username) -> str | None:
"""
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
"""
active_request = (
cls.select()
.where(
(cls.username == username)
& (cls.status.in_(["pending", "in_progress"]))
)
.limit(1)
).first()
return active_request.ticket_link if active_request else None
@classmethod
def update_status(cls, zendesk_id, new_status, last_updated):
"""Update the status of a request"""
return (
cls.update(status=new_status, last_updated=last_updated)
.where(cls.zendesk_id == zendesk_id)
.execute()
)
@classmethod
def get_all_relevant_requests(cls):
"""
Returns a query to fetch active cleanup requests and recently completed
requests for the specified users.
"""
# Calculate the cutoff date for "recently completed" (3 days ago)
three_days_ago = datetime.now(timezone.utc) - timedelta(days=3)
return AnalystCleanupRequest.select(
AnalystCleanupRequest.username,
AnalystCleanupRequest.zendesk_id,
AnalystCleanupRequest.status,
AnalystCleanupRequest.last_updated,
).where(
(AnalystCleanupRequest.status.in_(["pending", "in_progress"]))
| (
(AnalystCleanupRequest.status == "completed")
& (AnalystCleanupRequest.last_updated >= three_days_ago)
)
)
|