-
-
Notifications
You must be signed in to change notification settings - Fork 821
[19.0][OU-ADD] hr_attendance + hr_recruitment_skills: pre-migration column renames #5635
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
6 changes: 6 additions & 0 deletions
6
openupgrade_scripts/scripts/hr_attendance/19.0.2.0/post-migration.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| from openupgradelib import openupgrade | ||
|
|
||
|
|
||
| @openupgrade.migrate() | ||
| def migrate(env, version): | ||
| openupgrade.load_data(env, "hr_attendance", "19.0.2.0/noupdate_changes.xml") |
54 changes: 54 additions & 0 deletions
54
openupgrade_scripts/scripts/hr_attendance/19.0.2.0/pre-migration.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,54 @@ | ||
| from openupgradelib import openupgrade | ||
|
|
||
| _renamed_models = [ | ||
| ("hr.attendance.overtime", "hr.attendance.overtime.line"), | ||
| ] | ||
|
|
||
| _renamed_tables = [ | ||
| ("hr_attendance_overtime", "hr_attendance_overtime_line"), | ||
| ] | ||
|
|
||
| _renamed_fields = [ | ||
| ("hr.attendance", "hr_attendance", "in_city", "in_location"), | ||
| ("hr.attendance", "hr_attendance", "out_city", "out_location"), | ||
| ] | ||
|
|
||
| # Removed in 19.0 but noupdate, so not swept by the standard module update. | ||
| _obsolete_rule_xmlids = [ | ||
| "hr_attendance.hr_attendance_overtime_rule_employee_company", | ||
| "hr_attendance.hr_attendance_rule_attendance_officer_overtime_restrict", | ||
| "hr_attendance.hr_attendance_rule_attendance_overtime_admin", | ||
| "hr_attendance.hr_attendance_rule_attendance_overtime_simple_user", | ||
| ] | ||
|
|
||
|
|
||
| @openupgrade.migrate() | ||
| def migrate(env, version): | ||
| openupgrade.rename_models(env.cr, _renamed_models) | ||
| openupgrade.rename_tables(env.cr, _renamed_tables) | ||
| openupgrade.rename_fields(env, _renamed_fields) | ||
| openupgrade.delete_records_safely_by_xml_id(env, _obsolete_rule_xmlids) | ||
| # Precreate the new required/computed columns for the renamed table's rows. | ||
| openupgrade.logged_query( | ||
| env.cr, | ||
| """ | ||
| ALTER TABLE hr_attendance_overtime_line | ||
| ADD COLUMN IF NOT EXISTS status varchar, | ||
| ADD COLUMN IF NOT EXISTS manual_duration double precision | ||
| """, | ||
| ) | ||
| openupgrade.logged_query( | ||
| env.cr, | ||
| "UPDATE hr_attendance_overtime_line SET status = 'approved' " | ||
| "WHERE status IS NULL", | ||
| ) | ||
| openupgrade.logged_query( | ||
| env.cr, | ||
| "UPDATE hr_attendance_overtime_line SET manual_duration = duration " | ||
| "WHERE manual_duration IS NULL", | ||
| ) | ||
| openupgrade.logged_query( | ||
| env.cr, | ||
| "UPDATE hr_attendance_overtime_line SET date = create_date::date " | ||
| "WHERE date IS NULL", | ||
| ) |
130 changes: 130 additions & 0 deletions
130
openupgrade_scripts/scripts/hr_attendance/19.0.2.0/upgrade_analysis_work.txt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,130 @@ | ||
| ---Models in module 'hr_attendance'--- | ||
| obsolete model hr.attendance.overtime (renamed to hr.attendance.overtime.line) | ||
| new model hr.attendance.overtime.line (renamed from hr.attendance.overtime) | ||
|
|
||
| # DONE: rename_models + rename_tables in pre-migration.py | ||
|
|
||
| new model hr.attendance.overtime.rule | ||
| new model hr.attendance.overtime.ruleset | ||
|
|
||
| # NOTHING TO DO: new feature | ||
|
|
||
| ---Fields in module 'hr_attendance'--- | ||
| hr_attendance / hr.attendance / date (date) : NEW required, isfunction: function, stored | ||
| hr_attendance / hr.attendance / in_city (char) : DEL | ||
| hr_attendance / hr.attendance / in_country_name (char) : DEL | ||
| hr_attendance / hr.attendance / in_location (char) : NEW | ||
| hr_attendance / hr.attendance / linked_overtime_ids (many2many): NEW relation: hr.attendance.overtime.line, hasdefault: compute, stored: False | ||
| hr_attendance / hr.attendance / out_city (char) : DEL | ||
| hr_attendance / hr.attendance / out_country_name (char) : DEL | ||
| hr_attendance / hr.attendance / out_location (char) : NEW | ||
|
dnplkndll marked this conversation as resolved.
|
||
| hr_attendance / hr.attendance / validated_overtime_hours (float): now a function | ||
|
|
||
| # DONE: rename in_city->in_location, out_city->out_location in pre-migration | ||
|
|
||
| hr_attendance / hr.attendance.overtime / _order : _order is now 'time_start' ('date desc') | ||
| hr_attendance / hr.attendance.overtime / adjustment (boolean) : DEL | ||
| hr_attendance / hr.attendance.overtime / date (date) : now required | ||
|
dnplkndll marked this conversation as resolved.
|
||
| hr_attendance / hr.attendance.overtime / duration_real (float) : DEL | ||
|
|
||
| # DONE: backfill overtime date (now required) in pre-migration | ||
|
|
||
| hr_attendance / hr.attendance.overtime.line / amount_rate (float) : NEW required, hasdefault: default | ||
| hr_attendance / hr.attendance.overtime.line / manual_duration (float) : NEW hasdefault: compute | ||
|
dnplkndll marked this conversation as resolved.
|
||
| hr_attendance / hr.attendance.overtime.line / rule_ids (many2many) : NEW relation: hr.attendance.overtime.rule | ||
| hr_attendance / hr.attendance.overtime.line / status (selection) : NEW required, selection_keys: ['approved', 'refused', 'to_approve'], hasdefault: compute | ||
|
dnplkndll marked this conversation as resolved.
|
||
| hr_attendance / hr.attendance.overtime.line / time_start (datetime) : NEW | ||
| hr_attendance / hr.attendance.overtime.line / time_stop (datetime) : NEW | ||
|
|
||
| # DONE: precreate status='approved' + manual_duration=duration in pre-migration | ||
|
|
||
| hr_attendance / hr.attendance.overtime.rule / amount_rate (float) : NEW hasdefault: default | ||
| hr_attendance / hr.attendance.overtime.rule / base_off (selection) : NEW required, selection_keys: ['quantity', 'timing'], hasdefault: default | ||
| hr_attendance / hr.attendance.overtime.rule / description (html) : NEW | ||
| hr_attendance / hr.attendance.overtime.rule / employee_tolerance (float) : NEW | ||
| hr_attendance / hr.attendance.overtime.rule / employer_tolerance (float) : NEW | ||
| hr_attendance / hr.attendance.overtime.rule / expected_hours (float) : NEW | ||
| hr_attendance / hr.attendance.overtime.rule / expected_hours_from_contract (boolean): NEW hasdefault: default | ||
| hr_attendance / hr.attendance.overtime.rule / name (char) : NEW required | ||
| hr_attendance / hr.attendance.overtime.rule / paid (boolean) : NEW | ||
| hr_attendance / hr.attendance.overtime.rule / quantity_period (selection) : NEW selection_keys: ['day', 'week'], hasdefault: default | ||
| hr_attendance / hr.attendance.overtime.rule / resource_calendar_id (many2one): NEW relation: resource.calendar | ||
| hr_attendance / hr.attendance.overtime.rule / ruleset_id (many2one) : NEW relation: hr.attendance.overtime.ruleset, required | ||
| hr_attendance / hr.attendance.overtime.rule / sequence (integer) : NEW hasdefault: default | ||
| hr_attendance / hr.attendance.overtime.rule / timing_start (float) : NEW hasdefault: default | ||
| hr_attendance / hr.attendance.overtime.rule / timing_stop (float) : NEW hasdefault: default | ||
| hr_attendance / hr.attendance.overtime.rule / timing_type (selection) : NEW selection_keys: ['leave', 'non_work_days', 'schedule', 'work_days'], hasdefault: default | ||
| hr_attendance / hr.attendance.overtime.ruleset / active (boolean) : NEW hasdefault: default | ||
| hr_attendance / hr.attendance.overtime.ruleset / company_id (many2one) : NEW relation: res.company, hasdefault: default | ||
| hr_attendance / hr.attendance.overtime.ruleset / country_id (many2one) : NEW relation: res.country, hasdefault: default | ||
| hr_attendance / hr.attendance.overtime.ruleset / description (html) : NEW | ||
| hr_attendance / hr.attendance.overtime.ruleset / name (char) : NEW required | ||
| hr_attendance / hr.attendance.overtime.ruleset / rate_combination_mode (selection): NEW required, selection_keys: ['max', 'sum'], hasdefault: default | ||
| hr_attendance / hr.attendance.overtime.ruleset / rule_ids (one2many) : NEW relation: hr.attendance.overtime.rule | ||
| hr_attendance / hr.employee / overtime_ids (one2many) : relation is now 'hr.attendance.overtime.line' ('hr.attendance.overtime') [nothing to do] | ||
| hr_attendance / hr.version / ruleset_id (many2one) : NEW relation: hr.attendance.overtime.ruleset, hasdefault: default | ||
| hr_attendance / res.company / attendance_device_tracking (boolean): NEW hasdefault: default | ||
|
|
||
| # NOTHING TO DO | ||
|
|
||
| ---XML records in module 'hr_attendance'--- | ||
| NEW hr.attendance.overtime.rule: hr_attendance.hr_attendance_overtime_employee_schedule_rule (noupdate) | ||
| NEW hr.attendance.overtime.rule: hr_attendance.hr_attendance_overtime_non_working_days_rule (noupdate) | ||
| NEW hr.attendance.overtime.ruleset: hr_attendance.hr_attendance_default_ruleset (noupdate) | ||
| NEW ir.actions.act_window: hr_attendance.hr_attendance_overtime_rule_action | ||
| NEW ir.actions.act_window: hr_attendance.hr_attendance_overtime_ruleset_action | ||
| DEL ir.actions.act_window: hr_attendance.hr_attendance_overtime_action | ||
| DEL ir.actions.client: hr_attendance.hr_attendance_action_install_kiosk_pwa | ||
| NEW ir.model.access: hr_attendance.access_hr_attendance_overtime_line_officer | ||
| NEW ir.model.access: hr_attendance.access_hr_attendance_overtime_line_own_reader | ||
| NEW ir.model.access: hr_attendance.access_hr_attendance_overtime_rule_admin | ||
| NEW ir.model.access: hr_attendance.access_hr_attendance_overtime_rule_officer | ||
| NEW ir.model.access: hr_attendance.access_hr_attendance_overtime_rule_user | ||
| NEW ir.model.access: hr_attendance.access_hr_attendance_overtime_ruleset_admin | ||
| NEW ir.model.access: hr_attendance.access_hr_attendance_overtime_ruleset_hr_manager | ||
| NEW ir.model.access: hr_attendance.access_hr_attendance_own_reader | ||
| DEL ir.model.access: hr_attendance.access_hr_attendance_admin_overtime | ||
| DEL ir.model.access: hr_attendance.access_hr_attendance_officer_overtime | ||
| DEL ir.model.access: hr_attendance.access_hr_attendance_overtime_user | ||
| NEW ir.model.constraint: hr_attendance.constraint_hr_attendance_overtime_line_overtime_start_before_end | ||
| NEW ir.model.constraint: hr_attendance.constraint_hr_attendance_overtime_rule_timing_start_is_hour | ||
| NEW ir.model.constraint: hr_attendance.constraint_hr_attendance_overtime_rule_timing_stop_is_hour | ||
| NEW ir.rule: hr_attendance.hr_attendance_overtime_line_rule_admin (noupdate) | ||
| NEW ir.rule: hr_attendance.hr_attendance_overtime_line_rule_employee_company (noupdate) | ||
| NEW ir.rule: hr_attendance.hr_attendance_overtime_line_rule_officer (noupdate) | ||
| NEW ir.rule: hr_attendance.hr_attendance_overtime_line_rule_own_reader (noupdate) | ||
| NEW ir.rule: hr_attendance.hr_attendance_overtime_ruleset_rule (noupdate) | ||
| NEW ir.rule: hr_attendance.hr_attendance_overtime_ruleset_rule_group_hr_attendance_manager (noupdate) | ||
| DEL ir.rule: hr_attendance.hr_attendance_overtime_rule_employee_company (noupdate) | ||
| DEL ir.rule: hr_attendance.hr_attendance_rule_attendance_officer_overtime_restrict (noupdate) | ||
| DEL ir.rule: hr_attendance.hr_attendance_rule_attendance_overtime_admin (noupdate) | ||
| DEL ir.rule: hr_attendance.hr_attendance_rule_attendance_overtime_simple_user (noupdate) | ||
|
dnplkndll marked this conversation as resolved.
|
||
|
|
||
| # DONE: pre-migration deletes the obsolete noupdate ir.rule records | ||
|
|
||
| NEW ir.ui.menu: hr_attendance.menu_hr_attendance_attendance_reporting | ||
| NEW ir.ui.menu: hr_attendance.menu_hr_attendance_configuration | ||
| NEW ir.ui.menu: hr_attendance.menu_hr_attendance_employee | ||
| NEW ir.ui.menu: hr_attendance.menu_hr_attendance_onboarding | ||
| NEW ir.ui.menu: hr_attendance.menu_hr_attendance_overtime_rulesets | ||
| NEW ir.ui.menu: hr_attendance.menu_hr_attendance_overview | ||
| NEW ir.ui.menu: hr_attendance.menu_hr_attendance_view_dashboard | ||
| DEL ir.ui.menu: hr_attendance.menu_hr_attendance_view_attendances | ||
| NEW ir.ui.view: hr_attendance.hr_attendance_employee_simple_form_view | ||
| NEW ir.ui.view: hr_attendance.hr_attendance_overtime_rule_view_form | ||
| NEW ir.ui.view: hr_attendance.hr_attendance_overtime_rule_view_list | ||
| NEW ir.ui.view: hr_attendance.hr_attendance_overtime_ruleset_view_filter | ||
| NEW ir.ui.view: hr_attendance.hr_attendance_overtime_ruleset_view_form | ||
| NEW ir.ui.view: hr_attendance.hr_attendance_overtime_ruleset_view_list | ||
| NEW ir.ui.view: hr_attendance.hr_employee_public_view_form | ||
| NEW ir.ui.view: hr_attendance.hr_employee_search_view | ||
| DEL ir.ui.view: hr_attendance.hr_attendance_overtime_view_pivot | ||
| DEL ir.ui.view: hr_attendance.hr_attendance_validated_hours_employee_simple_tree_view | ||
| DEL ir.ui.view: hr_attendance.hr_user_view_form | ||
| DEL ir.ui.view: hr_attendance.view_attendance_overtime_graph | ||
| DEL ir.ui.view: hr_attendance.view_attendance_overtime_search | ||
| DEL ir.ui.view: hr_attendance.view_attendance_overtime_tree | ||
| NEW res.groups: hr_attendance.group_hr_attendance_user | ||
| NEW res.groups.privilege: hr_attendance.res_groups_privilege_attendances | ||
|
|
||
| # NOTHING TO DO | ||
8 changes: 8 additions & 0 deletions
8
openupgrade_scripts/scripts/hr_holidays_attendance/19.0.1.0/post-migration.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| from openupgradelib import openupgrade | ||
|
|
||
|
|
||
| @openupgrade.migrate() | ||
| def migrate(env, version): | ||
| openupgrade.load_data( | ||
| env, "hr_holidays_attendance", "19.0.1.0/noupdate_changes.xml" | ||
| ) |
12 changes: 12 additions & 0 deletions
12
openupgrade_scripts/scripts/hr_holidays_attendance/19.0.1.0/pre-migration.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| from openupgradelib import openupgrade | ||
|
|
||
| # overtime_id removed in 19.0; drop the column whose FK the overtime rename invalidated. | ||
| _dropped_columns = [ | ||
| ("hr_leave", "overtime_id"), | ||
| ("hr_leave_allocation", "overtime_id"), | ||
| ] | ||
|
|
||
|
|
||
| @openupgrade.migrate() | ||
| def migrate(env, version): | ||
| openupgrade.drop_columns(env.cr, _dropped_columns) |
45 changes: 45 additions & 0 deletions
45
openupgrade_scripts/scripts/hr_holidays_attendance/19.0.1.0/upgrade_analysis_work.txt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,45 @@ | ||
| ---Models in module 'hr_holidays_attendance'--- | ||
| new model hr.leave.attendance.report [sql_view] | ||
|
|
||
| # NOTHING TO DO | ||
|
|
||
| ---Fields in module 'hr_holidays_attendance'--- | ||
| hr_holidays_attendance / hr.attendance.overtime.line / compensable_as_leave (boolean): NEW | ||
| hr_holidays_attendance / hr.attendance.overtime.rule / compensable_as_leave (boolean): NEW hasdefault: default | ||
| hr_holidays_attendance / hr.leave / employee_overtime (float) : not related anymore | ||
| hr_holidays_attendance / hr.leave / employee_overtime (float) : now a function | ||
|
|
||
| # NOTHING TO DO | ||
|
|
||
| hr_holidays_attendance / hr.leave / overtime_id (many2one) : DEL relation: hr.attendance.overtime | ||
|
|
||
| # DONE: drop overtime_id column in pre-migration | ||
|
|
||
| hr_holidays_attendance / hr.leave.accrual.level / frequency (False) : NEW selection_keys: ['bimonthly', 'biyearly', 'daily', 'hourly', 'monthly', 'weekly', 'worked_hours', 'yearly'], mode: modify | ||
| hr_holidays_attendance / hr.leave.accrual.level / frequency_hourly_source (selection): DEL selection_keys: ['attendance', 'calendar'] | ||
| hr_holidays_attendance / hr.leave.allocation / employee_overtime (float) : not related anymore | ||
| hr_holidays_attendance / hr.leave.allocation / employee_overtime (float) : now a function | ||
|
|
||
| # NOTHING TO DO | ||
|
|
||
| hr_holidays_attendance / hr.leave.allocation / overtime_id (many2one) : DEL relation: hr.attendance.overtime | ||
|
|
||
| # DONE: drop overtime_id column in pre-migration | ||
|
|
||
| ---XML records in module 'hr_holidays_attendance'--- | ||
| DEL hr.leave.type: hr_holidays_attendance.holiday_status_extra_hours [renamed to hr_holidays module] (noupdate) | ||
|
dnplkndll marked this conversation as resolved.
|
||
| NEW ir.actions.act_window: hr_holidays_attendance.hr_leave_attendance_report_action | ||
| DEL ir.actions.act_window: hr_holidays_attendance.hr_leave_allocation_overtime_action | ||
| NEW ir.model.access: hr_holidays_attendance.access_hr_leave_attendance_report_manager | ||
| NEW ir.ui.menu: hr_holidays_attendance.hr_leave_attendance_report | ||
| NEW ir.ui.view: hr_holidays_attendance.hr_attendance_employee_simple_tree_view | ||
| NEW ir.ui.view: hr_holidays_attendance.hr_attendance_overtime_rule_view_form | ||
| NEW ir.ui.view: hr_holidays_attendance.hr_leave_attendance_report_view_form | ||
| NEW ir.ui.view: hr_holidays_attendance.hr_leave_attendance_report_view_list | ||
| NEW ir.ui.view: hr_holidays_attendance.hr_leave_attendance_report_view_pivot | ||
| NEW ir.ui.view: hr_holidays_attendance.hr_leave_attendance_report_view_search | ||
| NEW ir.ui.view: hr_holidays_attendance.view_attendance_overtime_line_list | ||
| DEL ir.ui.view: hr_holidays_attendance.hr_leave_allocation_overtime_view_form | ||
| DEL ir.ui.view: hr_holidays_attendance.res_users_view_form | ||
|
|
||
| # NOTHING TO DO | ||
6 changes: 6 additions & 0 deletions
6
openupgrade_scripts/scripts/hr_recruitment_skills/19.0.1.0/post-migration.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| from openupgradelib import openupgrade | ||
|
|
||
|
|
||
| @openupgrade.migrate() | ||
| def migrate(env, version): | ||
| openupgrade.load_data(env, "hr_recruitment_skills", "19.0.1.0/noupdate_changes.xml") |
26 changes: 26 additions & 0 deletions
26
openupgrade_scripts/scripts/hr_recruitment_skills/19.0.1.0/pre-migration.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| from openupgradelib import openupgrade | ||
|
|
||
| _renamed_models = [ | ||
| ("hr.candidate.skill", "hr.applicant.skill"), | ||
| ] | ||
|
|
||
| _renamed_tables = [ | ||
| ("hr_candidate_skill", "hr_applicant_skill"), | ||
| ("hr_candidate_hr_skill_rel", "hr_applicant_hr_skill_rel"), | ||
| ] | ||
|
|
||
| _renamed_fields = [ | ||
| ("hr.applicant.skill", "hr_applicant_skill", "candidate_id", "applicant_id"), | ||
| ] | ||
|
|
||
| _renamed_columns = { | ||
| "hr_applicant_hr_skill_rel": [("hr_candidate_id", "hr_applicant_id")], | ||
| } | ||
|
|
||
|
|
||
| @openupgrade.migrate() | ||
| def migrate(env, version): | ||
| openupgrade.rename_models(env.cr, _renamed_models) | ||
| openupgrade.rename_tables(env.cr, _renamed_tables) | ||
| openupgrade.rename_fields(env, _renamed_fields) | ||
| openupgrade.rename_columns(env.cr, _renamed_columns) |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.