Skip to content

Commit 2e1dd43

Browse files
committed
feat: ssm deadline window
closes: #571 Change-Id: I841d34e594e8dca4bf8b8772ceadb3e30ad3e6fe
1 parent 01abe23 commit 2e1dd43

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

conf/selfservice.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,9 @@ ssm_default_lifetime: 5
88
ssm_user_cloud_limit: 2
99
# Set to true to create a Jira ticket when a self-schedule is created
1010
ssm_jira_create_ticket: false
11+
12+
# Set to true to enable the scheduling window
13+
ssm_enable_sched_window: true
14+
# Set the end date for the scheduling window
15+
ssm_deadline_day: sunday
16+
ssm_deadline_hour: 21

src/quads/server/blueprints/schedules.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from datetime import datetime, timedelta
2+
from calendar import day_name
23

34
from flask import Blueprint, Response, g, jsonify, make_response, request
45

@@ -158,7 +159,20 @@ def create_schedule() -> Response:
158159
return make_response(jsonify(response), 400)
159160

160161
start = datetime.now()
161-
end = start + timedelta(days=Config.get("ssm_default_lifetime", 1))
162+
163+
ssm_deadline_day = Config.get("ssm_deadline_day", "sunday").lower()
164+
ssm_deadline_hour = Config.get("ssm_deadline_hour", "21")
165+
ssm_default_lifetime = Config.get("ssm_default_lifetime", 1)
166+
167+
day_mapping = {day.lower(): i for i, day in enumerate(day_name)}
168+
target_day = day_mapping.get(ssm_deadline_day)
169+
current_day = start.weekday()
170+
171+
days_ahead = target_day - current_day
172+
if days_ahead < ssm_default_lifetime:
173+
end = start.replace(hour=ssm_deadline_hour, minute=0, second=0, microsecond=0) + timedelta(days=days_ahead)
174+
else:
175+
end = start + timedelta(days=ssm_default_lifetime)
162176
else:
163177
start = data.get("start")
164178
end = data.get("end")

tests/api/test_schedules.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,7 @@ def test_valid_self(self, mock_datetime, test_client, auth, prefill):
256256
del response_dict["host"]["default_cloud"]["last_redefined"]
257257
del response_dict["assignment"]["created_at"]
258258
del response_dict["assignment"]["cloud"]["last_redefined"]
259+
SELF_SCHEDULE_1_RESPONSE["end"] = "Sun, 04 Jun 2023 21:00:00 GMT"
259260
assert response_dict == SELF_SCHEDULE_1_RESPONSE
260261

261262
@pytest.mark.parametrize("prefill", prefill_self_schedule, indirect=True)

0 commit comments

Comments
 (0)