mirror of
https://github.com/Sea-Haven-Industries/afterhours-shift-manager.git
synced 2026-10-04 17:12:05 +00:00
Fix dependabot directories and admin weekend shift handling
Dependabot now scans per-function requirement directories instead of the repo root. Admin override/open/clear commands accept an optional day/night parameter for weekend day shift management.
This commit is contained in:
parent
69220afb9a
commit
745f8cd31e
2 changed files with 38 additions and 17 deletions
7
.github/dependabot.yml
vendored
7
.github/dependabot.yml
vendored
|
|
@ -1,7 +1,12 @@
|
||||||
version: 2
|
version: 2
|
||||||
updates:
|
updates:
|
||||||
- package-ecosystem: "pip"
|
- package-ecosystem: "pip"
|
||||||
directory: "/"
|
directories:
|
||||||
|
- "/src/slack-bot"
|
||||||
|
- "/src/weekly-post"
|
||||||
|
- "/src/roster-sync"
|
||||||
|
- "/src/ring-scheduler"
|
||||||
|
- "/src/shared"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "weekly"
|
interval: "weekly"
|
||||||
assignees:
|
assignees:
|
||||||
|
|
|
||||||
|
|
@ -594,9 +594,9 @@ def create_app(
|
||||||
respond(
|
respond(
|
||||||
text=(
|
text=(
|
||||||
"*Admin Commands:*\n"
|
"*Admin Commands:*\n"
|
||||||
"`admin override <date> <ext>` — Assign shift\n"
|
"`admin override <date> <ext> [day|night]` — Assign shift\n"
|
||||||
"`admin open <date>` — Mark open\n"
|
"`admin open <date> [day|night]` — Mark open\n"
|
||||||
"`admin clear <date>` — Remove override\n"
|
"`admin clear <date> [day|night]` — Remove override\n"
|
||||||
"`admin roster add <ext> <name>` — Add employee\n"
|
"`admin roster add <ext> <name>` — Add employee\n"
|
||||||
"`admin roster remove <ext>` — Remove employee\n"
|
"`admin roster remove <ext>` — Remove employee\n"
|
||||||
"`admin roster rename <ext> <name>` — Rename"
|
"`admin roster rename <ext> <name>` — Rename"
|
||||||
|
|
@ -608,59 +608,75 @@ def create_app(
|
||||||
|
|
||||||
if subcmd == "override":
|
if subcmd == "override":
|
||||||
if len(parts) < 4:
|
if len(parts) < 4:
|
||||||
respond(text="Usage: `/oncall admin override <date> <extension>`")
|
respond(
|
||||||
|
text="Usage: `/oncall admin override <date> <extension> [day|night]`"
|
||||||
|
)
|
||||||
return
|
return
|
||||||
date = parse_date(parts[2])
|
date = parse_date(parts[2])
|
||||||
if not date:
|
if not date:
|
||||||
respond(text=f"Couldn't parse date: `{parts[2]}`")
|
respond(text=f"Couldn't parse date: `{parts[2]}`")
|
||||||
return
|
return
|
||||||
ext = parts[3]
|
ext = parts[3]
|
||||||
|
shift_type = (
|
||||||
|
parts[4] if len(parts) > 4 and parts[4] in ("day", "night") else "night"
|
||||||
|
)
|
||||||
employee = schedule.get_employee_by_extension(ext)
|
employee = schedule.get_employee_by_extension(ext)
|
||||||
if not employee:
|
if not employee:
|
||||||
respond(text=f"Extension `{ext}` not found in the roster.")
|
respond(text=f"Extension `{ext}` not found in the roster.")
|
||||||
return
|
return
|
||||||
date_str = date.strftime("%Y-%m-%d")
|
date_str = date.strftime("%Y-%m-%d")
|
||||||
schedule.set_override(date_str, employee["extension"], employee["name"])
|
schedule.set_override(
|
||||||
if is_today(date_str) and _is_active_shift_type("night"):
|
date_str, employee["extension"], employee["name"], shift_type
|
||||||
|
)
|
||||||
|
if is_today(date_str) and _is_active_shift_type(shift_type):
|
||||||
_update_3cx_routing(employee["extension"])
|
_update_3cx_routing(employee["extension"])
|
||||||
|
label = "Day" if shift_type == "day" else "Night"
|
||||||
respond(
|
respond(
|
||||||
text=f"Override set: *{date.strftime('%A, %b %-d')}* → {employee['name']} (Ext {ext})"
|
text=f"Override set: *{date.strftime('%A, %b %-d')}* ({label}) → {employee['name']} (Ext {ext})"
|
||||||
)
|
)
|
||||||
_refresh_schedule_post(client)
|
_refresh_schedule_post(client)
|
||||||
|
|
||||||
elif subcmd == "open":
|
elif subcmd == "open":
|
||||||
if len(parts) < 3:
|
if len(parts) < 3:
|
||||||
respond(text="Usage: `/oncall admin open <date>`")
|
respond(text="Usage: `/oncall admin open <date> [day|night]`")
|
||||||
return
|
return
|
||||||
date = parse_date(parts[2])
|
date = parse_date(parts[2])
|
||||||
if not date:
|
if not date:
|
||||||
respond(text=f"Couldn't parse date: `{parts[2]}`")
|
respond(text=f"Couldn't parse date: `{parts[2]}`")
|
||||||
return
|
return
|
||||||
|
shift_type = (
|
||||||
|
parts[3] if len(parts) > 3 and parts[3] in ("day", "night") else "night"
|
||||||
|
)
|
||||||
date_str = date.strftime("%Y-%m-%d")
|
date_str = date.strftime("%Y-%m-%d")
|
||||||
schedule.mark_open(date_str)
|
schedule.mark_open(date_str, shift_type)
|
||||||
if is_today(date_str) and _is_active_shift_type("night"):
|
if is_today(date_str) and _is_active_shift_type(shift_type):
|
||||||
_update_3cx_routing(FALLBACK_EXTENSION)
|
_update_3cx_routing(FALLBACK_EXTENSION)
|
||||||
respond(text=f"*{date.strftime('%A, %b %-d')}* marked as open.")
|
label = "Day" if shift_type == "day" else "Night"
|
||||||
|
respond(text=f"*{date.strftime('%A, %b %-d')}* ({label}) marked as open.")
|
||||||
_refresh_schedule_post(client)
|
_refresh_schedule_post(client)
|
||||||
|
|
||||||
elif subcmd == "clear":
|
elif subcmd == "clear":
|
||||||
if len(parts) < 3:
|
if len(parts) < 3:
|
||||||
respond(text="Usage: `/oncall admin clear <date>`")
|
respond(text="Usage: `/oncall admin clear <date> [day|night]`")
|
||||||
return
|
return
|
||||||
date = parse_date(parts[2])
|
date = parse_date(parts[2])
|
||||||
if not date:
|
if not date:
|
||||||
respond(text=f"Couldn't parse date: `{parts[2]}`")
|
respond(text=f"Couldn't parse date: `{parts[2]}`")
|
||||||
return
|
return
|
||||||
|
shift_type = (
|
||||||
|
parts[3] if len(parts) > 3 and parts[3] in ("day", "night") else "night"
|
||||||
|
)
|
||||||
date_str = date.strftime("%Y-%m-%d")
|
date_str = date.strftime("%Y-%m-%d")
|
||||||
schedule.remove_override(date_str)
|
schedule.remove_override(date_str, shift_type)
|
||||||
if is_today(date_str) and _is_active_shift_type("night"):
|
if is_today(date_str) and _is_active_shift_type(shift_type):
|
||||||
day_name = date.strftime("%A")
|
day_name = date.strftime("%A")
|
||||||
ext, _name, _source = schedule.resolve_shift(
|
ext, _name, _source = schedule.resolve_shift(
|
||||||
date_str, day_name, "night"
|
date_str, day_name, shift_type
|
||||||
)
|
)
|
||||||
_update_3cx_routing(ext)
|
_update_3cx_routing(ext)
|
||||||
|
label = "Day" if shift_type == "day" else "Night"
|
||||||
respond(
|
respond(
|
||||||
text=f"Override cleared for *{date.strftime('%A, %b %-d')}* — reverted to weekly schedule."
|
text=f"Override cleared for *{date.strftime('%A, %b %-d')}* ({label}) — reverted to weekly schedule."
|
||||||
)
|
)
|
||||||
_refresh_schedule_post(client)
|
_refresh_schedule_post(client)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue