Skip to content

Commit ec9a98b

Browse files
committed
Added constraint for the import of persistence from the API
1 parent b223c1b commit ec9a98b

File tree

3 files changed

+65
-26
lines changed

3 files changed

+65
-26
lines changed

pyproject.toml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,13 @@ ignore = ["E402", "E711", "E712", "E721", "E722"]
77
root_package = "app"
88
include_external_packages = true
99

10+
[[tool.importlinter.contracts]]
11+
name = "Do not import the persistence layer from the API layer"
12+
type = "forbidden"
13+
source_modules = "app.blueprints.rest.v2.alerts"
14+
forbidden_modules = "app.datamgmt.alerts"
15+
allow_indirect_imports = true
16+
1017
[[tool.importlinter.contracts]]
1118
name = "Do not import sqlalchemy from the API layer"
1219
type = "forbidden"

source/app/blueprints/rest/v2/alerts.py

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
from app.blueprints.rest.parsing import parse_comma_separated_identifiers
3232
from app.blueprints.rest.v2.alerts_routes.comments import alerts_comments_blueprint
3333
from app.iris_engine.access_control.iris_user import iris_current_user
34-
from app.datamgmt.alerts.alerts_db import get_filtered_alerts
34+
from app.business.alerts import alerts_search
3535
from app.models.authorization import Permissions
3636
from app.schema.marshables import AlertSchema
3737
from app.schema.marshables import IocSchema
@@ -91,31 +91,31 @@ def search(self):
9191
else:
9292
fields = None
9393

94-
filtered_alerts = get_filtered_alerts(
95-
start_date=request.args.get('creation_start_date'),
96-
end_date=request.args.get('creation_end_date'),
97-
source_start_date=request.args.get('source_start_date'),
98-
source_end_date=request.args.get('source_end_date'),
99-
source_reference=request.args.get('source_reference'),
100-
title=request.args.get('alert_title'),
101-
description=request.args.get('alert_description'),
102-
status=request.args.get('alert_status_id', type=int),
103-
severity=request.args.get('alert_severity_id', type=int),
104-
owner=request.args.get('alert_owner_id', type=int),
105-
source=request.args.get('alert_source'),
106-
tags=request.args.get('alert_tags'),
107-
classification=request.args.get('alert_classification_id', type=int),
108-
client=request.args.get('alert_customer_id'),
109-
case_id=request.args.get('case_id', type=int),
110-
alert_ids=alert_ids,
111-
page=page,
112-
per_page=per_page,
113-
sort=request.args.get('sort'),
114-
custom_conditions=request.args.get('custom_conditions'),
115-
assets=alert_assets,
116-
iocs=alert_iocs,
117-
resolution_status=request.args.get('alert_resolution_id', type=int),
118-
current_user_id=iris_current_user.id
94+
filtered_alerts = alerts_search(
95+
iris_current_user.id,
96+
request.args.get('creation_start_date'),
97+
request.args.get('creation_end_date'),
98+
request.args.get('source_start_date'),
99+
request.args.get('source_end_date'),
100+
request.args.get('alert_title'),
101+
request.args.get('alert_description'),
102+
request.args.get('alert_status_id', type=int),
103+
request.args.get('alert_severity_id', type=int),
104+
request.args.get('alert_owner_id', type=int),
105+
request.args.get('alert_source'),
106+
request.args.get('alert_tags'),
107+
request.args.get('case_id', type=int),
108+
request.args.get('alert_customer_id'),
109+
request.args.get('alert_classification_id', type=int),
110+
alert_ids,
111+
alert_assets,
112+
alert_iocs,
113+
request.args.get('alert_resolution_id', type=int),
114+
request.args.get('source_reference'),
115+
request.args.get('custom_conditions'),
116+
page,
117+
per_page,
118+
request.args.get('sort')
119119
)
120120

121121
if filtered_alerts is None:

source/app/business/alerts.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,45 @@
3030
from app.datamgmt.alerts.alerts_db import delete_related_alerts_cache
3131
from app.datamgmt.alerts.alerts_db import get_alert_by_id
3232
from app.datamgmt.alerts.alerts_db import delete_alert
33+
from app.datamgmt.alerts.alerts_db import get_filtered_alerts
3334
from app.iris_engine.module_handler.module_handler import call_modules_hook
3435
from app.iris_engine.utils.tracker import track_activity
3536
from app.util import add_obj_history_entry
3637
from app.business.errors import ObjectNotFoundError
3738
from app.datamgmt.manage.manage_access_control_db import user_has_client_access
3839

3940

41+
def alerts_search(user_identifier, start_date, end_date, source_start_date, source_end_date, title, description,
42+
status, severity, owner, source, tags, case_identifier, customer, classification, alert_identifiers,
43+
assets, iocs, resolution_status, source_reference, custom_conditions, page, per_page, sort):
44+
return get_filtered_alerts(
45+
start_date=start_date,
46+
end_date=end_date,
47+
source_start_date=source_start_date,
48+
source_end_date=source_end_date,
49+
title=title,
50+
description=description,
51+
status=status,
52+
severity=severity,
53+
owner=owner,
54+
source=source,
55+
tags=tags,
56+
case_id=case_identifier,
57+
client=customer,
58+
classification=classification,
59+
alert_ids=alert_identifiers,
60+
assets=assets,
61+
iocs=iocs,
62+
resolution_status=resolution_status,
63+
page=page,
64+
per_page=per_page,
65+
sort=sort,
66+
current_user_id=user_identifier,
67+
source_reference=source_reference,
68+
custom_conditions=custom_conditions
69+
)
70+
71+
4072
def alerts_create(alert: Alert, iocs: list[Ioc], assets: list[CaseAssets]) -> Alert:
4173

4274
alert.alert_creation_time = datetime.utcnow()

0 commit comments

Comments
 (0)