Skip to content

Commit 5f97d21

Browse files
--update backend core
1 parent 8063378 commit 5f97d21

4 files changed

Lines changed: 87 additions & 43 deletions

File tree

apps/backend-core/unpod/space/services.py

Lines changed: 74 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import datetime
12
import json
23
import logging
34

@@ -1078,49 +1079,80 @@ def get_calls(space_id: int, query_params: dict):
10781079
collection_name = "tasks"
10791080
skip, limit = getPagination(query_params, 30)
10801081
query = {
1081-
"space_id": str(space_id),
1082-
"output": {"$ne": {}, "$exists": True},
1082+
"space_id": str(space_id)
1083+
}
1084+
search_str = query_params.get("search")
1085+
call_type = query_params.get("call_type")
1086+
date_from = query_params.get("from_ts")
1087+
date_to = query_params.get("to_ts")
1088+
status = query_params.get("status")
1089+
1090+
filters = []
1091+
if date_from or date_to:
1092+
date_filter = {}
1093+
try:
1094+
if date_from:
1095+
date_filter["$gte"] = datetime.fromtimestamp(int(date_from))
1096+
if date_to:
1097+
date_filter["$lte"] = datetime.fromtimestamp(int(date_to))
1098+
filters.append({"created": date_filter})
1099+
except Exception:
1100+
pass
1101+
1102+
if call_type:
1103+
if call_type == "inbound":
1104+
call_type_values = ["inbound", "inboundPhoneCall"]
1105+
elif call_type == "outbound":
1106+
call_type_values = ["outbound", "outboundPhoneCall"]
1107+
else:
1108+
call_type_values = [call_type]
1109+
filters.append(
1110+
{
1111+
"$or": [
1112+
{"output.call_type": {"$in": call_type_values}},
1113+
{"output.type": {"$in": call_type_values}},
1114+
]
1115+
}
1116+
)
1117+
1118+
if search_str:
1119+
filters.append(
1120+
{
1121+
"$or": [
1122+
{"input.name": {"$regex": search_str, "$options": "i"}},
1123+
{"input.phone": {"$regex": search_str, "$options": "i"}},
1124+
{"output.customer": {"$regex": search_str, "$options": "i"}},
1125+
{
1126+
"output.contact_number": {
1127+
"$regex": search_str,
1128+
"$options": "i",
1129+
}
1130+
},
1131+
]
1132+
}
1133+
)
1134+
1135+
if status:
1136+
status_values = [s.strip().replace("+", " ") for s in status.split(",")]
1137+
1138+
filters.append(
1139+
{"output.post_call_data.summary.status": {"$in": status_values}}
1140+
)
1141+
1142+
if filters:
1143+
query = {**query, **{"$and": filters}}
1144+
1145+
projection = {
1146+
"_id": 1,
1147+
"task_id": 1,
1148+
"created": 1,
1149+
"status": 1,
1150+
"input.call_type": 1,
1151+
"input.name": 1,
1152+
"input.contact_number": 1,
1153+
"output.call_type": 1,
1154+
"output.customer": 1,
10831155
}
1084-
exclude_fields = [
1085-
"retry_attempt",
1086-
"thread_id",
1087-
"user_info",
1088-
"call_analytics",
1089-
"execution_analytics",
1090-
"last_status_change",
1091-
"provider",
1092-
"attachments",
1093-
"ref_id",
1094-
"failure_count",
1095-
"last_failure_reason",
1096-
"scheduled_timestamp",
1097-
"task",
1098-
"collection_ref",
1099-
"run_id",
1100-
"user_org_id",
1101-
"user",
1102-
"space_id",
1103-
"modified",
1104-
"assignee",
1105-
"execution_type",
1106-
"input.token",
1107-
"input.quality",
1108-
"output.call_id",
1109-
"output.contact_number",
1110-
"output.transcript",
1111-
"output.post_call_data",
1112-
"output.metadata",
1113-
"output.call_end_reason",
1114-
"output.recording_url",
1115-
"output.start_time",
1116-
"output.end_time",
1117-
"output.assistant_number",
1118-
"output.call_summary",
1119-
"output.duration",
1120-
"output.cost",
1121-
"output.call_status",
1122-
]
1123-
projection = {field: 0 for field in exclude_fields}
11241156

11251157
try:
11261158
collection = MongoDBQueryManager.get_collection(collection_name)

apps/backend-core/unpod/space/utils.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,8 @@ def checkPostSpaceAccess(
178178
def getAllSpaceQuery(request, space_type, case=None):
179179
query = Q(space_type=space_type)
180180
if request.user.is_authenticated:
181+
space_query = Q() # Initialize an empty Q object
182+
181183
if case:
182184
if case in ["all", "home"]:
183185
space_query = Q(

apps/backend-core/unpod/space/views.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -608,7 +608,13 @@ def list(self, request, *args, **kwargs):
608608
evals_map = KnowledgeBaseEvals.objects.filter(
609609
eval_type="knowledgebase", linked_handle__in=space_tokens
610610
).values("eval_name", "linked_handle", "gen_status", "eval_data")
611+
eval_space_tokens = []
612+
for item in evals_map:
613+
if item.get("eval_data", {}).get("space_token"):
614+
eval_space_tokens.append(item.get("eval_data", {}).get("space_token"))
611615
evals_map = {item["linked_handle"]: item for item in evals_map}
616+
space_infos = Space.objects.filter(token__in=eval_space_tokens).values('token', "slug")
617+
space_info_map = {item["token"]: item for item in space_infos}
612618

613619
private_thread_space = {}
614620
public_threads_space = {}
@@ -650,9 +656,11 @@ def list(self, request, *args, **kwargs):
650656
if space_type == "knowledge_base":
651657
space["has_evals"] = space.get("token") in evals_map
652658
if space["has_evals"]:
653-
evals_info = evals_map.get(space.get("token"))
659+
evals_info = evals_map.get(space.get("token"), {})
654660
eval_data = evals_info.pop("eval_data", {})
655661
evals_info["eval_token"] = eval_data.get("space_token")
662+
sp_evals_info = space_info_map.get(evals_info["eval_token"], {})
663+
evals_info["eval_slug"] = sp_evals_info.get("slug")
656664
space["evals_info"] = evals_info
657665
# if len(space_list):
658666
# space_list.insert(0, getAllSpaceObject())

apps/backend-core/unpod/users/admin_view/views.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ def get(self, request):
1414
form = LoginForm()
1515
config_file = os.environ.get('DJANGO_SETTINGS_MODULE')
1616
button_value = 'Log in' if 'local' in config_file.lower() else 'Send OTP'
17+
1718
return render(request, settings.ADMIN_LOGIN_TEMPLATE, {"form": form, "button_value": button_value})
1819

1920
def post(self, request):
@@ -41,6 +42,7 @@ def post(self, request):
4142
if _form.is_valid():
4243
config_file = os.environ.get('DJANGO_SETTINGS_MODULE')
4344
button_value = 'Log in' if 'local' in config_file.lower() else 'Send OTP'
45+
4446
user = authenticate(username=_form.data["username"],
4547
password=_form.data["password"])
4648
if user is not None:

0 commit comments

Comments
 (0)