firefighter-incident 0.0.13__py3-none-any.whl → 0.0.14__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. firefighter/_version.py +16 -3
  2. firefighter/api/serializers.py +8 -8
  3. firefighter/api/urls.py +8 -1
  4. firefighter/api/views/_base.py +1 -1
  5. firefighter/api/views/components.py +5 -5
  6. firefighter/api/views/incidents.py +9 -9
  7. firefighter/firefighter/settings/components/raid.py +3 -0
  8. firefighter/incidents/admin.py +24 -24
  9. firefighter/incidents/factories.py +14 -5
  10. firefighter/incidents/forms/close_incident.py +4 -4
  11. firefighter/incidents/forms/create_incident.py +4 -4
  12. firefighter/incidents/forms/update_status.py +4 -4
  13. firefighter/incidents/menus.py +2 -2
  14. firefighter/incidents/migrations/0005_enable_from_p1_to_p5_priority.py +7 -5
  15. firefighter/incidents/migrations/0009_update_sla.py +7 -5
  16. firefighter/incidents/migrations/0020_create_incident_category_model.py +64 -0
  17. firefighter/incidents/migrations/0021_copy_component_data_to_incident_category.py +57 -0
  18. firefighter/incidents/migrations/0022_add_incident_category_fields.py +34 -0
  19. firefighter/incidents/migrations/0023_populate_incident_category_references.py +57 -0
  20. firefighter/incidents/migrations/0024_remove_component_fields_and_model.py +26 -0
  21. firefighter/incidents/migrations/0025_make_incident_category_required.py +24 -0
  22. firefighter/incidents/migrations/0026_alter_incidentcategory_options_and_more.py +39 -0
  23. firefighter/incidents/models/__init__.py +1 -1
  24. firefighter/incidents/models/group.py +1 -1
  25. firefighter/incidents/models/incident.py +15 -15
  26. firefighter/incidents/models/{component.py → incident_category.py} +30 -29
  27. firefighter/incidents/models/incident_update.py +3 -3
  28. firefighter/incidents/tables.py +9 -9
  29. firefighter/incidents/templates/layouts/partials/incident_card.html +1 -1
  30. firefighter/incidents/templates/layouts/partials/incident_timeline.html +2 -2
  31. firefighter/incidents/templates/pages/{component_detail.html → incident_category_detail.html} +13 -13
  32. firefighter/incidents/templates/pages/{component_list.html → incident_category_list.html} +2 -2
  33. firefighter/incidents/templates/pages/incident_detail.html +3 -3
  34. firefighter/incidents/urls.py +6 -6
  35. firefighter/incidents/views/components/details.py +9 -9
  36. firefighter/incidents/views/components/list.py +9 -9
  37. firefighter/incidents/views/reports.py +2 -2
  38. firefighter/incidents/views/users/details.py +2 -2
  39. firefighter/incidents/views/views.py +7 -7
  40. firefighter/jira_app/client.py +1 -1
  41. firefighter/logging/custom_json_formatter.py +2 -1
  42. firefighter/pagerduty/tasks/trigger_oncall.py +1 -1
  43. firefighter/raid/admin.py +0 -11
  44. firefighter/raid/client.py +3 -3
  45. firefighter/raid/forms.py +53 -19
  46. firefighter/raid/migrations/0003_delete_raidarea.py +16 -0
  47. firefighter/raid/models.py +2 -21
  48. firefighter/raid/serializers.py +5 -4
  49. firefighter/raid/service.py +29 -27
  50. firefighter/raid/signals/incident_created.py +4 -2
  51. firefighter/raid/utils.py +1 -1
  52. firefighter/raid/views/__init__.py +1 -1
  53. firefighter/raid/views/open_normal.py +2 -2
  54. firefighter/slack/admin.py +8 -8
  55. firefighter/slack/management/commands/switch_test_users.py +272 -0
  56. firefighter/slack/messages/slack_messages.py +5 -5
  57. firefighter/slack/migrations/0005_add_incident_categories_fields.py +33 -0
  58. firefighter/slack/migrations/0006_copy_components_to_incident_categories.py +57 -0
  59. firefighter/slack/migrations/0007_remove_components_fields.py +22 -0
  60. firefighter/slack/migrations/0008_alter_conversation_incident_categories_and_more.py +33 -0
  61. firefighter/slack/models/conversation.py +3 -3
  62. firefighter/slack/models/incident_channel.py +1 -1
  63. firefighter/slack/models/user.py +1 -1
  64. firefighter/slack/models/user_group.py +3 -3
  65. firefighter/slack/rules.py +1 -1
  66. firefighter/slack/signals/get_users.py +2 -2
  67. firefighter/slack/signals/incident_updated.py +1 -1
  68. firefighter/slack/utils.py +2 -2
  69. firefighter/slack/views/events/home.py +2 -2
  70. firefighter/slack/views/modals/base_modal/form_utils.py +15 -0
  71. firefighter/slack/views/modals/close.py +3 -3
  72. firefighter/slack/views/modals/open.py +25 -1
  73. firefighter/slack/views/modals/opening/check_current_incidents.py +2 -2
  74. firefighter/slack/views/modals/opening/details/critical.py +1 -1
  75. firefighter/slack/views/modals/opening/select_impact.py +5 -2
  76. firefighter/slack/views/modals/update_status.py +4 -4
  77. firefighter_fixtures/incidents/{components.json → incident_categories.json} +52 -52
  78. {firefighter_incident-0.0.13.dist-info → firefighter_incident-0.0.14.dist-info}/METADATA +2 -2
  79. {firefighter_incident-0.0.13.dist-info → firefighter_incident-0.0.14.dist-info}/RECORD +98 -77
  80. firefighter_tests/conftest.py +4 -5
  81. firefighter_tests/test_api/test_api_landbot.py +1 -1
  82. firefighter_tests/test_firefighter/test_sso.py +146 -0
  83. firefighter_tests/test_incidents/test_forms/test_form_utils.py +15 -15
  84. firefighter_tests/test_incidents/test_incident_urls.py +3 -3
  85. firefighter_tests/test_incidents/test_models/test_incident_category.py +165 -0
  86. firefighter_tests/test_incidents/test_models/test_incident_model.py +2 -2
  87. firefighter_tests/test_raid/test_priority_mapping.py +267 -0
  88. firefighter_tests/test_raid/test_raid_client.py +580 -0
  89. firefighter_tests/test_raid/test_raid_forms.py +795 -0
  90. firefighter_tests/test_raid/test_raid_models.py +185 -0
  91. firefighter_tests/test_raid/test_raid_serializers.py +507 -0
  92. firefighter_tests/test_raid/test_raid_service.py +442 -0
  93. firefighter_tests/test_raid/test_raid_views.py +196 -0
  94. firefighter_tests/test_slack/views/modals/test_close.py +6 -6
  95. firefighter_tests/test_slack/views/modals/test_update_status.py +4 -4
  96. firefighter_fixtures/raid/area.json +0 -1
  97. {firefighter_incident-0.0.13.dist-info → firefighter_incident-0.0.14.dist-info}/WHEEL +0 -0
  98. {firefighter_incident-0.0.13.dist-info → firefighter_incident-0.0.14.dist-info}/entry_points.txt +0 -0
  99. {firefighter_incident-0.0.13.dist-info → firefighter_incident-0.0.14.dist-info}/licenses/LICENSE +0 -0
@@ -6,7 +6,7 @@ gunicorn.conf.py,sha256=vHsTGjaKOr8FDMp6fTKYTX4AtokmPgYvvt5Mr0Q6APc,273
6
6
  main.py,sha256=CsbprHoOYhjCLpTJmq9Z_aRYFoFgWxoz2pDLuwm8Eqg,1558
7
7
  manage.py,sha256=5ivHGD13C6nJ8QvltKsJ9T9akA5he8da70HLWaEP3k8,689
8
8
  firefighter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- firefighter/_version.py,sha256=qGWOla3klVyqOm_YOKHZibHNWUcX0sSXl2bsaNtaX9E,513
9
+ firefighter/_version.py,sha256=YDX9ERYoOeE60PulkdUCy2JxmS89Xb_igX2wwbidLMQ,706
10
10
  firefighter/api/__init__.py,sha256=JQW0Bv6xwGqy7ioxx3h6UGMzkkJ4DntDpbvV1Ncgi8k,136
11
11
  firefighter/api/admin.py,sha256=x9Ysy-GiYjb0rynmFdS9g56e6n24fkN0ouGy5QD9Yrc,4629
12
12
  firefighter/api/apps.py,sha256=P5uU1_gMrDfzurdMbfqw1Bnb2uNKKcMq17WBPg2sLhc,204
@@ -14,20 +14,20 @@ firefighter/api/authentication.py,sha256=1OEeTF0NU54ZLgq2Vy3GxrR-7skj6HmobVp4UGP
14
14
  firefighter/api/models.py,sha256=HJh0PtlrUX8HVCdcdQlClwA6kIFVYnivnKmiQ30D0nQ,1533
15
15
  firefighter/api/permissions.py,sha256=1uxMg5ylFkmvIIonJVlQKL0RJAcgAY79a0y5ROiNrTg,608
16
16
  firefighter/api/renderer.py,sha256=RCQFnjZBIq9fF3dapu3kid2B1s0in8XOEBJmbh5cPlU,4057
17
- firefighter/api/serializers.py,sha256=i5orUyclAUdebP8LABUeUx-wfYDLGYKoYxz9xeck6RY,10152
18
- firefighter/api/urls.py,sha256=Ih8zkIelXa-P9Op-f7PbzZjvO_25QklJxnn6nVORjZs,1897
17
+ firefighter/api/serializers.py,sha256=PKvjmg4wJx9v4uLGUvL4UfQYWuqAcu-UhLA0yMGQhMU,10242
18
+ firefighter/api/urls.py,sha256=kjL6TwO836laVMn8e4fF4GiULyCXQkZiTDqXiVxrGtY,2103
19
19
  firefighter/api/migrations/0001_initial.py,sha256=8Q3Q_OUjAOsB_NzjYunAefC9WPk1FUwL3PA7N_gMylc,1496
20
20
  firefighter/api/migrations/0002_alter_apitokenproxy_options.py,sha256=BRuXscZS1gmcbF9mFlUyYy_Mwf-5xnUHcuFL2VA89eY,933
21
21
  firefighter/api/migrations/0003_alter_apitokenproxy_options.py,sha256=WwkVLRK9Vr0dWPcJOVAtPfiJnQTLTAnlMQZ27-CjRNo,1008
22
22
  firefighter/api/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
23
  firefighter/api/views/__init__.py,sha256=9sSE12yIKG6v0x_OeyM7g--2S05fqGb-4C2Q1J-kInA,230
24
- firefighter/api/views/_base.py,sha256=bp9KekC1C2uAOswsqyJPSqTafFreBYTl5A8FNiNrZEI,2601
25
- firefighter/api/views/components.py,sha256=FdUraX0JGcim1aqDLaEhV8E9CBBEtUKTETf1vC8Pb1Y,383
24
+ firefighter/api/views/_base.py,sha256=s3mLSJsFFS613Smr8ch1IO2w8F3p1FCKS8tEsR8EDaQ,2617
25
+ firefighter/api/views/components.py,sha256=KFFW15mkC6KL668zXAhdL96577XKjuHSMmvHhcXOY4Q,433
26
26
  firefighter/api/views/environments.py,sha256=B9j5qFnFHzXw20ZVzJIJJSKjlNXINNeXqJ8r_s0E6bE,373
27
27
  firefighter/api/views/groups.py,sha256=mu75XdBNBCMXaVCbiFSLNd0YtpmneNa5u-tgXadAsCE,331
28
28
  firefighter/api/views/incident_cost_types.py,sha256=cNYqk3ez5ud_BA45aS2ySLEIJotHdCu_fLc4YRiULk4,410
29
29
  firefighter/api/views/incident_costs.py,sha256=aZYEGlT8nF09He4hV_90QJToKFRgi-cJdrsKHR_8HUM,409
30
- firefighter/api/views/incidents.py,sha256=eKF1d3aWJVs2Jl3PItsDTY38OI9ft7KiSp0p3chQP30,10218
30
+ firefighter/api/views/incidents.py,sha256=yx_ORI-8GUSWMC8aKC0BEc-dRSmudQIxcaD-MjPZGxA,10306
31
31
  firefighter/api/views/severities.py,sha256=mdkR4GjZibydC1Dx-Sglm-f35GZxWbjmqStAx_kRv7U,352
32
32
  firefighter/components/__init__.py,sha256=Vd_Uk5Uq7Mqp6NOFp5QiniWZAyzmYLqNSFEEw1x7COk,167
33
33
  firefighter/components/avatar/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -118,7 +118,7 @@ firefighter/firefighter/settings/components/confluence.py,sha256=DPpP9FYyXZM1S3J
118
118
  firefighter/firefighter/settings/components/jira_app.py,sha256=yax_NLQsK_Fws-GC6_-QYxJDJQiLAhp56gzRFV-d0TU,843
119
119
  firefighter/firefighter/settings/components/logging.py,sha256=PzaDYr2BxspK2tXaTecUAKu7BlVZOLQYizQMAa959KA,3336
120
120
  firefighter/firefighter/settings/components/pagerduty.py,sha256=_LT0_RPhN2E4qW2XQiyywky_iGAQK_eSaabXJyAYMRc,698
121
- firefighter/firefighter/settings/components/raid.py,sha256=_QKcnPLJiEB-lG1KjJSufQ7ZEgitGh-41Th9guLrsYA,826
121
+ firefighter/firefighter/settings/components/raid.py,sha256=i16Gtgmbye-GpUqHYX0HwzC2CipQhLjGDeeOuquB7y8,1004
122
122
  firefighter/firefighter/settings/components/slack.py,sha256=zGhMKtl_LlQiPy3gTXxf1-yhMHwTSF47RR36ML-mgRs,2208
123
123
  firefighter/firefighter/settings/environments/__init__.py,sha256=yuDUD1Ekza-0cRlnHx8KA53uvY8iCfbtHOIbfLN77lo,88
124
124
  firefighter/firefighter/settings/environments/dev.py,sha256=AXgKmzpY11YFeeWKBg_6ghddI9i9D-sL3w-vhj6L0GQ,6192
@@ -128,32 +128,32 @@ firefighter/firefighter/templates/admin/base.html,sha256=JZbBsYmdr77PMeMMGHss1lY
128
128
  firefighter/firefighter/templates/admin/login.html,sha256=EY9AvQe8Y9GNQAAMr9g9Wl1hBfbYC-hLIDzY0rR5SAc,536
129
129
  firefighter/firefighter/templates/admin/send_message_conversation.html,sha256=LavOB38P3GFcDzzzdsvUhwMr5jzE4H1wyFTGITucAmE,2058
130
130
  firefighter/incidents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
131
- firefighter/incidents/admin.py,sha256=ycKw5kYL55W1n12t39Mkgx9rqfi_iawXw0waQznByfU,21805
131
+ firefighter/incidents/admin.py,sha256=ZbGmAkR9xCIBvS2h18WaV21z4pNc516P98Z4JFBF9rk,22018
132
132
  firefighter/incidents/apps.py,sha256=GySoDZsz-BH-nsIZWTOd0H1hgL9s9il1BEuLC4gKTXs,378
133
133
  firefighter/incidents/enums.py,sha256=qRVpRvcCXEZ8xF6FTXmAtZjDxCj06hLDgEZlak6ket4,937
134
- firefighter/incidents/factories.py,sha256=lfR6qqqBJc5nEMHmTg9D6837VZnDSx4y68lzcciYg6w,3364
135
- firefighter/incidents/menus.py,sha256=rttZBReRACqOMZFng2svvk3gU1Ld84PQCNbBo9AIecE,4129
134
+ firefighter/incidents/factories.py,sha256=EXrJ83H28QrD7J0SpzmO8rq2RgkQ8iRj8hmil4QD0Rs,3723
135
+ firefighter/incidents/menus.py,sha256=pJVnLsxmXfltlNlfg5HeeWEYPDe2nIVc0F2IGNT4dWI,4140
136
136
  firefighter/incidents/signals.py,sha256=hUlPVVKSi9zuL4gz_Sa-HrDleYCASeMqKqA-kkHCaDQ,2128
137
- firefighter/incidents/tables.py,sha256=SH-ScSw7SkwbdiAIApHn1eYfOuj7CRy__jY9gDadenk,3324
138
- firefighter/incidents/urls.py,sha256=4QJAIjmyE90_j8HLNExa4UpjM2CgasBOlx_r07ucjiM,2059
137
+ firefighter/incidents/tables.py,sha256=00IRFri58YdO18g0C5yeiy0ESS9Qem5-UVLvijbrwf4,3392
138
+ firefighter/incidents/urls.py,sha256=21D1FNlqZPqT40T0bPaZWX0gyQgPR-38ZMFCRADlUjo,2129
139
139
  firefighter/incidents/forms/__init__.py,sha256=OU0r5eZc2A0UJNsL83n8AI5EvwUvg4Yx0GyPBI7R73M,111
140
- firefighter/incidents/forms/close_incident.py,sha256=syT5Lpr_WXNFT3KGCe1oy-FzOqMt98S7YEzovdnp7To,940
141
- firefighter/incidents/forms/create_incident.py,sha256=Wpp0qqUJQs5-5BXrS-P5-dGvM5zgr9XqaEEl6tpNZi4,2739
140
+ firefighter/incidents/forms/close_incident.py,sha256=wyLIlNXx6eU183SkR8H--k9YEOVehOWMecY82Bc2PmM,965
141
+ firefighter/incidents/forms/create_incident.py,sha256=cm5EWIvkJ1BZ-JfRJrh4TAE2wYYLV694gQ3MRIkcrGQ,2764
142
142
  firefighter/incidents/forms/edit.py,sha256=2rQkiKak-vac-K3cIsqlGv4R5nhI7JLxw3DhFMXbWms,956
143
143
  firefighter/incidents/forms/select_impact.py,sha256=jLbzVj4UeUGwOYYa5P92PXkEu1J_6H43UATZYzDgSLY,4630
144
144
  firefighter/incidents/forms/update_key_events.py,sha256=1Xmnxe5OgZqLFS2HmMzQm3VGFPQipsdrLgKSwdh-fKc,4441
145
145
  firefighter/incidents/forms/update_roles.py,sha256=Q26UPfwAj-8N23RNZLQkvmHGnS1_j_X5KQWjJmPjMKY,3635
146
- firefighter/incidents/forms/update_status.py,sha256=QCRKfDhSYZhVsJ6oofQxOXGMWMDRQEDnH29y8YnFn_Y,1034
146
+ firefighter/incidents/forms/update_status.py,sha256=f84X3mZWx60aFYa4z9zlI6oXWLwAi83pqNm9ODOaeK8,1059
147
147
  firefighter/incidents/forms/utils.py,sha256=g2azRXQE4GwBNvq47z_Q51yKcGYSBzFyITTDkLlC_Gk,3651
148
148
  firefighter/incidents/migrations/0001_initial_oss.py,sha256=OCrPbxf90h3NW9xolGGcsAryHKptD1TtKj5FucjBjg8,60311
149
149
  firefighter/incidents/migrations/0002_alter_severity_name_alter_user_password_featureteam.py,sha256=YfIJhw_-Yqm8qrkbp01461bkcUr7v5Zy90oHjkY3bSA,1113
150
150
  firefighter/incidents/migrations/0003_delete_featureteam.py,sha256=kH5UUSx3k5DtjR_goDxROdV0htCC2JZfBGwJpn-dEQs,336
151
151
  firefighter/incidents/migrations/0004_incidentupdate_environment.py,sha256=BoIuavjeUT6sdUDOwqJoqARUY0P4HW54erGHeWGYq4g,691
152
- firefighter/incidents/migrations/0005_enable_from_p1_to_p5_priority.py,sha256=sBr3nMOf7qnAg1qHjfPOY79fP08yuvgbUaFkOFIBAiU,863
152
+ firefighter/incidents/migrations/0005_enable_from_p1_to_p5_priority.py,sha256=w8Vv_jCfsCs6D4WMR5rodgyLVJrqh2Z33ddWeCJRu0Q,909
153
153
  firefighter/incidents/migrations/0006_update_group_names.py,sha256=RHWre_VrnBmloFaqfoKA3TQtF8J2k5w1vzTEfGW81SQ,3172
154
154
  firefighter/incidents/migrations/0007_update_component_name.py,sha256=Al9k5Xx2_ea4u20MIp2blTErdv7jkGDYCLhGJ3P-gdw,6555
155
155
  firefighter/incidents/migrations/0008_impact_level.py,sha256=tjSzEMTa1hDB4JFola1Z_Zs-zWV6kzcWmIK8OaU_v7Q,9702
156
- firefighter/incidents/migrations/0009_update_sla.py,sha256=cLbDmOKrcQOa6lb1kMd-xPJC1w7iDJuEsDTKymEnUMw,849
156
+ firefighter/incidents/migrations/0009_update_sla.py,sha256=LZoH8QdwZkXH-OqPekRCkTLScyDNMlctMmDnlee8rWo,895
157
157
  firefighter/incidents/migrations/0010_update_components.py,sha256=IwAj3axIXM95DrQcAZ8NBe-3GgL4NPrZqyBMdVqA8Lo,4301
158
158
  firefighter/incidents/migrations/0011_update_incidents.py,sha256=tV4MA5ZJcqiRPteOLxJNZuhj7q6ncWXjAklm_9IzLbo,3190
159
159
  firefighter/incidents/migrations/0012_alter_impactlevel.py,sha256=krszrYoJ_vkYW5RdrgnT-vIIoCa4HC0SPGUtvZ4lMzs,1136
@@ -164,18 +164,25 @@ firefighter/incidents/migrations/0016_update_business_incidents_and_level.py,sha
164
164
  firefighter/incidents/migrations/0017_reorder_impact_types.py,sha256=7NN2KjcDRHNInXyEh8YKZli2LWT_i0UHXBbI21dXB6w,877
165
165
  firefighter/incidents/migrations/0018_update_impactlevel_names.py,sha256=E37png_LiXABzuXk-vmxTgikw8YmULODkiytE2mkxT0,2227
166
166
  firefighter/incidents/migrations/0019_set_security_components_private.py,sha256=hgQX2Yc7WIIdZVciQfjtQrXWYr1PpyFRc26vqBReDoA,2334
167
+ firefighter/incidents/migrations/0020_create_incident_category_model.py,sha256=3Ca4bCg4g2pI6dXLisW4-0f6Y6jZiuL3i5-DOUB8yA8,2297
168
+ firefighter/incidents/migrations/0021_copy_component_data_to_incident_category.py,sha256=vQKzv00CN2JuSnsCBE2wgwcFobuBGuCwoKVFfTi45zM,2135
169
+ firefighter/incidents/migrations/0022_add_incident_category_fields.py,sha256=PvzkrGSA4MBDS2e2lKXuZlY9GbxZX0SUsvqZ6H6sDNc,1004
170
+ firefighter/incidents/migrations/0023_populate_incident_category_references.py,sha256=porsF2OcyqNQ5NGBprwTLvG2zLXlgg2X-NrG1BycXas,2413
171
+ firefighter/incidents/migrations/0024_remove_component_fields_and_model.py,sha256=5CWUAXcezgC2QaLyWblEqgwSov_IJ19la3akn5ZDhJc,668
172
+ firefighter/incidents/migrations/0025_make_incident_category_required.py,sha256=UmfZ0Vh56dADv-YbUPAOKmSlzlre0qyROf9o84x7xo0,706
173
+ firefighter/incidents/migrations/0026_alter_incidentcategory_options_and_more.py,sha256=kitqppqhUlSiG3OIBZ87IECsR9Y0yCulYEtolFNYyS8,1116
167
174
  firefighter/incidents/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
168
- firefighter/incidents/models/__init__.py,sha256=dCNP-zRYNNDOZB3JDDWp7vCl084Jh6RgDT_iP57RkOY,862
169
- firefighter/incidents/models/component.py,sha256=7GyXKNFk1MZns6RUGLpkNw5u6He7H9N1LexzXbG4sBM,7445
175
+ firefighter/incidents/models/__init__.py,sha256=FLVyBwIdyxLdgSvXRAKC3fry9YwwqlqhitTIuG0vWrk,877
170
176
  firefighter/incidents/models/environment.py,sha256=51txwua3dCrWZ1iSG3ZA8rbDn9c00pyMAZujl9gwE5c,827
171
- firefighter/incidents/models/group.py,sha256=MscG3IY5AdyJbmq8h4mMqEvLwmnJLor9rkd6CIycKho,685
177
+ firefighter/incidents/models/group.py,sha256=VrVL315VFUvKW69AZuRUBg1h0jZJvn8zWeMxMOWec1Y,700
172
178
  firefighter/incidents/models/impact.py,sha256=URoMsQBJQnyfaNRpVl1o4A1IllM7dg94sd6tf5Ssr-k,4868
173
- firefighter/incidents/models/incident.py,sha256=aQUAboXmHH9DO1Nq6AbB4w17dPQqn5iMTwT2r4TeJrA,26129
179
+ firefighter/incidents/models/incident.py,sha256=7L3jDxWgjHGjaZ7Cmtn8_KkYFbAg6qKx3Mjghky9Ldk,26280
180
+ firefighter/incidents/models/incident_category.py,sha256=g4OHv_XQhWcH6dvkqkyCgjlruo_1eih_CdtAPgPhaW4,7744
174
181
  firefighter/incidents/models/incident_cost.py,sha256=juwOfJKRaNQpOHkRUCHShDDba0FU98YjRPkU4I0ofAU,1346
175
182
  firefighter/incidents/models/incident_cost_type.py,sha256=wm8diry_VySJzIjC9M3Yavv2tYbvJgpN9UDb2gFRuH4,845
176
183
  firefighter/incidents/models/incident_membership.py,sha256=vvvBvYPxNlM98KdF81cMrDif8_Wl5TqqNkmf_z9lZO8,1745
177
184
  firefighter/incidents/models/incident_role_type.py,sha256=YxtQmsmZQRVxa_pSVe-lIVEoZN5k56cR7o8soWCcFng,2104
178
- firefighter/incidents/models/incident_update.py,sha256=ewWccR4Dc7gJENPdJLuonVw-WOgl-tQZ37ENoRw86ic,4582
185
+ firefighter/incidents/models/incident_update.py,sha256=lCslA0Bz7qI9qORr0-Wir6yWzp0AeuCKsYHhLyKKukQ,4612
179
186
  firefighter/incidents/models/metric_type.py,sha256=nmc7LANTMjwQmm6LCfLhv4aF7ClEBV2L4PAu1wGfV3w,2981
180
187
  firefighter/incidents/models/milestone_type.py,sha256=SToXfQncNkGWLs4xZDNtT0lM4lj-9Pj9mZvr4JI85Fs,1827
181
188
  firefighter/incidents/models/priority.py,sha256=5bWsuurbE6TFtMczgCBX6uYkb-nBdTC2ABV-d7b9iw0,2199
@@ -217,9 +224,9 @@ firefighter/incidents/templates/layouts/partials/created_at_help.html,sha256=HVS
217
224
  firefighter/incidents/templates/layouts/partials/environment_pill.html,sha256=PoEWgUn3r-IKGgf-J68VW3UegDuaH1sYASFT3dcbEtY,383
218
225
  firefighter/incidents/templates/layouts/partials/footer.html,sha256=4poLvnggOYPZFoOF1S8giSaj3A8xTDGAqfNhclKsedA,1490
219
226
  firefighter/incidents/templates/layouts/partials/header.html,sha256=OMef96AQGSklh9LWR6uxEwNjV8TkWI4BtnVQ46-pqsA,4849
220
- firefighter/incidents/templates/layouts/partials/incident_card.html,sha256=0JyXdm5PeELBKGwPPoyKyV_tvz22qRtbcQv3BK5FupY,1911
227
+ firefighter/incidents/templates/layouts/partials/incident_card.html,sha256=0QC3CAEoDiA6LUJ0vSZIXVQ8TypszssWe9gZ8ev0UNk,1927
221
228
  firefighter/incidents/templates/layouts/partials/incident_metrics.html,sha256=tHFjeWtwEDZtXlTHdnaHk9_ajl2rOAtEokVQQAV66rQ,1445
222
- firefighter/incidents/templates/layouts/partials/incident_timeline.html,sha256=YQvUgnzVhoLeDA_enZJvjyDMMsl3WKCeq-hK8XwCDPI,7081
229
+ firefighter/incidents/templates/layouts/partials/incident_timeline.html,sha256=_RrqSUo7LT8Od_ggAiHYOndlyf620kmGjVD4eapWRoY,7097
223
230
  firefighter/incidents/templates/layouts/partials/incident_update_key_events_view.html,sha256=LXmElIIxAfDnk4q93VeipGashJJKOn5sLuR0UfVq6V0,422
224
231
  firefighter/incidents/templates/layouts/partials/incident_update_key_events_view_modal.html,sha256=MOYicsn3L3KMUhPkpnvvw2Q28lBv0TbclLQi2L7OEiQ,886
225
232
  firefighter/incidents/templates/layouts/partials/partial_table_list_paginated.html,sha256=O4VGlObu4gBXx0tid-K04XMnJeKXsGBfywu4IXdVxqM,6411
@@ -229,12 +236,12 @@ firefighter/incidents/templates/layouts/partials/status_pill.html,sha256=D9V8bnO
229
236
  firefighter/incidents/templates/layouts/partials/table.html,sha256=eZE4kh0nQwGik6qc7A0O_jHyZcg32uzHc1pkjJRt6hw,1567
230
237
  firefighter/incidents/templates/layouts/partials/user_card.html,sha256=LgYHSpqC0BAhVENMSmLpow8jlPnh5uRvHzooJlJna6w,802
231
238
  firefighter/incidents/templates/layouts/partials/user_tooltip.html,sha256=KkVPpoODXIzrm6iItTg5RQphBGruQw4dFdOgAuGRt1E,562
232
- firefighter/incidents/templates/pages/component_detail.html,sha256=WLO9zg8zDCUtINOHK9xP5dKd5WaB8UWT6JNjLjYSQKs,5277
233
- firefighter/incidents/templates/pages/component_list.html,sha256=WbkLGozNbijTk_5iklOS5Hftlc-JHBpkSVL2s1FgUgk,1719
234
239
  firefighter/incidents/templates/pages/dashboard.html,sha256=jGfTCTdyLt3fWtX66HVG1bNgpffV4J7jagVgksCGsSE,1743
235
240
  firefighter/incidents/templates/pages/docs_metrics.html,sha256=q10CCPwjujuj9_h7Mj4-NgP6BMt4TJ6Z3D20W9qZbaQ,3744
241
+ firefighter/incidents/templates/pages/incident_category_detail.html,sha256=65vhQ3l3cWlLUYilfKHPuMn7lEfRJFjokiOeYUpeTTY,5425
242
+ firefighter/incidents/templates/pages/incident_category_list.html,sha256=gXLPk9N7R585xqmA6JpL06J7hsxAXQvnsShesK2HR9o,1731
236
243
  firefighter/incidents/templates/pages/incident_create.html,sha256=syDS8EqmdcCf6z2dJox5gSPTOsyNdq0jFiDdzVc_vmU,2280
237
- firefighter/incidents/templates/pages/incident_detail.html,sha256=ryxcV0Vncftt4X6yEjv_qKHWf2CkfQOXRBuUIN6eSSs,15026
244
+ firefighter/incidents/templates/pages/incident_detail.html,sha256=HhwpMg1nAaUqbYDi2RrgK5IkPhiKzHKcoSmk98O-rng,15058
238
245
  firefighter/incidents/templates/pages/incident_list.html,sha256=IWTZyuIeG1RVCZGNLQ_N3Jg7a_Ush6YbQXWUy0xVuV8,2339
239
246
  firefighter/incidents/templates/pages/incident_role_types_detail.html,sha256=LVoFbW9rrP4Yln_Ld-Jwe1JvhhvgwpxZgpdNzbrLWsA,4099
240
247
  firefighter/incidents/templates/pages/incident_role_types_list.html,sha256=SRBhDIfne-bX4C-EhYqyCktIksR4Rd5GPMkYfE6El1o,1556
@@ -246,20 +253,20 @@ firefighter/incidents/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
246
253
  firefighter/incidents/views/date_filter.py,sha256=fUhTjkBulMokI5tAHuqNDVv1dyspjmw3O2vzkkhqbUs,5648
247
254
  firefighter/incidents/views/date_utils.py,sha256=tiRTlh7PmRv4eAH0asiSX3Gn7ajsal9egm4S1d7s3_s,5759
248
255
  firefighter/incidents/views/errors.py,sha256=yDuH0YOdGf-voVNEC51yR9Ie3OU-az7g2EqWs_uV1Kk,7855
249
- firefighter/incidents/views/reports.py,sha256=4h9z1QIhnDkzEyqvi-GI_j9Oem2igvqTk0NZsbSoVoc,20947
250
- firefighter/incidents/views/views.py,sha256=MPcrqtvA0_xoGX8Bw6v-uMBp6RiJY0-_HTQ-en-zJ8Q,10487
256
+ firefighter/incidents/views/reports.py,sha256=9suCtnyZASHnHAH9Rlb2DPOso8esSf14XPP8emgL-R4,20961
257
+ firefighter/incidents/views/views.py,sha256=-z-cfYJ8lIwORAkAxXRMCAg34RmwcPO3l0-VuDpEGyA,10543
251
258
  firefighter/incidents/views/components/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
252
- firefighter/incidents/views/components/details.py,sha256=4pBCAS2gLYAm4CwTJ5mkw43dq8BkGknsAwrQgeMF21Q,942
253
- firefighter/incidents/views/components/list.py,sha256=B4XRnNG2tcehKuTT4wznPcI93lkLxRyRNEXSOsFFiVo,2130
259
+ firefighter/incidents/views/components/details.py,sha256=gFEezmL1TcVYnM_ryLNNMaynuIdjYV31Qzx_GfzrQiA,1040
260
+ firefighter/incidents/views/components/list.py,sha256=u8HfXetmdL59h_4AZIhiHmKcmrPRZXgekPfnucB4Rek,2207
254
261
  firefighter/incidents/views/docs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
255
262
  firefighter/incidents/views/docs/metrics.py,sha256=n2-chgxTokOqCx-W5YZRHK3pYmzvz0b_RF6s1de2Fcw,1713
256
263
  firefighter/incidents/views/docs/role_types.py,sha256=88dGBAL7NMC24lyqLDN0jGnh5-ILRI5afL2Wig7LrFs,1122
257
264
  firefighter/incidents/views/users/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
258
- firefighter/incidents/views/users/details.py,sha256=MivRG7sOXPe1mTC8yZm27a05nBgTQvbHNsXjcD4ARok,1835
265
+ firefighter/incidents/views/users/details.py,sha256=xqDUEMorplAdSJNQ2vcNzntKKn6UsMDb_dXjVBN2GeY,1853
259
266
  firefighter/jira_app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
260
267
  firefighter/jira_app/admin.py,sha256=YywHfi1dlpyyW8XPYvjtOW3fbTZGm5bKXvHbDkr0D_8,702
261
268
  firefighter/jira_app/apps.py,sha256=W6iM_e2X-dQ4YSeDPuFPM4wp-zIgpWsEiehtng0fk48,348
262
- firefighter/jira_app/client.py,sha256=I4aHft_0GZd11z9Wr484n-WgZ2nfwoatwjxCkHu-60U,16128
269
+ firefighter/jira_app/client.py,sha256=pf0uqs6ccLKy0wCEIcP9FtKrsgTRkpipA9J6Mkj9p2I,16140
263
270
  firefighter/jira_app/models.py,sha256=m-ay74zeI9zMyKuTBfN7W8DPDc9zPmiDESC8mnGBjR4,1741
264
271
  firefighter/jira_app/types.py,sha256=Ukak1U1EhcH2jQPN-UoEL6AMZ-kzPsQ8c7FUr7GmahE,956
265
272
  firefighter/jira_app/utils.py,sha256=3xuzr8viZCBm6j2J9oFzA4bUvVW8TN1DOdlpbruJ_TE,3443
@@ -268,7 +275,7 @@ firefighter/jira_app/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm
268
275
  firefighter/jira_app/tasks/__init__.py,sha256=XLCPkolM6LwIUGv0MNbk_0lCuBHyzgRFHsE3vTRD5ds,86
269
276
  firefighter/jira_app/tasks/sync_users_jira.py,sha256=sSSLsVCdzkPNRS6Gt8j0YwCTuoRqkJAJLxDBu7IElmM,1437
270
277
  firefighter/logging/__init__.py,sha256=SSTapLdwQsMkBy8FDFOjLkzJlutfT152mmPEGErirK4,60
271
- firefighter/logging/custom_json_formatter.py,sha256=iRdis9C3j0HMIhn9W3YPRfi1O9dFeNSiWJ8L56QEeX4,5574
278
+ firefighter/logging/custom_json_formatter.py,sha256=dckOtllNTfeDLc1J4FWJ-_PVeT_CqfQIyTs9FKfZsqE,5601
272
279
  firefighter/logging/pretty_formatter.py,sha256=6FxNVpQczcVhmLbLCz6HWxOQOvbqgH12-y8t1d7drfs,2411
273
280
  firefighter/pagerduty/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
274
281
  firefighter/pagerduty/admin.py,sha256=PmC227877OM-dq86953aQppu8TMWPnCZy4xJw5NST6E,3216
@@ -288,7 +295,7 @@ firefighter/pagerduty/tasks/__init__.py,sha256=7OtGthF6OX0Dmbe9U81Gk8h7A0dehfsJY
288
295
  firefighter/pagerduty/tasks/fetch_oncall.py,sha256=knoyHbBLUSrBsrWdv8UODPlByOOvqW5a5hInRa7-lGI,3952
289
296
  firefighter/pagerduty/tasks/fetch_services.py,sha256=GD3cCZtIBmI3mnRJnb4HdWeJwIm1X081gTIE0zAZvks,1268
290
297
  firefighter/pagerduty/tasks/fetch_users.py,sha256=wPFV9xR2xj3pNJlHPjM9BlX9I6E8hh7wfO29bH-Jz0k,2489
291
- firefighter/pagerduty/tasks/trigger_oncall.py,sha256=tQbFlhYf0RMA4KIGU1E3s2f5rYxF6O06CvQiC_Af-9M,3395
298
+ firefighter/pagerduty/tasks/trigger_oncall.py,sha256=nwjqHZOa2oYqtZvnaIERPAB-MdoZ7RoYcckfGG-pzDg,3414
292
299
  firefighter/pagerduty/templates/pages/oncall_list.html,sha256=fDgQnST-l5-CiIScQLAioT_ewb7Gs6yW0BWo4T_EDbE,4388
293
300
  firefighter/pagerduty/templates/pages/oncall_trigger.html,sha256=Un6BgHp8r52cCbqH8FJLI6criaHpzu6BtjJq10kJg4w,568
294
301
  firefighter/pagerduty/templates/partials/trigger_oncall_form_view.html,sha256=m3uIodbv3U76QGcGq5ijCQYwe-PvBY2ISXnEMksdlB4,450
@@ -297,63 +304,69 @@ firefighter/pagerduty/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
297
304
  firefighter/pagerduty/views/oncall_list.py,sha256=o8h0ln7YsYcJp_N8DePzIBO2NMc2bJWCFLfLXWQJA9s,1086
298
305
  firefighter/pagerduty/views/oncall_trigger.py,sha256=LYHpWyEaR6O8NazmsTl5ydtw1XHynUfaTB1IU429eZ8,2526
299
306
  firefighter/raid/__init__.py,sha256=nMNmvHCSkyLQsdhTow7myMU62vXk1e755gUntVfFFlY,154
300
- firefighter/raid/admin.py,sha256=YaqjJ7UcoEf_72kKVVN-O2Pp7_9lGuUdc-nHSQZYEYM,1405
307
+ firefighter/raid/admin.py,sha256=WhIHaRAv7JPp2NH27w7_0JfvGHrvoyRJhYr3_WwedrA,1117
301
308
  firefighter/raid/apps.py,sha256=BUkaZSu45Ghdpx1XnE3DaFD4SC2SeUtSDZOTYynte5k,1655
302
- firefighter/raid/client.py,sha256=Y-aAXbVC_seyo4CfBF5CoiTAu36Jq3XKBTsXTLJGFH0,7993
303
- firefighter/raid/forms.py,sha256=oJOPHYFtwlffuPgFi4lbbOCoKhwianrvafNicOmT_-c,15816
309
+ firefighter/raid/client.py,sha256=zzEtu4hOyn0XocMlmGrwgWUE7E4CGNm8s9CgJ-K1QTk,8108
310
+ firefighter/raid/forms.py,sha256=zjbVqsYXuPRWapTCX0SbVBD3VmqbYE-1_FUlf0Y_tsM,17282
304
311
  firefighter/raid/messages.py,sha256=e75kwi0hCe5ChwU4t-_6Q3Rcy22MLLdVSsYyjvG2SCM,5542
305
- firefighter/raid/models.py,sha256=FNfPHvlF9h09LxL2a4zFPfc0raArmufywjzTdqGATms,2662
312
+ firefighter/raid/models.py,sha256=29Smci739K1ZdcMu7uXYvoVEhgDpwLQoCzBbc5wvwhs,2211
306
313
  firefighter/raid/resources.py,sha256=39GhITs3OAWA1eSPZme-rLd818kuz7gwYzdN38zNz8Y,436
307
- firefighter/raid/serializers.py,sha256=mxUtEVnIXqdHaTSIDO_Ul_T2ww_2mautyQDNiK0EyJE,11366
308
- firefighter/raid/service.py,sha256=sosuRMNyWYdjwCLNTqMonUBT-oST6nZ6ABj8PyskMAs,8326
314
+ firefighter/raid/serializers.py,sha256=EYsah8qWqzy9WENIyFJ1LCNJ4yO2OrxSyXYFnsL8J04,11479
315
+ firefighter/raid/service.py,sha256=rxRjEpA5wg4JRe4UrGW-y8C8quHvGlJzQ0U8rdy-DyM,8490
309
316
  firefighter/raid/types.py,sha256=0lFy_Wl3Ekyy_sxTHPRxMn3kjEJVWCTPjmefDlrPqMQ,438
310
317
  firefighter/raid/urls.py,sha256=oESkDY2tfZcnPGUgULqixvbV3Z7YsZfeI10RX3A5tZY,924
311
- firefighter/raid/utils.py,sha256=Ij16r8EodD7RAZaTuFYjMhZMrVRYF0e4hfiLZhdv5L4,1098
318
+ firefighter/raid/utils.py,sha256=OhsuFb46lokVxjyfeBFLMcMIGzjkTrrdd6DCXUJym0E,1111
312
319
  firefighter/raid/migrations/0001_initial_oss.py,sha256=oZQ44dHboLeHbvVyziHX_hhdis8H_Buv2W3jHiDzQhA,6259
313
320
  firefighter/raid/migrations/0002_featureteam_remove_qualifierrotation_jira_user_and_more.py,sha256=1UkwuNqqjtRJ_xlgNMs9qn2ryLcssQN06ZBCL296CWw,1034
321
+ firefighter/raid/migrations/0003_delete_raidarea.py,sha256=M_XkKCu73ib2H09co2L-ssLQakJJFNOfqJpKrzOYP2Y,332
314
322
  firefighter/raid/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
315
323
  firefighter/raid/signals/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
316
- firefighter/raid/signals/incident_created.py,sha256=ksXsjiEU-PgEf30XwEXWd7nbrWMXZgwfidiaYvCaOT8,3740
324
+ firefighter/raid/signals/incident_created.py,sha256=s4PNNrXDmhAw_3NnDQenHbQl9WPMmN_OmYAGq7tueVk,3908
317
325
  firefighter/raid/signals/incident_updated.py,sha256=cLiqgCIKjGZpvkb7w3ASDtJ8tWP4agFpmgfmDnT3xOs,1330
318
326
  firefighter/raid/tasks/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
319
- firefighter/raid/views/__init__.py,sha256=a-ZiWaudIAH1OkR7FAFSMtasQ1SaB-lfoKJoArKraCM,5182
320
- firefighter/raid/views/open_normal.py,sha256=0EujJsrEWIXunK1K1w8ko0aSZAOdarA1D1sM4Gdit1A,4664
327
+ firefighter/raid/views/__init__.py,sha256=noK-M1X4L46OMAp6S29jqajovzL6sIMSnIBv5l9vxIM,5174
328
+ firefighter/raid/views/open_normal.py,sha256=g8ajo-_bXxL7suaKW2HYbLQuh6DZPYdeNwYl9tMDV-k,4681
321
329
  firefighter/slack/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
322
- firefighter/slack/admin.py,sha256=bdjO64POpObyAOEVjiruSdW1Kvh7zV0XUzXK6BoPqVg,13893
330
+ firefighter/slack/admin.py,sha256=pNJbA-szxUUrghxv_Z0BNezu6lULDzFcOu_K5i4m7Cs,13963
323
331
  firefighter/slack/apps.py,sha256=gR0zWTtqT58tjPayBX22ZSzMkLiNpmoOvLShNvhJA6Q,664
324
332
  firefighter/slack/factories.py,sha256=tnrUTbtgehCuBr24MtTyJ3uezKC6gJbOdHuYZ5JBoyU,3886
325
- firefighter/slack/rules.py,sha256=nCNWiyg6HMBYKyE1TVXz_FWNk5YmTjLugB7PVG_08cg,1639
333
+ firefighter/slack/rules.py,sha256=nt60Uwb_bTEZpLbUzdd9nqGRjkmuKxqZudm1mqEaSk8,1647
326
334
  firefighter/slack/slack_app.py,sha256=mvaH0hPFaNIUxEB7J0fy6y-PNPGsdPqjXFVmpTQ_hCo,4201
327
335
  firefighter/slack/slack_incident_context.py,sha256=PjE7-w-pGFyV4faw8EMsEFp4RG_T251RhofmqrsDG7Q,7277
328
336
  firefighter/slack/slack_templating.py,sha256=rWe8m1n648wizw08U_vLz8daRnp4zmkcWRqocIBpQj4,3841
329
337
  firefighter/slack/urls.py,sha256=3HKbEPcjV-XzFvGFBS3FWsAOshp33hssOxRAmSaBIgE,247
330
- firefighter/slack/utils.py,sha256=wJJWfRRWCTn45d593IjXQuJOISVt7Z3N5kmB2G-tYO4,4079
338
+ firefighter/slack/utils.py,sha256=wsSQs-WnV2WybvQixfYputcVdzEjr7eFsGZxbrUJm8s,4095
331
339
  firefighter/slack/forms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
332
340
  firefighter/slack/forms/sos_form.py,sha256=v544RMMzUjVgInSaZh_75PmbZf0FIKy4fcjdlV78pCE,257
333
341
  firefighter/slack/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
334
342
  firefighter/slack/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
335
343
  firefighter/slack/management/commands/generate_manifest.py,sha256=zFWHAC7ioozcDdhJ5KrLU4JNhULdtYjBUJTtclgBgSo,6911
344
+ firefighter/slack/management/commands/switch_test_users.py,sha256=2KTSvCBxsEvZa61J8p0r3huPNhwuytcj2J7IawwZWpQ,11064
336
345
  firefighter/slack/messages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
337
346
  firefighter/slack/messages/base.py,sha256=biH-YEAaldJ-OLHEs5ZjW-gtUYUbjOqxrAEflqV2XS0,4593
338
- firefighter/slack/messages/slack_messages.py,sha256=yzxN0v-G0KNlz-rA6va9MlweOZxCTJhgjfQl662F0dc,33072
347
+ firefighter/slack/messages/slack_messages.py,sha256=nN7lF81VqtkxFLOaWag3oNg-9FVdZyuuKQihhbR4z8g,33137
339
348
  firefighter/slack/migrations/0001_initial_oss.py,sha256=XmTPgq7zCME2xDwzRFoVi4OegSIG9eSKoyTNoW05Qtg,12933
340
349
  firefighter/slack/migrations/0002_usergroup_tag.py,sha256=098tmGA81mT-R2uhb6uQfZ7gKiRG9bFhEwQ8rrp4SKM,583
341
350
  firefighter/slack/migrations/0003_alter_usergroup_tag.py,sha256=ncH3KUWEPZHlbdcAtOJ0KGt5H6EX-cKspTGU3osrAhE,591
342
351
  firefighter/slack/migrations/0004_alter_usergroup_components.py,sha256=uCp1bhjcHRHbxlc_oewY__r4FY7eRHcoLSltJWgJ5x0,703
352
+ firefighter/slack/migrations/0005_add_incident_categories_fields.py,sha256=KMdKfyQdxXzsbUwN3UL78N3LajZUaZAfxNcFJ6Ojo7M,1214
353
+ firefighter/slack/migrations/0006_copy_components_to_incident_categories.py,sha256=xUF7lLyWERux6SyIYHK2Uk1Yb4QLCGTaHW_KXVqX8n4,2478
354
+ firefighter/slack/migrations/0007_remove_components_fields.py,sha256=_GXmcpB3enpVBT1NZ-tGDlh16r_cM-JkH2gebrmwIOs,563
355
+ firefighter/slack/migrations/0008_alter_conversation_incident_categories_and_more.py,sha256=yzuAnunYvlF-wcYd7oe5h-kL5aOoawSXv_QGfmTFoBo,1034
343
356
  firefighter/slack/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
344
357
  firefighter/slack/models/__init__.py,sha256=MGc4yuDnVhmAiHy1-5rjaLIfVv9JOup5arRutcUs8Ak,332
345
- firefighter/slack/models/conversation.py,sha256=euN3eS-9KUIxOErfxDhZ8nNdwkrp8JKefLJN6ypszXA,16190
346
- firefighter/slack/models/incident_channel.py,sha256=MKzrGPDEz7CcumrnbWZBcKAHoScyYA_FSNCY0FKeZwc,7560
358
+ firefighter/slack/models/conversation.py,sha256=f7a0muD0lrpf8mIhF6E2gEhNsgwZFw9jlKIQppZhNL0,16227
359
+ firefighter/slack/models/incident_channel.py,sha256=aN5Y_uU5HLz_D6CzFDGRrdKDcc0PDa5r-McnGO4BBAM,7576
347
360
  firefighter/slack/models/message.py,sha256=E1MQoZJz4MsgCeqgP94_jtSrz2RYuWdoys8tz4Tfboc,4727
348
361
  firefighter/slack/models/sos.py,sha256=Sji-7DxgsrLs7vFRJKPw7nmYyo2tIjNwoTcmdCmzEvA,1418
349
- firefighter/slack/models/user.py,sha256=744fulTB00UQzsZwxf8CiQNMfEKmYY6y37x6zm6g14I,17218
350
- firefighter/slack/models/user_group.py,sha256=NyqtC0C_Vur2xZ6t7T7d7Z30WZ8EEovczJ0uYZVDC7o,7104
362
+ firefighter/slack/models/user.py,sha256=2Thcz5qQUsWGV9q77U5Z1b_jePZQJfE7BehwN_BlYH8,17230
363
+ firefighter/slack/models/user_group.py,sha256=9bedrDwDwj641oTy65ucw63oQasCyKWhBZ1xx6peMBM,7141
351
364
  firefighter/slack/signals/__init__.py,sha256=dqMf2x-PVKgmwzH2d9uHuQ8hZ4fbu74eRd4Ij2_dNSg,186
352
365
  firefighter/slack/signals/create_incident_conversation.py,sha256=uybiqCgPlWYq2AA2FKNkEmqhDYxDy-h0ebT-RBVpx9I,4965
353
- firefighter/slack/signals/get_users.py,sha256=_xPsZFgcxd87Vuhv6FttttrxnIb0z65-It8H3FZlHOM,2271
366
+ firefighter/slack/signals/get_users.py,sha256=-ZUI3ORJZJ4tLiGhVwIU-pWHoriALtOC7Kh_bFR4bGU,2287
354
367
  firefighter/slack/signals/handle_incident_channel_done.py,sha256=pYoS_ZJf2u9seHCqahfPHz4BrfvF1vIZjE1_yy0P5mY,1726
355
368
  firefighter/slack/signals/incident_closed.py,sha256=6QyUmTjEGVg0Wn5W-i2F8DlJuhvHjg3MxkcvAXFn9Bk,687
356
- firefighter/slack/signals/incident_updated.py,sha256=sVQ1hJP4aG9vLK4jMqKT56oJ2OAOGBCmuBLy_NT28VI,8115
369
+ firefighter/slack/signals/incident_updated.py,sha256=HLJS6HaZ9fthvobUEx-x-SAtyOsO8W2_utGP9i36h5Y,8123
357
370
  firefighter/slack/signals/postmortem_created.py,sha256=XY8_lEmBEG3VSsankpbOWdEB9dom9Ke6u8ss4-aDX6Y,1152
358
371
  firefighter/slack/signals/roles_reminders.py,sha256=1Ef_J1PubY8WTVs2WDXz4KWa6X2Lvp1RFObIjSGpiOM,4041
359
372
  firefighter/slack/tasks/__init__.py,sha256=28QxZkakyi9l7Ae83fQuzOS-9EaBiwuh_peUZwIxCx4,179
@@ -375,18 +388,18 @@ firefighter/slack/views/events/channel_shared.py,sha256=179KUJ8wZ1hPFXF58Neh3njJ
375
388
  firefighter/slack/views/events/channel_unarchive.py,sha256=YSwMz9H5CeXXeLOUHWI6uAIS4q_oxe4fyMJ9ha0-fuk,968
376
389
  firefighter/slack/views/events/channel_unshared.py,sha256=attB5woORof1OOECyfAbxLqL0QrUtdSVfOdEIjS4YgU,734
377
390
  firefighter/slack/views/events/commands.py,sha256=M65X9gtjKOQtbuMuWoeJHqyskw6J0bgNUwyjydVmxLY,4827
378
- firefighter/slack/views/events/home.py,sha256=xqQeLfxfvcRrjT-JPou3ddbRSKGTZvnyLfokxHh_K_I,6415
391
+ firefighter/slack/views/events/home.py,sha256=OnWkn9vjDXvKzzV5KdbZ0kedunDYPWrvwCYKdAR5l_8,6450
379
392
  firefighter/slack/views/events/member_joined_channel.py,sha256=BJySHHTAuDotyRK0TXBiyqzZXsEDZGKM_4KILdXUr5g,2370
380
393
  firefighter/slack/views/events/member_left_channel.py,sha256=49CQxYvjJwFEBnnpgrLl8WFk8ArOrj-L7GPNIlULQVw,2181
381
394
  firefighter/slack/views/events/message.py,sha256=c8tvo0btOUu_5Bc83oiO3IQbaEyoRiUWFk118yqF90g,2068
382
395
  firefighter/slack/views/events/message_deleted.py,sha256=tyA1-sAlG9ImcKIhqSn6EgujHmbvj4Uw2QzQ4JH4QwI,747
383
396
  firefighter/slack/views/events/reaction_added.py,sha256=AipwBnrU5B35D97YIZCXdSW8W7-9QTIIQqUcrLTLQ5c,4241
384
397
  firefighter/slack/views/modals/__init__.py,sha256=fXecF962l_qsp-MK8u2Y84p49cDKyFDQXlWUEKME9XE,1833
385
- firefighter/slack/views/modals/close.py,sha256=ur1SSRWk9NYFfL24gjOqoIiXKquDy6qeEMLOFUpFdi4,11598
398
+ firefighter/slack/views/modals/close.py,sha256=TE9NXcpMk86yeV_zKxGKFeVhstdJCemghY6yVRuaGMQ,11630
386
399
  firefighter/slack/views/modals/downgrade_workflow.py,sha256=S0y0_GYH4q7ewZUr_eA9Ly2c1FQueZzNCTiuIiWYUoY,3109
387
400
  firefighter/slack/views/modals/edit.py,sha256=60xav4XG4KGS9KknqsQNCQjl3qQzk7OtmHiEYTQ9pUk,3861
388
401
  firefighter/slack/views/modals/key_event_message.py,sha256=ga3-ITZyzJExwzctX-GfgnDqyQaxTfcqpqnOwY2E38M,5620
389
- firefighter/slack/views/modals/open.py,sha256=en8F0T36A1FbdEaLKEWAuV8Vr5D47x9S1KdtRa_0Kg8,25348
402
+ firefighter/slack/views/modals/open.py,sha256=VJUDVIEy0gcN7RrLOWfh621_1ElWbw1MNV6XosIcnV0,26383
390
403
  firefighter/slack/views/modals/postmortem.py,sha256=AeEtmiam_XgCRxDmltKluNT2VN1gcuCB2VbYeeATVcA,2525
391
404
  firefighter/slack/views/modals/select.py,sha256=Y-Ji_ALnzhYkXDBAyi497UL1Xn2vCGqXCtj8eog75Jk,3312
392
405
  firefighter/slack/views/modals/send_sos.py,sha256=bP6HgYyDwPrIcTq7n_sQz6UQsxhYbvBDS4HjM0uRccA,4838
@@ -394,63 +407,71 @@ firefighter/slack/views/modals/status.py,sha256=C8-eJRtquSeaHe568SC7yCFef1k14m2_
394
407
  firefighter/slack/views/modals/trigger_oncall.py,sha256=h_LAD5X5rjMFWiDYTEp5VB9OaF7sTvKZhNaW3KQkw5M,5065
395
408
  firefighter/slack/views/modals/update.py,sha256=OF9sf-Z6IiviNmjN28MQNYiUbJ5tha0MdHUQyPpVFiY,2150
396
409
  firefighter/slack/views/modals/update_roles.py,sha256=De3Gv67MZQHyNdonX3S99F5MtKF_Rj3y71gdWibxBaM,2419
397
- firefighter/slack/views/modals/update_status.py,sha256=ao9ZPCw9tgxdbyLGXsXRLL-LRB1_bxaoaa1ORoh0-nA,4472
410
+ firefighter/slack/views/modals/update_status.py,sha256=gxjl7axpIk1b7yQ8dbnuOQp1fNPJJ0N4tBHU6IT5UHI,4520
398
411
  firefighter/slack/views/modals/base_modal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
399
412
  firefighter/slack/views/modals/base_modal/base.py,sha256=7mvOxZTtegSmitSMnDvu8BK0qLUXoudUsda6CaLjdkY,12479
400
413
  firefighter/slack/views/modals/base_modal/base_mixins.py,sha256=Xl1koQsPpHO_kKIiuSSJHJnIBmytDXseI1KcAZQZC3M,230
401
- firefighter/slack/views/modals/base_modal/form_utils.py,sha256=AGwrw0VE3jhFFI4WBpWlrM4U9Jhhug2z_rxB56m4-sA,21169
414
+ firefighter/slack/views/modals/base_modal/form_utils.py,sha256=VJlqHo_VCTImKIbHq7slIBWXpFF7agB84hRRO6F_SK8,21800
402
415
  firefighter/slack/views/modals/base_modal/mixins.py,sha256=c7WYs0aXKXVktEMNSZ8IUQbAmustrLbRzbOoo4nyYGA,1917
403
416
  firefighter/slack/views/modals/base_modal/modal_utils.py,sha256=1uHTlLxxeXUQttH3bHaehJwCuI6a-h04s-GzdnVA4sI,2459
404
417
  firefighter/slack/views/modals/opening/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
405
- firefighter/slack/views/modals/opening/check_current_incidents.py,sha256=28GN0SXP7rVPa55arX1aI98k45w9568GCRDA73eCHEM,2535
406
- firefighter/slack/views/modals/opening/select_impact.py,sha256=McVKE5z8vjcg0Z1kbqTsXBW9FvTqX02W6HiIPQ8cicI,11424
418
+ firefighter/slack/views/modals/opening/check_current_incidents.py,sha256=4hFp6nEKH55j0BBYE2Ks9KNwCPImCKQdxyweIWmW5E4,2551
419
+ firefighter/slack/views/modals/opening/select_impact.py,sha256=LoioV9IAGOVXzn6i60UDOKxp55qixDjQACuBalktvEk,11721
407
420
  firefighter/slack/views/modals/opening/set_details.py,sha256=i6zQM2FYz3Z6s5AZH7lXgB2e8yjS0rDwgfMBZaiOqIw,5791
408
421
  firefighter/slack/views/modals/opening/types.py,sha256=ETpp0DAz5OMI5h7iv62Of7yJCbI-Q4-3kKSS6msPQeY,563
409
422
  firefighter/slack/views/modals/opening/details/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
410
- firefighter/slack/views/modals/opening/details/critical.py,sha256=-APRvkjopLwLPv3qPGTZfgS0d1bpb8NM0OXppRdUK94,2854
411
- firefighter_fixtures/incidents/components.json,sha256=qVVG201I4V-9f4Z3ZB0n9C4yZOJ8Qkz9v9MNAlqT8L8,21229
423
+ firefighter/slack/views/modals/opening/details/critical.py,sha256=OY3IwXCoauv1ov5-HiE94sLdIJy-5xwQxvNWpAOf8qQ,2862
412
424
  firefighter_fixtures/incidents/environments.json,sha256=5H_F08x7moMKz-H6OIUVaJGtmyKEESXLlG5cfXX0IA4,1039
413
425
  firefighter_fixtures/incidents/groups.json,sha256=mwrpUk9tvZa0RnT1T0aec_nnMsVZhR2GXS7pmrAK0y8,2555
414
426
  firefighter_fixtures/incidents/impact_level.json,sha256=AsrcSrkHN8E-XWlekb6Pgt8m2Sg0HASNld0TRFHwIFQ,6930
415
427
  firefighter_fixtures/incidents/impact_type.json,sha256=WqE2rmCIzoVkhUV7zw0-TGKKeJdex_yHRtxfBTwbgAM,1174
428
+ firefighter_fixtures/incidents/incident_categories.json,sha256=_O42ONXXhy9_J8Y3IyFOxkO9HXgpxamDJmna6dUZ01g,21593
416
429
  firefighter_fixtures/incidents/incident_role_type.json,sha256=74hkFOHynhAAfYIDDRBXF3AciW2F_nUpMX01DN3M3rs,1738
417
430
  firefighter_fixtures/incidents/metric_type.json,sha256=3OuNdzSYzFXDz460C-SYulNIKKxIHrToL9e2kp09tGA,2750
418
431
  firefighter_fixtures/incidents/milestone_type.json,sha256=oOtWOb5YM3JDc7yj0ErKPNFLN15qqyqL0m1f5fF7zuk,2317
419
432
  firefighter_fixtures/incidents/priorities.json,sha256=RZO7F7TBuyV9tZ9Vg_Nsr0NOfoFiaDohh3xv4E8VI8U,3765
420
433
  firefighter_fixtures/incidents/severities.json,sha256=hsaG3TT0oaRVvZVaeU6BJGddFn_gewJ4E7Lk7ufII6U,2467
421
- firefighter_fixtures/raid/area.json,sha256=x6hAGNNmSD8itWsRT_FPVBEGwtjLX3y91tkMwRiHzgc,278
422
434
  firefighter_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
423
- firefighter_tests/conftest.py,sha256=GtTm6uL_4jyneU47M6DRXWYnoHiAqgsFa4LTWlHO7cY,3241
424
- firefighter_tests/test_api/test_api_landbot.py,sha256=okuCaxvvV7_aUKW4Y6aZVGD_o3RA7hL5TMI08qORgAY,3583
435
+ firefighter_tests/conftest.py,sha256=fyVZNk4PX0ATjIjmq0BYjC9k3og26kkpC73npEgFlv8,3228
436
+ firefighter_tests/test_api/test_api_landbot.py,sha256=Bu7kLNtDLnefNdDx2a_qvvSDTLRWo824x97vJRQF_yg,3587
425
437
  firefighter_tests/test_api/test_api_urls.py,sha256=Nn7Flq7dWGYJjgZK5HGdGECFMwKiDdfDYI0g09gXK-c,1936
426
438
  firefighter_tests/test_confluence/test_confluence_utils.py,sha256=hD5M4mYwrHlil9KPARNQ5OINdRc5njfYCIdq8a6jUB8,1847
427
439
  firefighter_tests/test_firefighter/test_firefighter_utils.py,sha256=og79bkErCBQB-xkw88J-ronT0dDEChuqlMke2ElxATo,3590
428
440
  firefighter_tests/test_firefighter/test_logging.py,sha256=4HUH73vLDwmOCpMiXwDasMLL7F0kA1B_DxE48mqswSk,878
441
+ firefighter_tests/test_firefighter/test_sso.py,sha256=uX2ry0REDgXzQc9Y1BmAgI0OgbmzWoOv9H_GDyOqQmQ,5205
429
442
  firefighter_tests/test_firefighter/test_urls.py,sha256=UMGx4oW98RoL0ceePkIIKEVjbHdFECvQuGNXYAJForQ,4839
430
- firefighter_tests/test_incidents/test_incident_urls.py,sha256=vQy9f1ewJK3N9cjVQDBnLaZjhtiBv5TzoRiGUdV3u5E,3769
443
+ firefighter_tests/test_incidents/test_incident_urls.py,sha256=j663qeBkv31aMlA0sLfzBOmp0iEv9OB-xvIwzrjlSZk,3793
431
444
  firefighter_tests/test_incidents/test_forms/test_form_select_impact.py,sha256=DTaPGrJi8mXHfh7mhvDTKYVvDCxqarILauE59UDlwqo,3210
432
- firefighter_tests/test_incidents/test_forms/test_form_utils.py,sha256=24ATxxAjkLlz7cj_jIQZvuQvtrfieeh4oaIM90yQrlc,2299
445
+ firefighter_tests/test_incidents/test_forms/test_form_utils.py,sha256=tisEDCacCrG5usEyPkFLCZeG9ebp9b9N27dcUtGmYA4,2467
433
446
  firefighter_tests/test_incidents/test_forms/test_update_key_events.py,sha256=rHRGRU9iFXDdMr_kK3pMB7gyeZuMf7Dyq8bRZkddBC4,1644
434
- firefighter_tests/test_incidents/test_models/test_incident_model.py,sha256=Kl2dQ0P3qruAaQP5M8WRYJiff-4SpmxpFYHYmA9Xv3k,879
447
+ firefighter_tests/test_incidents/test_models/test_incident_category.py,sha256=aRoBOhb8fNjLF9CMPZ1FXM8AT51Cd80XPsY2Y3wHY_M,5701
448
+ firefighter_tests/test_incidents/test_models/test_incident_model.py,sha256=PciIbyA4OFjzMpAIyjnXRRFwGoVYYXzAxDNN2o4qpiw,895
435
449
  firefighter_tests/test_incidents/test_models/test_migrations/test_incident_migrations.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
436
450
  firefighter_tests/test_incidents/test_utils/test_date_utils.py,sha256=ogP7qOEwItL4YGI5gbQPVssOS9ilwiuZC8OrT2qngBY,6568
437
451
  firefighter_tests/test_incidents/test_views/test_incident_detail_view.py,sha256=gKKFWIZVrD_P4p6DJjeHCW5uGXBUBVlCd95gJJYDpWQ,680
438
452
  firefighter_tests/test_incidents/test_views/test_index_view.py,sha256=InpxbaWOFwRn4YWeIKZhj17vMymrQQf2p2LFhe2Bcdw,816
453
+ firefighter_tests/test_raid/test_priority_mapping.py,sha256=h8YproDbCVbsP4DTmN0xFWfdHdhIy2Jdn7X4e4kqgYs,11969
454
+ firefighter_tests/test_raid/test_raid_client.py,sha256=8iRBR4bKewPPbtz33hCLOHiZDTELPQBOrQb7EdNDS4c,21227
439
455
  firefighter_tests/test_raid/test_raid_client_users.py,sha256=9uma1wBhaiCoG75XAZHqpT8oGTnqFJRMCi7a3XctNtM,3631
456
+ firefighter_tests/test_raid/test_raid_forms.py,sha256=iMI8oQwMVOZmcQxnoxG0UIHfUTYC7z0vBYVOwGrj-Y4,28999
457
+ firefighter_tests/test_raid/test_raid_models.py,sha256=nq-fVClB_P24W8WrZruOPt8wlHUVGYI7wxJR7tH6AnM,5042
458
+ firefighter_tests/test_raid/test_raid_serializers.py,sha256=nejl4ceBPegOcks6z6B8_7Ekg8ef18j3i7C8Y8dS8v0,20665
459
+ firefighter_tests/test_raid/test_raid_service.py,sha256=AqVyrRjW2tr0sfbXS4lGlJ7mcxB2ACEXAR8Bv0pXnj0,16755
440
460
  firefighter_tests/test_raid/test_raid_transitions.py,sha256=mtmMKwukxmZSM-R619BQ3Z_2AB-qY6imvDgUF0A3_tw,4784
441
461
  firefighter_tests/test_raid/test_raid_utils.py,sha256=i6JBwim1G-qynwxprNZekxl9K7Vis4FFvNkw3wT2jTM,1016
462
+ firefighter_tests/test_raid/test_raid_views.py,sha256=paAhh4k2EDlmG1ehwNhMuYIhr1okqrvM7xlkaTAo2V0,6825
442
463
  firefighter_tests/test_slack/conftest.py,sha256=MCg04JFQ0iBeYUN_moEvvH4PVA3wE48Q6LkrIw7Bic0,2015
443
464
  firefighter_tests/test_slack/test_slack_utils.py,sha256=9PLobMNXh3xDyFuwzcQFpKJhe4j__sIgf_WRHIpANJw,3957
444
465
  firefighter_tests/test_slack/test_models/test_conversations.py,sha256=t3ttmgwiu7c-N55iU3XZPmrkEhvkTzJoXszJncy4Bts,793
445
466
  firefighter_tests/test_slack/test_models/test_incident_channel.py,sha256=qWoGe9iadmK6-R8usWvjH87AHRkvhG_dHQeC3kHeJrs,17487
446
467
  firefighter_tests/test_slack/test_models/test_slack_user.py,sha256=uzur-Rf03I5dpUTO4ZI6O1arBUrAorg1Zvgshf8M-J4,7000
447
- firefighter_tests/test_slack/views/modals/test_close.py,sha256=kcwGwonjIiniGb5f78ZwlKjuvYB-xat-SrbouV9VCEc,42894
468
+ firefighter_tests/test_slack/views/modals/test_close.py,sha256=TXNt5KWiPkWvvh9FvQhDiaiOWh6W8OdxmPEpWeO7Taw,42958
448
469
  firefighter_tests/test_slack/views/modals/test_open.py,sha256=z3lvAPOXCUSt7i_9jWYcQWGIRwRg7Z1DT6AfMOK22_s,4900
449
470
  firefighter_tests/test_slack/views/modals/test_send_sos.py,sha256=_rE6jD-gOzcGyhlY0R9GzlGtPx65oOOguJYdENgxtLc,1289
450
471
  firefighter_tests/test_slack/views/modals/test_status.py,sha256=oQzPfwdg2tkbo9nfkO1GfS3WydxqSC6vy1AZjZDKT30,2226
451
- firefighter_tests/test_slack/views/modals/test_update_status.py,sha256=Y8Oa_fraj1vtaGig9Y28_6tOWvMrRPS-wyg3rY-DHBk,39380
452
- firefighter_incident-0.0.13.dist-info/METADATA,sha256=EF5mZjZdNgypTxb3lZVVcu1HAxfEVPDZ4mSvJoyyYvI,5488
453
- firefighter_incident-0.0.13.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
454
- firefighter_incident-0.0.13.dist-info/entry_points.txt,sha256=c13meJbv7YNmYz7MipMOQwzQ5IeFOPXUBYAJ44XMQsM,61
455
- firefighter_incident-0.0.13.dist-info/licenses/LICENSE,sha256=krRiGp-a9-1nH1bWpBEdxyTKLhjLmn6DMVVoIb0zF90,1087
456
- firefighter_incident-0.0.13.dist-info/RECORD,,
472
+ firefighter_tests/test_slack/views/modals/test_update_status.py,sha256=T8sjYoPmllje5aNRHXlpsjiGe_hg7y2B50nivuG_vwk,39412
473
+ firefighter_incident-0.0.14.dist-info/METADATA,sha256=8kEtQu-FUuMd7bXJhcVMCmSVdfXbrYKjpkCsgq6zxZc,5541
474
+ firefighter_incident-0.0.14.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
475
+ firefighter_incident-0.0.14.dist-info/entry_points.txt,sha256=c13meJbv7YNmYz7MipMOQwzQ5IeFOPXUBYAJ44XMQsM,61
476
+ firefighter_incident-0.0.14.dist-info/licenses/LICENSE,sha256=krRiGp-a9-1nH1bWpBEdxyTKLhjLmn6DMVVoIb0zF90,1087
477
+ firefighter_incident-0.0.14.dist-info/RECORD,,
@@ -53,13 +53,14 @@ def django_db_setup(django_db_setup: Any, django_db_blocker: DjangoDbBlocker) ->
53
53
  fixtures_path_mp = impresources.files("firefighter_fixtures")
54
54
  fixtures_path = fixtures_path_mp._paths[0] # type: ignore
55
55
  except (ModuleNotFoundError, IndexError, AttributeError):
56
- fixtures_path = Path(__file__).parent / "fixtures"
56
+ # Use the fixtures directory in the project root
57
+ fixtures_path = Path(__file__).parent.parent / "fixtures"
57
58
  logger.info(f"Loading fixtures from {fixtures_path}")
58
59
 
59
60
  # XXX(dugab): Make sure we load all fixtures
60
61
  with django_db_blocker.unblock():
61
62
  call_command("loaddata", fixtures_path / "incidents" / "groups.json")
62
- call_command("loaddata", fixtures_path / "incidents" / "components.json")
63
+ call_command("loaddata", fixtures_path / "incidents" / "incident_categories.json")
63
64
  call_command("loaddata", fixtures_path / "incidents" / "severities.json")
64
65
  call_command("loaddata", fixtures_path / "incidents" / "priorities.json")
65
66
  call_command("loaddata", fixtures_path / "incidents" / "environments.json")
@@ -70,7 +71,6 @@ def django_db_setup(django_db_setup: Any, django_db_blocker: DjangoDbBlocker) ->
70
71
  call_command(
71
72
  "loaddata", fixtures_path / "incidents" / "incident_role_type.json"
72
73
  )
73
- call_command("loaddata", fixtures_path / "raid" / "area.json")
74
74
  django_db_blocker.restore()
75
75
 
76
76
 
@@ -80,10 +80,9 @@ def incident() -> Incident:
80
80
 
81
81
 
82
82
  @pytest.fixture
83
- @pytest.mark.django_db
84
83
  def incident_saved() -> Incident:
85
84
  incident: Incident = IncidentFactory.build()
86
- incident.component.group.save()
85
+ incident.incident_category.group.save()
87
86
  incident.created_by.save()
88
87
  incident.save()
89
88
  return incident
@@ -15,7 +15,7 @@ base_valid_data = {
15
15
  "zoho": "https://test_url.com",
16
16
  "platform": "FR",
17
17
  "reporter_email": "test_email@example.com",
18
- "impacted_area": "Test Area",
18
+ "incident_category": "Test Area",
19
19
  "suggested_team_routing": "TSTPRJ",
20
20
  "labels": ["testLabel1", "testLabel2"],
21
21
  "environments": ["PRD"],
@@ -0,0 +1,146 @@
1
+ from __future__ import annotations
2
+
3
+ from unittest.mock import patch
4
+
5
+ import pytest
6
+ from django.contrib.auth.models import Group
7
+
8
+ from firefighter.firefighter.sso import link_auth_user
9
+ from firefighter.incidents.factories import UserFactory
10
+
11
+
12
+ @pytest.mark.django_db
13
+ class TestLinkAuthUser:
14
+ """Test cases for the link_auth_user function."""
15
+
16
+ def test_link_auth_user_no_roles_claim(self) -> None:
17
+ """Test that function returns early when no roles in claim."""
18
+ user = UserFactory.create()
19
+ claim = {"some_other_field": "value"}
20
+
21
+ link_auth_user(user, claim)
22
+
23
+ # No changes should be made
24
+ assert list(user.groups.all()) == []
25
+
26
+ def test_link_auth_user_roles_not_list(self) -> None:
27
+ """Test that function returns early when roles is not a list."""
28
+ user = UserFactory.create()
29
+ claim = {"roles": "not_a_list"}
30
+
31
+ link_auth_user(user, claim)
32
+
33
+ # No changes should be made
34
+ assert list(user.groups.all()) == []
35
+
36
+ def test_link_auth_user_with_back_office_role(self) -> None:
37
+ """Test that back_office role grants staff status."""
38
+ user = UserFactory.create(is_staff=False)
39
+ claim = {"roles": ["back_office", "other_role"]}
40
+
41
+ # Create a group for testing
42
+ Group.objects.create(name="other_role")
43
+
44
+ link_auth_user(user, claim)
45
+
46
+ user.refresh_from_db()
47
+ assert user.is_staff is True
48
+ # back_office should be removed from group assignment
49
+ assert list(user.groups.values_list("name", flat=True)) == ["other_role"]
50
+
51
+ def test_link_auth_user_back_office_already_staff(self) -> None:
52
+ """Test that back_office role doesn't change already staff user."""
53
+ user = UserFactory.create(is_staff=True)
54
+ claim = {"roles": ["back_office"]}
55
+
56
+ with patch.object(user, "save") as mock_save:
57
+ link_auth_user(user, claim)
58
+ # save() should not be called since user is already staff
59
+ mock_save.assert_not_called()
60
+
61
+ def test_link_auth_user_clears_existing_groups(self) -> None:
62
+ """Test that existing groups are cleared before adding new ones."""
63
+ user = UserFactory.create()
64
+ old_group = Group.objects.create(name="old_group")
65
+ new_group = Group.objects.create(name="new_group")
66
+
67
+ # Add user to old group
68
+ user.groups.add(old_group)
69
+ assert old_group in user.groups.all()
70
+
71
+ claim = {"roles": ["new_group"]}
72
+
73
+ link_auth_user(user, claim)
74
+
75
+ # Old group should be removed, new group added
76
+ assert list(user.groups.all()) == [new_group]
77
+
78
+ def test_link_auth_user_with_existing_groups(self) -> None:
79
+ """Test that multiple existing groups are added correctly."""
80
+ user = UserFactory.create()
81
+ group1 = Group.objects.create(name="group1")
82
+ group2 = Group.objects.create(name="group2")
83
+
84
+ claim = {"roles": ["group1", "group2"]}
85
+
86
+ link_auth_user(user, claim)
87
+
88
+ user_groups = list(user.groups.all())
89
+ assert group1 in user_groups
90
+ assert group2 in user_groups
91
+ assert len(user_groups) == 2
92
+
93
+ def test_link_auth_user_nonexistent_group_logs_warning(self, caplog) -> None:
94
+ """Test that nonexistent groups log a warning."""
95
+ user = UserFactory.create()
96
+ claim = {"roles": ["nonexistent_group"]}
97
+
98
+ with caplog.at_level("WARNING"):
99
+ link_auth_user(user, claim)
100
+
101
+ assert "Group nonexistent_group from SSO does not exist" in caplog.text
102
+ assert list(user.groups.all()) == []
103
+
104
+ def test_link_auth_user_mixed_existing_and_nonexistent_groups(self, caplog) -> None:
105
+ """Test with mix of existing and nonexistent groups."""
106
+ user = UserFactory.create()
107
+ existing_group = Group.objects.create(name="existing_group")
108
+
109
+ claim = {"roles": ["existing_group", "nonexistent_group"]}
110
+
111
+ with caplog.at_level("WARNING"):
112
+ link_auth_user(user, claim)
113
+
114
+ # Should add existing group and log warning for nonexistent
115
+ assert list(user.groups.all()) == [existing_group]
116
+ assert "Group nonexistent_group from SSO does not exist" in caplog.text
117
+
118
+ def test_link_auth_user_empty_roles_list(self) -> None:
119
+ """Test with empty roles list."""
120
+ user = UserFactory.create()
121
+ old_group = Group.objects.create(name="old_group")
122
+ user.groups.add(old_group)
123
+
124
+ claim = {"roles": []}
125
+
126
+ link_auth_user(user, claim)
127
+
128
+ # Groups should be cleared
129
+ assert list(user.groups.all()) == []
130
+
131
+ def test_link_auth_user_back_office_with_other_roles(self) -> None:
132
+ """Test back_office role with other roles in comprehensive scenario."""
133
+ user = UserFactory.create(is_staff=False)
134
+ admin_group = Group.objects.create(name="admin")
135
+ editor_group = Group.objects.create(name="editor")
136
+
137
+ claim = {"roles": ["back_office", "admin", "editor"]}
138
+
139
+ link_auth_user(user, claim)
140
+
141
+ user.refresh_from_db()
142
+ assert user.is_staff is True
143
+
144
+ user_groups = set(user.groups.all())
145
+ expected_groups = {admin_group, editor_group}
146
+ assert user_groups == expected_groups