mirror of
https://github.com/Sea-Haven-Industries/afterhours-shift-manager.git
synced 2026-09-30 07:53:11 +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
|
||||
updates:
|
||||
- package-ecosystem: "pip"
|
||||
directory: "/"
|
||||
directories:
|
||||
- "/src/slack-bot"
|
||||
- "/src/weekly-post"
|
||||
- "/src/roster-sync"
|
||||
- "/src/ring-scheduler"
|
||||
- "/src/shared"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
assignees:
|
||||
|
|
|
|||
|
|
@ -594,9 +594,9 @@ def create_app(
|
|||
respond(
|
||||
text=(
|
||||
"*Admin Commands:*\n"
|
||||
"`admin override <date> <ext>` — Assign shift\n"
|
||||
"`admin open <date>` — Mark open\n"
|
||||
"`admin clear <date>` — Remove override\n"
|
||||
"`admin override <date> <ext> [day|night]` — Assign shift\n"
|
||||
"`admin open <date> [day|night]` — Mark open\n"
|
||||
"`admin clear <date> [day|night]` — Remove override\n"
|
||||
"`admin roster add <ext> <name>` — Add employee\n"
|
||||
"`admin roster remove <ext>` — Remove employee\n"
|
||||
"`admin roster rename <ext> <name>` — Rename"
|
||||
|
|
@ -608,59 +608,75 @@ def create_app(
|
|||
|
||||
if subcmd == "override":
|
||||
if len(parts) < 4:
|
||||
respond(text="Usage: `/oncall admin override <date> <extension>`")
|
||||
respond(
|
||||
text="Usage: `/oncall admin override <date> <extension> [day|night]`"
|
||||
)
|
||||
return
|
||||
date = parse_date(parts[2])
|
||||
if not date:
|
||||
respond(text=f"Couldn't parse date: `{parts[2]}`")
|
||||
return
|
||||
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)
|
||||
if not employee:
|
||||
respond(text=f"Extension `{ext}` not found in the roster.")
|
||||
return
|
||||
date_str = date.strftime("%Y-%m-%d")
|
||||
schedule.set_override(date_str, employee["extension"], employee["name"])
|
||||
if is_today(date_str) and _is_active_shift_type("night"):
|
||||
schedule.set_override(
|
||||
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"])
|
||||
label = "Day" if shift_type == "day" else "Night"
|
||||
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)
|
||||
|
||||
elif subcmd == "open":
|
||||
if len(parts) < 3:
|
||||
respond(text="Usage: `/oncall admin open <date>`")
|
||||
respond(text="Usage: `/oncall admin open <date> [day|night]`")
|
||||
return
|
||||
date = parse_date(parts[2])
|
||||
if not date:
|
||||
respond(text=f"Couldn't parse date: `{parts[2]}`")
|
||||
return
|
||||
shift_type = (
|
||||
parts[3] if len(parts) > 3 and parts[3] in ("day", "night") else "night"
|
||||
)
|
||||
date_str = date.strftime("%Y-%m-%d")
|
||||
schedule.mark_open(date_str)
|
||||
if is_today(date_str) and _is_active_shift_type("night"):
|
||||
schedule.mark_open(date_str, shift_type)
|
||||
if is_today(date_str) and _is_active_shift_type(shift_type):
|
||||
_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)
|
||||
|
||||
elif subcmd == "clear":
|
||||
if len(parts) < 3:
|
||||
respond(text="Usage: `/oncall admin clear <date>`")
|
||||
respond(text="Usage: `/oncall admin clear <date> [day|night]`")
|
||||
return
|
||||
date = parse_date(parts[2])
|
||||
if not date:
|
||||
respond(text=f"Couldn't parse date: `{parts[2]}`")
|
||||
return
|
||||
shift_type = (
|
||||
parts[3] if len(parts) > 3 and parts[3] in ("day", "night") else "night"
|
||||
)
|
||||
date_str = date.strftime("%Y-%m-%d")
|
||||
schedule.remove_override(date_str)
|
||||
if is_today(date_str) and _is_active_shift_type("night"):
|
||||
schedule.remove_override(date_str, shift_type)
|
||||
if is_today(date_str) and _is_active_shift_type(shift_type):
|
||||
day_name = date.strftime("%A")
|
||||
ext, _name, _source = schedule.resolve_shift(
|
||||
date_str, day_name, "night"
|
||||
date_str, day_name, shift_type
|
||||
)
|
||||
_update_3cx_routing(ext)
|
||||
label = "Day" if shift_type == "day" else "Night"
|
||||
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)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue