Commit graph

83 commits

Author SHA1 Message Date
Vadim Stepanov
a936c8c7fe
Improve schedule quality feature (#1602)
# What this PR does

Before:

<img width="281" alt="Screenshot 2023-03-23 at 16 56 42"
src="https://user-images.githubusercontent.com/20116910/227279464-c883ec05-a964-4360-bda2-3443409ca90a.png">

After:

<img width="338" alt="Screenshot 2023-03-23 at 16 57 41"
src="https://user-images.githubusercontent.com/20116910/227279476-468bffba-922a-45ea-b400-5f34d6bf0534.png">


- Add scores for overloaded users, e.g. `(+25% avg)` which means the
user is scheduled to be on-call 25% more than average for given
schedule.
- Add score for gaps, e.g. `Schedule has gaps (29% not covered)` which
means 29% of time no one is scheduled to be on-call.
- Make things easier to understand when there are gaps in the schedule,
add `(see overloaded users)` text.
- Consider events for next 52 weeks (~1 year) instead of 90 days (~3
months), so the quality report is more accurate. Also treat any balance
quality >95% as perfectly balanced. These two changes (period change and
adding 95% threshold) should help eliminate false positives for _most_
schedules.
- Modify backend & frontend so the backend returns all necessary user
information to render without using the user store.
- Move quality report generation to `OnCallSchedule` model, add more
tests.

## Which issue(s) this PR fixes
Related to https://github.com/grafana/oncall/issues/1552

## Checklist

- [x] Tests updated
- [x] `CHANGELOG.md` updated
(public docs will be added in a separate PR)
2023-03-27 11:03:16 +00:00
Matias Bordese
8278ad9670
Update override delete-related updates (#1599) 2023-03-23 15:45:27 +00:00
Matias Bordese
cebfec5ef9
Add support for web overrides to Terraform schedules (#1222)
Related to #828 

- Enable web UI for API/Terraform schedules to add overrides
- Refactor backend to add a flag toggling between web-based and
iCal-based overrides (these options are mutually exclusive)

Also updated read-only tooltips (related to #1483)
2023-03-10 16:21:50 +00:00
Matias Bordese
9709cfbc73
Add force option to delete web schedule shifts (#1519)
Related to #1505
Add force param to shift delete endpoint in plugin internal API.
2023-03-09 18:39:25 +00:00
Matias Bordese
721ab9fbb9
Use UTC instead of Etc/UTC when passing tz to dateutil rrule (#1414)
Fixes https://github.com/grafana/oncall-private/issues/1648
2023-02-24 20:54:20 +00:00
Innokentii Konstantinov
59f83ed331
Revert "Revert "Rework schedules cached ical file values"" (#1382)
Reverts grafana/oncall#1377
2023-02-22 07:30:19 +01:00
Matias Bordese
b02dc6bd36
Revert "Rework schedules cached ical file values" (#1377)
Reverts grafana/oncall#1312

This change seems to have introduced some unexpected behavior with slack
user groups. Reverting to reproduce locally and push an improved update.
2023-02-22 10:16:49 +08:00
Matias Bordese
b8f15904a8
Rework schedules cached ical file values (#1312)
Related to #1216 

Set default cached empty value as `""`, while keeping `None` to indicate
a refresh is needed.
2023-02-09 08:45:20 -03:00
Joey Orlando
3cf2fcf660
optimize GET /schedules internal API endpoint (#1169)
# What this PR does

Fixes slow internal`GET /schedules` endpoints. Using the fake-data
generation script in #1128, I generated 65 calendar schedules in my
local setup. This resulted in the following endpoint performance:
![Screenshot 2023-01-24 at 12 03
16](https://user-images.githubusercontent.com/9406895/214276618-1a9848ba-eb84-49ec-a099-fdd96beac93f.png)

The responses which show ~76 queries were run on the latest `dev`
branch. Responses w/ ~26 queries were run on this branch.

Additionally:
- add typing to a few methods in `apps/schedules/ical_utils.py`
- document `apps/api/permissions/__init__.py:user_is_authorized`
function

## Which issue(s) this PR fixes

https://github.com/grafana/oncall-private/issues/1552

## Checklist

- [ ] Tests updated
- [ ] Documentation added
- [ ] `CHANGELOG.md` updated

Co-authored-by: Vadim Stepanov <vadimkerr@gmail.com>
2023-01-25 11:08:09 +01:00
Matias Bordese
374f32f489 Handle no start date when calculating by day ical shift events 2023-01-02 11:53:49 -03:00
Matias Bordese
3e8417e000 Update final schedule to consider priority level for overrides 2022-11-30 10:26:33 -03:00
Matias Bordese
1f49c6e44a Do not include event repetitions terminated before start (until rrule) 2022-11-30 08:56:19 -03:00
Matias Bordese
69f1218bab Handle error when updating ical cache from deleted web schedule 2022-11-28 10:24:52 -03:00
Ildar Iskhakov
2052faa8d1
Fix web oncall calendars not loading (#891)
* Fix oncall schedules bug

* Update custom_on_call_shift.py
2022-11-23 20:19:52 +08:00
Matias Bordese
4aca570549 Ensure start date matches by_day selection 2022-11-08 12:24:28 -03:00
Matias Bordese
a349d39f31 Enforce until on override shifts 2022-11-07 12:35:57 -03:00
Maxim Mordasov
387b334d2a
Merge pull request #720 from grafana/matiasb/daily-shifts-by-day
Enable daily/by-day shifts option for web schedules
2022-11-04 14:23:09 +00:00
Matias Bordese
4f6734dcf5 Update daily/by-day to user group id when generating weekly shifts 2022-11-03 15:26:46 -03:00
Matias Bordese
e103ec9152
Fix all-day end as datetime value
Co-authored-by: Vadim Stepanov <vadimkerr@gmail.com>
2022-11-03 11:21:42 -03:00
Matias Bordese
3e2d52ad51 Update web schedule events to return all-day as datetimes 2022-11-02 16:12:37 -03:00
Matias Bordese
98b187acd9 Add support for daily/by-day and custom interval 2022-11-02 16:12:16 -03:00
Matias Bordese
241283959a Enable daily/by-day shifts option for web schedules 2022-11-02 16:12:16 -03:00
Julia
461f284bb5 Merge branch 'dev' into web-schedule-fixes
# Conflicts:
#	engine/apps/schedules/ical_utils.py
#	engine/apps/schedules/models/custom_on_call_shift.py
2022-10-04 11:23:52 +03:00
Matias Bordese
f7c7803807 Fix related_users for no-shifts schedule 2022-10-03 14:27:22 -03:00
Vadim Stepanov
5e272f8565
Fix failing tests due to bug in month calculations (#599) 2022-10-03 11:22:02 +01:00
Matias Bordese
1392994d26
Merge pull request #526 from grafana/matiasb/fix-all-day-filter-events
Fix support for all_day events in schedule filter_events
2022-09-21 08:58:06 -03:00
Maxim Mordasov
9330b89101
Schedules alpha fixes (#541)
* schedule alpha major fixes

* Fix shift update for web schedules

* Fix priority level regex, fix getting shifts without duration

* Fix shift update for web schedules

* Fix tests for shift update

* Fix priority level test

* schedule alpha fixes

* add final schedule click handler

* fix date time picker

* fix utc timzeonr time picker

* fix utc time data

* dont use user timezone on start

Co-authored-by: Julia <ferril.darkdiver@gmail.com>
2022-09-21 11:19:59 +01:00
Julia
996e6076ab Remove unnecessary variable 2022-09-20 16:42:58 +03:00
Julia
9b9470b358 Fix shift update for web schedules 2022-09-20 13:33:33 +03:00
Julia
b1ea2b062f Fix shift update for web schedules 2022-09-20 13:19:12 +03:00
Vadim Stepanov
77984b77ab
Fix empty byday in ICAL rrule (#535) 2022-09-16 12:36:50 +01:00
Matias Bordese
4ec1727ecf Fix support for all_day events in schedule filter_events 2022-09-12 17:25:46 -03:00
Julia
67eb0b423d Merge branch 'dev' into on-call-shifts-rotation-index
# Conflicts:
#	engine/apps/schedules/models/on_call_schedule.py
2022-09-08 16:43:35 +03:00
Matias Bordese
2d13f9116b Update shift preview to return events for (all) affected shifts 2022-09-08 09:33:51 -03:00
Julia
f24aacfddc Fix rotation index calculation 2022-09-08 12:51:39 +03:00
Matias Bordese
a4c036d5aa Update preview rotation start logic to match update logic 2022-09-07 15:37:03 -03:00
Julia
e029464fa2 Update calculating rotation index for updated shift, fix schedule preview with respect to rotation index 2022-09-07 19:02:24 +03:00
Julia
9f71b5d72f Merge branch 'dev' into on-call-shifts-rotation-index 2022-09-07 18:54:39 +03:00
Matias Bordese
026474b43b
Merge pull request #486 from grafana/matiasb/update-preview-shift-pk-reuse
Update web schedule shift preview PK reusing logic
2022-09-07 11:35:34 -03:00
Matias Bordese
a7c44b4c08 Update preview to keep final behavior when changing a future shift 2022-09-07 11:23:40 -03:00
Julia
5c0d0ace3e Remove user group rotation reordering 2022-09-06 12:59:38 +03:00
Matias Bordese
d74f4cc2be Update next shifts per user to list all (web) schedule users 2022-09-05 17:23:35 -03:00
Matias Bordese
c413c54329 Update web schedule shift preview PK reusing logic 2022-09-05 15:50:58 -03:00
Matias Bordese
8ff2f41550 Add comment about possible missing rrule in get_rotation_date 2022-09-05 09:48:02 -03:00
Matias Bordese
7fd0e5ecf7 Skip empty events in final schedule 2022-09-02 16:45:35 -03:00
Matias Bordese
37eefe8e08 Allow empty users when previewing a web schedule shift 2022-09-02 16:45:35 -03:00
Matias Bordese
2a058b4acc Fix issue post-refactoring 2022-09-02 16:45:35 -03:00
Matias Bordese
84dd4eebf5 Update shift preview to reuse shift PK when previewing update 2022-09-02 16:45:35 -03:00
Matias Bordese
c84f53c2b7 Handle shift previews for rotation updates 2022-09-02 16:45:35 -03:00
Matias Bordese
11175e27e5 Combine same-shift schedule events early 2022-09-02 16:45:35 -03:00