firefighter-incident 0.0.12__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 (100) 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/0019_set_security_components_private.py +67 -0
  17. firefighter/incidents/migrations/0020_create_incident_category_model.py +64 -0
  18. firefighter/incidents/migrations/0021_copy_component_data_to_incident_category.py +57 -0
  19. firefighter/incidents/migrations/0022_add_incident_category_fields.py +34 -0
  20. firefighter/incidents/migrations/0023_populate_incident_category_references.py +57 -0
  21. firefighter/incidents/migrations/0024_remove_component_fields_and_model.py +26 -0
  22. firefighter/incidents/migrations/0025_make_incident_category_required.py +24 -0
  23. firefighter/incidents/migrations/0026_alter_incidentcategory_options_and_more.py +39 -0
  24. firefighter/incidents/models/__init__.py +1 -1
  25. firefighter/incidents/models/group.py +1 -1
  26. firefighter/incidents/models/incident.py +15 -15
  27. firefighter/incidents/models/{component.py → incident_category.py} +30 -29
  28. firefighter/incidents/models/incident_update.py +3 -3
  29. firefighter/incidents/tables.py +9 -9
  30. firefighter/incidents/templates/layouts/partials/incident_card.html +1 -1
  31. firefighter/incidents/templates/layouts/partials/incident_timeline.html +2 -2
  32. firefighter/incidents/templates/pages/{component_detail.html → incident_category_detail.html} +13 -13
  33. firefighter/incidents/templates/pages/{component_list.html → incident_category_list.html} +2 -2
  34. firefighter/incidents/templates/pages/incident_detail.html +3 -3
  35. firefighter/incidents/urls.py +6 -6
  36. firefighter/incidents/views/components/details.py +9 -9
  37. firefighter/incidents/views/components/list.py +9 -9
  38. firefighter/incidents/views/reports.py +2 -2
  39. firefighter/incidents/views/users/details.py +2 -2
  40. firefighter/incidents/views/views.py +7 -7
  41. firefighter/jira_app/client.py +1 -1
  42. firefighter/logging/custom_json_formatter.py +2 -1
  43. firefighter/pagerduty/tasks/trigger_oncall.py +1 -1
  44. firefighter/raid/admin.py +0 -11
  45. firefighter/raid/client.py +3 -3
  46. firefighter/raid/forms.py +53 -19
  47. firefighter/raid/migrations/0003_delete_raidarea.py +16 -0
  48. firefighter/raid/models.py +2 -21
  49. firefighter/raid/serializers.py +5 -4
  50. firefighter/raid/service.py +29 -27
  51. firefighter/raid/signals/incident_created.py +4 -2
  52. firefighter/raid/utils.py +1 -1
  53. firefighter/raid/views/__init__.py +1 -1
  54. firefighter/raid/views/open_normal.py +2 -2
  55. firefighter/slack/admin.py +8 -8
  56. firefighter/slack/management/commands/switch_test_users.py +272 -0
  57. firefighter/slack/messages/slack_messages.py +5 -5
  58. firefighter/slack/migrations/0005_add_incident_categories_fields.py +33 -0
  59. firefighter/slack/migrations/0006_copy_components_to_incident_categories.py +57 -0
  60. firefighter/slack/migrations/0007_remove_components_fields.py +22 -0
  61. firefighter/slack/migrations/0008_alter_conversation_incident_categories_and_more.py +33 -0
  62. firefighter/slack/models/conversation.py +3 -3
  63. firefighter/slack/models/incident_channel.py +1 -1
  64. firefighter/slack/models/user.py +1 -1
  65. firefighter/slack/models/user_group.py +3 -3
  66. firefighter/slack/rules.py +1 -1
  67. firefighter/slack/signals/get_users.py +2 -2
  68. firefighter/slack/signals/incident_updated.py +1 -1
  69. firefighter/slack/utils.py +2 -2
  70. firefighter/slack/views/events/home.py +2 -2
  71. firefighter/slack/views/modals/base_modal/form_utils.py +15 -0
  72. firefighter/slack/views/modals/close.py +3 -3
  73. firefighter/slack/views/modals/open.py +25 -1
  74. firefighter/slack/views/modals/opening/check_current_incidents.py +2 -2
  75. firefighter/slack/views/modals/opening/details/critical.py +1 -1
  76. firefighter/slack/views/modals/opening/select_impact.py +5 -2
  77. firefighter/slack/views/modals/update_status.py +4 -4
  78. firefighter_fixtures/incidents/{components.json → incident_categories.json} +52 -52
  79. {firefighter_incident-0.0.12.dist-info → firefighter_incident-0.0.14.dist-info}/METADATA +2 -2
  80. {firefighter_incident-0.0.12.dist-info → firefighter_incident-0.0.14.dist-info}/RECORD +99 -77
  81. firefighter_tests/conftest.py +4 -5
  82. firefighter_tests/test_api/test_api_landbot.py +1 -1
  83. firefighter_tests/test_firefighter/test_sso.py +146 -0
  84. firefighter_tests/test_incidents/test_forms/test_form_utils.py +15 -15
  85. firefighter_tests/test_incidents/test_incident_urls.py +3 -3
  86. firefighter_tests/test_incidents/test_models/test_incident_category.py +165 -0
  87. firefighter_tests/test_incidents/test_models/test_incident_model.py +2 -2
  88. firefighter_tests/test_raid/test_priority_mapping.py +267 -0
  89. firefighter_tests/test_raid/test_raid_client.py +580 -0
  90. firefighter_tests/test_raid/test_raid_forms.py +795 -0
  91. firefighter_tests/test_raid/test_raid_models.py +185 -0
  92. firefighter_tests/test_raid/test_raid_serializers.py +507 -0
  93. firefighter_tests/test_raid/test_raid_service.py +442 -0
  94. firefighter_tests/test_raid/test_raid_views.py +196 -0
  95. firefighter_tests/test_slack/views/modals/test_close.py +6 -6
  96. firefighter_tests/test_slack/views/modals/test_update_status.py +4 -4
  97. firefighter_fixtures/raid/area.json +0 -1
  98. {firefighter_incident-0.0.12.dist-info → firefighter_incident-0.0.14.dist-info}/WHEEL +0 -0
  99. {firefighter_incident-0.0.12.dist-info → firefighter_incident-0.0.14.dist-info}/entry_points.txt +0 -0
  100. {firefighter_incident-0.0.12.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=yXPCLHqHWroxl6PYku74xz7jqX7Xrf288eRJfEDWwBo,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
@@ -163,18 +163,26 @@ firefighter/incidents/migrations/0015_update_impact_level.py,sha256=OQVTVrWvQ1or
163
163
  firefighter/incidents/migrations/0016_update_business_incidents_and_level.py,sha256=O5AL9twmjstSw44ndJ2-Og6dpKreReXVw_brpQb-t0w,3600
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
+ 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
166
174
  firefighter/incidents/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
167
- firefighter/incidents/models/__init__.py,sha256=dCNP-zRYNNDOZB3JDDWp7vCl084Jh6RgDT_iP57RkOY,862
168
- firefighter/incidents/models/component.py,sha256=7GyXKNFk1MZns6RUGLpkNw5u6He7H9N1LexzXbG4sBM,7445
175
+ firefighter/incidents/models/__init__.py,sha256=FLVyBwIdyxLdgSvXRAKC3fry9YwwqlqhitTIuG0vWrk,877
169
176
  firefighter/incidents/models/environment.py,sha256=51txwua3dCrWZ1iSG3ZA8rbDn9c00pyMAZujl9gwE5c,827
170
- firefighter/incidents/models/group.py,sha256=MscG3IY5AdyJbmq8h4mMqEvLwmnJLor9rkd6CIycKho,685
177
+ firefighter/incidents/models/group.py,sha256=VrVL315VFUvKW69AZuRUBg1h0jZJvn8zWeMxMOWec1Y,700
171
178
  firefighter/incidents/models/impact.py,sha256=URoMsQBJQnyfaNRpVl1o4A1IllM7dg94sd6tf5Ssr-k,4868
172
- 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
173
181
  firefighter/incidents/models/incident_cost.py,sha256=juwOfJKRaNQpOHkRUCHShDDba0FU98YjRPkU4I0ofAU,1346
174
182
  firefighter/incidents/models/incident_cost_type.py,sha256=wm8diry_VySJzIjC9M3Yavv2tYbvJgpN9UDb2gFRuH4,845
175
183
  firefighter/incidents/models/incident_membership.py,sha256=vvvBvYPxNlM98KdF81cMrDif8_Wl5TqqNkmf_z9lZO8,1745
176
184
  firefighter/incidents/models/incident_role_type.py,sha256=YxtQmsmZQRVxa_pSVe-lIVEoZN5k56cR7o8soWCcFng,2104
177
- firefighter/incidents/models/incident_update.py,sha256=ewWccR4Dc7gJENPdJLuonVw-WOgl-tQZ37ENoRw86ic,4582
185
+ firefighter/incidents/models/incident_update.py,sha256=lCslA0Bz7qI9qORr0-Wir6yWzp0AeuCKsYHhLyKKukQ,4612
178
186
  firefighter/incidents/models/metric_type.py,sha256=nmc7LANTMjwQmm6LCfLhv4aF7ClEBV2L4PAu1wGfV3w,2981
179
187
  firefighter/incidents/models/milestone_type.py,sha256=SToXfQncNkGWLs4xZDNtT0lM4lj-9Pj9mZvr4JI85Fs,1827
180
188
  firefighter/incidents/models/priority.py,sha256=5bWsuurbE6TFtMczgCBX6uYkb-nBdTC2ABV-d7b9iw0,2199
@@ -216,9 +224,9 @@ firefighter/incidents/templates/layouts/partials/created_at_help.html,sha256=HVS
216
224
  firefighter/incidents/templates/layouts/partials/environment_pill.html,sha256=PoEWgUn3r-IKGgf-J68VW3UegDuaH1sYASFT3dcbEtY,383
217
225
  firefighter/incidents/templates/layouts/partials/footer.html,sha256=4poLvnggOYPZFoOF1S8giSaj3A8xTDGAqfNhclKsedA,1490
218
226
  firefighter/incidents/templates/layouts/partials/header.html,sha256=OMef96AQGSklh9LWR6uxEwNjV8TkWI4BtnVQ46-pqsA,4849
219
- firefighter/incidents/templates/layouts/partials/incident_card.html,sha256=0JyXdm5PeELBKGwPPoyKyV_tvz22qRtbcQv3BK5FupY,1911
227
+ firefighter/incidents/templates/layouts/partials/incident_card.html,sha256=0QC3CAEoDiA6LUJ0vSZIXVQ8TypszssWe9gZ8ev0UNk,1927
220
228
  firefighter/incidents/templates/layouts/partials/incident_metrics.html,sha256=tHFjeWtwEDZtXlTHdnaHk9_ajl2rOAtEokVQQAV66rQ,1445
221
- 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
222
230
  firefighter/incidents/templates/layouts/partials/incident_update_key_events_view.html,sha256=LXmElIIxAfDnk4q93VeipGashJJKOn5sLuR0UfVq6V0,422
223
231
  firefighter/incidents/templates/layouts/partials/incident_update_key_events_view_modal.html,sha256=MOYicsn3L3KMUhPkpnvvw2Q28lBv0TbclLQi2L7OEiQ,886
224
232
  firefighter/incidents/templates/layouts/partials/partial_table_list_paginated.html,sha256=O4VGlObu4gBXx0tid-K04XMnJeKXsGBfywu4IXdVxqM,6411
@@ -228,12 +236,12 @@ firefighter/incidents/templates/layouts/partials/status_pill.html,sha256=D9V8bnO
228
236
  firefighter/incidents/templates/layouts/partials/table.html,sha256=eZE4kh0nQwGik6qc7A0O_jHyZcg32uzHc1pkjJRt6hw,1567
229
237
  firefighter/incidents/templates/layouts/partials/user_card.html,sha256=LgYHSpqC0BAhVENMSmLpow8jlPnh5uRvHzooJlJna6w,802
230
238
  firefighter/incidents/templates/layouts/partials/user_tooltip.html,sha256=KkVPpoODXIzrm6iItTg5RQphBGruQw4dFdOgAuGRt1E,562
231
- firefighter/incidents/templates/pages/component_detail.html,sha256=WLO9zg8zDCUtINOHK9xP5dKd5WaB8UWT6JNjLjYSQKs,5277
232
- firefighter/incidents/templates/pages/component_list.html,sha256=WbkLGozNbijTk_5iklOS5Hftlc-JHBpkSVL2s1FgUgk,1719
233
239
  firefighter/incidents/templates/pages/dashboard.html,sha256=jGfTCTdyLt3fWtX66HVG1bNgpffV4J7jagVgksCGsSE,1743
234
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
235
243
  firefighter/incidents/templates/pages/incident_create.html,sha256=syDS8EqmdcCf6z2dJox5gSPTOsyNdq0jFiDdzVc_vmU,2280
236
- firefighter/incidents/templates/pages/incident_detail.html,sha256=ryxcV0Vncftt4X6yEjv_qKHWf2CkfQOXRBuUIN6eSSs,15026
244
+ firefighter/incidents/templates/pages/incident_detail.html,sha256=HhwpMg1nAaUqbYDi2RrgK5IkPhiKzHKcoSmk98O-rng,15058
237
245
  firefighter/incidents/templates/pages/incident_list.html,sha256=IWTZyuIeG1RVCZGNLQ_N3Jg7a_Ush6YbQXWUy0xVuV8,2339
238
246
  firefighter/incidents/templates/pages/incident_role_types_detail.html,sha256=LVoFbW9rrP4Yln_Ld-Jwe1JvhhvgwpxZgpdNzbrLWsA,4099
239
247
  firefighter/incidents/templates/pages/incident_role_types_list.html,sha256=SRBhDIfne-bX4C-EhYqyCktIksR4Rd5GPMkYfE6El1o,1556
@@ -245,20 +253,20 @@ firefighter/incidents/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
245
253
  firefighter/incidents/views/date_filter.py,sha256=fUhTjkBulMokI5tAHuqNDVv1dyspjmw3O2vzkkhqbUs,5648
246
254
  firefighter/incidents/views/date_utils.py,sha256=tiRTlh7PmRv4eAH0asiSX3Gn7ajsal9egm4S1d7s3_s,5759
247
255
  firefighter/incidents/views/errors.py,sha256=yDuH0YOdGf-voVNEC51yR9Ie3OU-az7g2EqWs_uV1Kk,7855
248
- firefighter/incidents/views/reports.py,sha256=4h9z1QIhnDkzEyqvi-GI_j9Oem2igvqTk0NZsbSoVoc,20947
249
- 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
250
258
  firefighter/incidents/views/components/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
251
- firefighter/incidents/views/components/details.py,sha256=4pBCAS2gLYAm4CwTJ5mkw43dq8BkGknsAwrQgeMF21Q,942
252
- 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
253
261
  firefighter/incidents/views/docs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
254
262
  firefighter/incidents/views/docs/metrics.py,sha256=n2-chgxTokOqCx-W5YZRHK3pYmzvz0b_RF6s1de2Fcw,1713
255
263
  firefighter/incidents/views/docs/role_types.py,sha256=88dGBAL7NMC24lyqLDN0jGnh5-ILRI5afL2Wig7LrFs,1122
256
264
  firefighter/incidents/views/users/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
257
- firefighter/incidents/views/users/details.py,sha256=MivRG7sOXPe1mTC8yZm27a05nBgTQvbHNsXjcD4ARok,1835
265
+ firefighter/incidents/views/users/details.py,sha256=xqDUEMorplAdSJNQ2vcNzntKKn6UsMDb_dXjVBN2GeY,1853
258
266
  firefighter/jira_app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
259
267
  firefighter/jira_app/admin.py,sha256=YywHfi1dlpyyW8XPYvjtOW3fbTZGm5bKXvHbDkr0D_8,702
260
268
  firefighter/jira_app/apps.py,sha256=W6iM_e2X-dQ4YSeDPuFPM4wp-zIgpWsEiehtng0fk48,348
261
- firefighter/jira_app/client.py,sha256=I4aHft_0GZd11z9Wr484n-WgZ2nfwoatwjxCkHu-60U,16128
269
+ firefighter/jira_app/client.py,sha256=pf0uqs6ccLKy0wCEIcP9FtKrsgTRkpipA9J6Mkj9p2I,16140
262
270
  firefighter/jira_app/models.py,sha256=m-ay74zeI9zMyKuTBfN7W8DPDc9zPmiDESC8mnGBjR4,1741
263
271
  firefighter/jira_app/types.py,sha256=Ukak1U1EhcH2jQPN-UoEL6AMZ-kzPsQ8c7FUr7GmahE,956
264
272
  firefighter/jira_app/utils.py,sha256=3xuzr8viZCBm6j2J9oFzA4bUvVW8TN1DOdlpbruJ_TE,3443
@@ -267,7 +275,7 @@ firefighter/jira_app/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm
267
275
  firefighter/jira_app/tasks/__init__.py,sha256=XLCPkolM6LwIUGv0MNbk_0lCuBHyzgRFHsE3vTRD5ds,86
268
276
  firefighter/jira_app/tasks/sync_users_jira.py,sha256=sSSLsVCdzkPNRS6Gt8j0YwCTuoRqkJAJLxDBu7IElmM,1437
269
277
  firefighter/logging/__init__.py,sha256=SSTapLdwQsMkBy8FDFOjLkzJlutfT152mmPEGErirK4,60
270
- firefighter/logging/custom_json_formatter.py,sha256=iRdis9C3j0HMIhn9W3YPRfi1O9dFeNSiWJ8L56QEeX4,5574
278
+ firefighter/logging/custom_json_formatter.py,sha256=dckOtllNTfeDLc1J4FWJ-_PVeT_CqfQIyTs9FKfZsqE,5601
271
279
  firefighter/logging/pretty_formatter.py,sha256=6FxNVpQczcVhmLbLCz6HWxOQOvbqgH12-y8t1d7drfs,2411
272
280
  firefighter/pagerduty/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
273
281
  firefighter/pagerduty/admin.py,sha256=PmC227877OM-dq86953aQppu8TMWPnCZy4xJw5NST6E,3216
@@ -287,7 +295,7 @@ firefighter/pagerduty/tasks/__init__.py,sha256=7OtGthF6OX0Dmbe9U81Gk8h7A0dehfsJY
287
295
  firefighter/pagerduty/tasks/fetch_oncall.py,sha256=knoyHbBLUSrBsrWdv8UODPlByOOvqW5a5hInRa7-lGI,3952
288
296
  firefighter/pagerduty/tasks/fetch_services.py,sha256=GD3cCZtIBmI3mnRJnb4HdWeJwIm1X081gTIE0zAZvks,1268
289
297
  firefighter/pagerduty/tasks/fetch_users.py,sha256=wPFV9xR2xj3pNJlHPjM9BlX9I6E8hh7wfO29bH-Jz0k,2489
290
- firefighter/pagerduty/tasks/trigger_oncall.py,sha256=tQbFlhYf0RMA4KIGU1E3s2f5rYxF6O06CvQiC_Af-9M,3395
298
+ firefighter/pagerduty/tasks/trigger_oncall.py,sha256=nwjqHZOa2oYqtZvnaIERPAB-MdoZ7RoYcckfGG-pzDg,3414
291
299
  firefighter/pagerduty/templates/pages/oncall_list.html,sha256=fDgQnST-l5-CiIScQLAioT_ewb7Gs6yW0BWo4T_EDbE,4388
292
300
  firefighter/pagerduty/templates/pages/oncall_trigger.html,sha256=Un6BgHp8r52cCbqH8FJLI6criaHpzu6BtjJq10kJg4w,568
293
301
  firefighter/pagerduty/templates/partials/trigger_oncall_form_view.html,sha256=m3uIodbv3U76QGcGq5ijCQYwe-PvBY2ISXnEMksdlB4,450
@@ -296,63 +304,69 @@ firefighter/pagerduty/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
296
304
  firefighter/pagerduty/views/oncall_list.py,sha256=o8h0ln7YsYcJp_N8DePzIBO2NMc2bJWCFLfLXWQJA9s,1086
297
305
  firefighter/pagerduty/views/oncall_trigger.py,sha256=LYHpWyEaR6O8NazmsTl5ydtw1XHynUfaTB1IU429eZ8,2526
298
306
  firefighter/raid/__init__.py,sha256=nMNmvHCSkyLQsdhTow7myMU62vXk1e755gUntVfFFlY,154
299
- firefighter/raid/admin.py,sha256=YaqjJ7UcoEf_72kKVVN-O2Pp7_9lGuUdc-nHSQZYEYM,1405
307
+ firefighter/raid/admin.py,sha256=WhIHaRAv7JPp2NH27w7_0JfvGHrvoyRJhYr3_WwedrA,1117
300
308
  firefighter/raid/apps.py,sha256=BUkaZSu45Ghdpx1XnE3DaFD4SC2SeUtSDZOTYynte5k,1655
301
- firefighter/raid/client.py,sha256=Y-aAXbVC_seyo4CfBF5CoiTAu36Jq3XKBTsXTLJGFH0,7993
302
- 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
303
311
  firefighter/raid/messages.py,sha256=e75kwi0hCe5ChwU4t-_6Q3Rcy22MLLdVSsYyjvG2SCM,5542
304
- firefighter/raid/models.py,sha256=FNfPHvlF9h09LxL2a4zFPfc0raArmufywjzTdqGATms,2662
312
+ firefighter/raid/models.py,sha256=29Smci739K1ZdcMu7uXYvoVEhgDpwLQoCzBbc5wvwhs,2211
305
313
  firefighter/raid/resources.py,sha256=39GhITs3OAWA1eSPZme-rLd818kuz7gwYzdN38zNz8Y,436
306
- firefighter/raid/serializers.py,sha256=mxUtEVnIXqdHaTSIDO_Ul_T2ww_2mautyQDNiK0EyJE,11366
307
- 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
308
316
  firefighter/raid/types.py,sha256=0lFy_Wl3Ekyy_sxTHPRxMn3kjEJVWCTPjmefDlrPqMQ,438
309
317
  firefighter/raid/urls.py,sha256=oESkDY2tfZcnPGUgULqixvbV3Z7YsZfeI10RX3A5tZY,924
310
- firefighter/raid/utils.py,sha256=Ij16r8EodD7RAZaTuFYjMhZMrVRYF0e4hfiLZhdv5L4,1098
318
+ firefighter/raid/utils.py,sha256=OhsuFb46lokVxjyfeBFLMcMIGzjkTrrdd6DCXUJym0E,1111
311
319
  firefighter/raid/migrations/0001_initial_oss.py,sha256=oZQ44dHboLeHbvVyziHX_hhdis8H_Buv2W3jHiDzQhA,6259
312
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
313
322
  firefighter/raid/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
314
323
  firefighter/raid/signals/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
315
- firefighter/raid/signals/incident_created.py,sha256=ksXsjiEU-PgEf30XwEXWd7nbrWMXZgwfidiaYvCaOT8,3740
324
+ firefighter/raid/signals/incident_created.py,sha256=s4PNNrXDmhAw_3NnDQenHbQl9WPMmN_OmYAGq7tueVk,3908
316
325
  firefighter/raid/signals/incident_updated.py,sha256=cLiqgCIKjGZpvkb7w3ASDtJ8tWP4agFpmgfmDnT3xOs,1330
317
326
  firefighter/raid/tasks/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
318
- firefighter/raid/views/__init__.py,sha256=a-ZiWaudIAH1OkR7FAFSMtasQ1SaB-lfoKJoArKraCM,5182
319
- 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
320
329
  firefighter/slack/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
321
- firefighter/slack/admin.py,sha256=bdjO64POpObyAOEVjiruSdW1Kvh7zV0XUzXK6BoPqVg,13893
330
+ firefighter/slack/admin.py,sha256=pNJbA-szxUUrghxv_Z0BNezu6lULDzFcOu_K5i4m7Cs,13963
322
331
  firefighter/slack/apps.py,sha256=gR0zWTtqT58tjPayBX22ZSzMkLiNpmoOvLShNvhJA6Q,664
323
332
  firefighter/slack/factories.py,sha256=tnrUTbtgehCuBr24MtTyJ3uezKC6gJbOdHuYZ5JBoyU,3886
324
- firefighter/slack/rules.py,sha256=nCNWiyg6HMBYKyE1TVXz_FWNk5YmTjLugB7PVG_08cg,1639
333
+ firefighter/slack/rules.py,sha256=nt60Uwb_bTEZpLbUzdd9nqGRjkmuKxqZudm1mqEaSk8,1647
325
334
  firefighter/slack/slack_app.py,sha256=mvaH0hPFaNIUxEB7J0fy6y-PNPGsdPqjXFVmpTQ_hCo,4201
326
335
  firefighter/slack/slack_incident_context.py,sha256=PjE7-w-pGFyV4faw8EMsEFp4RG_T251RhofmqrsDG7Q,7277
327
336
  firefighter/slack/slack_templating.py,sha256=rWe8m1n648wizw08U_vLz8daRnp4zmkcWRqocIBpQj4,3841
328
337
  firefighter/slack/urls.py,sha256=3HKbEPcjV-XzFvGFBS3FWsAOshp33hssOxRAmSaBIgE,247
329
- firefighter/slack/utils.py,sha256=wJJWfRRWCTn45d593IjXQuJOISVt7Z3N5kmB2G-tYO4,4079
338
+ firefighter/slack/utils.py,sha256=wsSQs-WnV2WybvQixfYputcVdzEjr7eFsGZxbrUJm8s,4095
330
339
  firefighter/slack/forms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
331
340
  firefighter/slack/forms/sos_form.py,sha256=v544RMMzUjVgInSaZh_75PmbZf0FIKy4fcjdlV78pCE,257
332
341
  firefighter/slack/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
333
342
  firefighter/slack/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
334
343
  firefighter/slack/management/commands/generate_manifest.py,sha256=zFWHAC7ioozcDdhJ5KrLU4JNhULdtYjBUJTtclgBgSo,6911
344
+ firefighter/slack/management/commands/switch_test_users.py,sha256=2KTSvCBxsEvZa61J8p0r3huPNhwuytcj2J7IawwZWpQ,11064
335
345
  firefighter/slack/messages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
336
346
  firefighter/slack/messages/base.py,sha256=biH-YEAaldJ-OLHEs5ZjW-gtUYUbjOqxrAEflqV2XS0,4593
337
- firefighter/slack/messages/slack_messages.py,sha256=yzxN0v-G0KNlz-rA6va9MlweOZxCTJhgjfQl662F0dc,33072
347
+ firefighter/slack/messages/slack_messages.py,sha256=nN7lF81VqtkxFLOaWag3oNg-9FVdZyuuKQihhbR4z8g,33137
338
348
  firefighter/slack/migrations/0001_initial_oss.py,sha256=XmTPgq7zCME2xDwzRFoVi4OegSIG9eSKoyTNoW05Qtg,12933
339
349
  firefighter/slack/migrations/0002_usergroup_tag.py,sha256=098tmGA81mT-R2uhb6uQfZ7gKiRG9bFhEwQ8rrp4SKM,583
340
350
  firefighter/slack/migrations/0003_alter_usergroup_tag.py,sha256=ncH3KUWEPZHlbdcAtOJ0KGt5H6EX-cKspTGU3osrAhE,591
341
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
342
356
  firefighter/slack/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
343
357
  firefighter/slack/models/__init__.py,sha256=MGc4yuDnVhmAiHy1-5rjaLIfVv9JOup5arRutcUs8Ak,332
344
- firefighter/slack/models/conversation.py,sha256=euN3eS-9KUIxOErfxDhZ8nNdwkrp8JKefLJN6ypszXA,16190
345
- 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
346
360
  firefighter/slack/models/message.py,sha256=E1MQoZJz4MsgCeqgP94_jtSrz2RYuWdoys8tz4Tfboc,4727
347
361
  firefighter/slack/models/sos.py,sha256=Sji-7DxgsrLs7vFRJKPw7nmYyo2tIjNwoTcmdCmzEvA,1418
348
- firefighter/slack/models/user.py,sha256=744fulTB00UQzsZwxf8CiQNMfEKmYY6y37x6zm6g14I,17218
349
- 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
350
364
  firefighter/slack/signals/__init__.py,sha256=dqMf2x-PVKgmwzH2d9uHuQ8hZ4fbu74eRd4Ij2_dNSg,186
351
365
  firefighter/slack/signals/create_incident_conversation.py,sha256=uybiqCgPlWYq2AA2FKNkEmqhDYxDy-h0ebT-RBVpx9I,4965
352
- firefighter/slack/signals/get_users.py,sha256=_xPsZFgcxd87Vuhv6FttttrxnIb0z65-It8H3FZlHOM,2271
366
+ firefighter/slack/signals/get_users.py,sha256=-ZUI3ORJZJ4tLiGhVwIU-pWHoriALtOC7Kh_bFR4bGU,2287
353
367
  firefighter/slack/signals/handle_incident_channel_done.py,sha256=pYoS_ZJf2u9seHCqahfPHz4BrfvF1vIZjE1_yy0P5mY,1726
354
368
  firefighter/slack/signals/incident_closed.py,sha256=6QyUmTjEGVg0Wn5W-i2F8DlJuhvHjg3MxkcvAXFn9Bk,687
355
- firefighter/slack/signals/incident_updated.py,sha256=sVQ1hJP4aG9vLK4jMqKT56oJ2OAOGBCmuBLy_NT28VI,8115
369
+ firefighter/slack/signals/incident_updated.py,sha256=HLJS6HaZ9fthvobUEx-x-SAtyOsO8W2_utGP9i36h5Y,8123
356
370
  firefighter/slack/signals/postmortem_created.py,sha256=XY8_lEmBEG3VSsankpbOWdEB9dom9Ke6u8ss4-aDX6Y,1152
357
371
  firefighter/slack/signals/roles_reminders.py,sha256=1Ef_J1PubY8WTVs2WDXz4KWa6X2Lvp1RFObIjSGpiOM,4041
358
372
  firefighter/slack/tasks/__init__.py,sha256=28QxZkakyi9l7Ae83fQuzOS-9EaBiwuh_peUZwIxCx4,179
@@ -374,18 +388,18 @@ firefighter/slack/views/events/channel_shared.py,sha256=179KUJ8wZ1hPFXF58Neh3njJ
374
388
  firefighter/slack/views/events/channel_unarchive.py,sha256=YSwMz9H5CeXXeLOUHWI6uAIS4q_oxe4fyMJ9ha0-fuk,968
375
389
  firefighter/slack/views/events/channel_unshared.py,sha256=attB5woORof1OOECyfAbxLqL0QrUtdSVfOdEIjS4YgU,734
376
390
  firefighter/slack/views/events/commands.py,sha256=M65X9gtjKOQtbuMuWoeJHqyskw6J0bgNUwyjydVmxLY,4827
377
- firefighter/slack/views/events/home.py,sha256=xqQeLfxfvcRrjT-JPou3ddbRSKGTZvnyLfokxHh_K_I,6415
391
+ firefighter/slack/views/events/home.py,sha256=OnWkn9vjDXvKzzV5KdbZ0kedunDYPWrvwCYKdAR5l_8,6450
378
392
  firefighter/slack/views/events/member_joined_channel.py,sha256=BJySHHTAuDotyRK0TXBiyqzZXsEDZGKM_4KILdXUr5g,2370
379
393
  firefighter/slack/views/events/member_left_channel.py,sha256=49CQxYvjJwFEBnnpgrLl8WFk8ArOrj-L7GPNIlULQVw,2181
380
394
  firefighter/slack/views/events/message.py,sha256=c8tvo0btOUu_5Bc83oiO3IQbaEyoRiUWFk118yqF90g,2068
381
395
  firefighter/slack/views/events/message_deleted.py,sha256=tyA1-sAlG9ImcKIhqSn6EgujHmbvj4Uw2QzQ4JH4QwI,747
382
396
  firefighter/slack/views/events/reaction_added.py,sha256=AipwBnrU5B35D97YIZCXdSW8W7-9QTIIQqUcrLTLQ5c,4241
383
397
  firefighter/slack/views/modals/__init__.py,sha256=fXecF962l_qsp-MK8u2Y84p49cDKyFDQXlWUEKME9XE,1833
384
- firefighter/slack/views/modals/close.py,sha256=ur1SSRWk9NYFfL24gjOqoIiXKquDy6qeEMLOFUpFdi4,11598
398
+ firefighter/slack/views/modals/close.py,sha256=TE9NXcpMk86yeV_zKxGKFeVhstdJCemghY6yVRuaGMQ,11630
385
399
  firefighter/slack/views/modals/downgrade_workflow.py,sha256=S0y0_GYH4q7ewZUr_eA9Ly2c1FQueZzNCTiuIiWYUoY,3109
386
400
  firefighter/slack/views/modals/edit.py,sha256=60xav4XG4KGS9KknqsQNCQjl3qQzk7OtmHiEYTQ9pUk,3861
387
401
  firefighter/slack/views/modals/key_event_message.py,sha256=ga3-ITZyzJExwzctX-GfgnDqyQaxTfcqpqnOwY2E38M,5620
388
- firefighter/slack/views/modals/open.py,sha256=en8F0T36A1FbdEaLKEWAuV8Vr5D47x9S1KdtRa_0Kg8,25348
402
+ firefighter/slack/views/modals/open.py,sha256=VJUDVIEy0gcN7RrLOWfh621_1ElWbw1MNV6XosIcnV0,26383
389
403
  firefighter/slack/views/modals/postmortem.py,sha256=AeEtmiam_XgCRxDmltKluNT2VN1gcuCB2VbYeeATVcA,2525
390
404
  firefighter/slack/views/modals/select.py,sha256=Y-Ji_ALnzhYkXDBAyi497UL1Xn2vCGqXCtj8eog75Jk,3312
391
405
  firefighter/slack/views/modals/send_sos.py,sha256=bP6HgYyDwPrIcTq7n_sQz6UQsxhYbvBDS4HjM0uRccA,4838
@@ -393,63 +407,71 @@ firefighter/slack/views/modals/status.py,sha256=C8-eJRtquSeaHe568SC7yCFef1k14m2_
393
407
  firefighter/slack/views/modals/trigger_oncall.py,sha256=h_LAD5X5rjMFWiDYTEp5VB9OaF7sTvKZhNaW3KQkw5M,5065
394
408
  firefighter/slack/views/modals/update.py,sha256=OF9sf-Z6IiviNmjN28MQNYiUbJ5tha0MdHUQyPpVFiY,2150
395
409
  firefighter/slack/views/modals/update_roles.py,sha256=De3Gv67MZQHyNdonX3S99F5MtKF_Rj3y71gdWibxBaM,2419
396
- firefighter/slack/views/modals/update_status.py,sha256=ao9ZPCw9tgxdbyLGXsXRLL-LRB1_bxaoaa1ORoh0-nA,4472
410
+ firefighter/slack/views/modals/update_status.py,sha256=gxjl7axpIk1b7yQ8dbnuOQp1fNPJJ0N4tBHU6IT5UHI,4520
397
411
  firefighter/slack/views/modals/base_modal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
398
412
  firefighter/slack/views/modals/base_modal/base.py,sha256=7mvOxZTtegSmitSMnDvu8BK0qLUXoudUsda6CaLjdkY,12479
399
413
  firefighter/slack/views/modals/base_modal/base_mixins.py,sha256=Xl1koQsPpHO_kKIiuSSJHJnIBmytDXseI1KcAZQZC3M,230
400
- 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
401
415
  firefighter/slack/views/modals/base_modal/mixins.py,sha256=c7WYs0aXKXVktEMNSZ8IUQbAmustrLbRzbOoo4nyYGA,1917
402
416
  firefighter/slack/views/modals/base_modal/modal_utils.py,sha256=1uHTlLxxeXUQttH3bHaehJwCuI6a-h04s-GzdnVA4sI,2459
403
417
  firefighter/slack/views/modals/opening/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
404
- firefighter/slack/views/modals/opening/check_current_incidents.py,sha256=28GN0SXP7rVPa55arX1aI98k45w9568GCRDA73eCHEM,2535
405
- 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
406
420
  firefighter/slack/views/modals/opening/set_details.py,sha256=i6zQM2FYz3Z6s5AZH7lXgB2e8yjS0rDwgfMBZaiOqIw,5791
407
421
  firefighter/slack/views/modals/opening/types.py,sha256=ETpp0DAz5OMI5h7iv62Of7yJCbI-Q4-3kKSS6msPQeY,563
408
422
  firefighter/slack/views/modals/opening/details/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
409
- firefighter/slack/views/modals/opening/details/critical.py,sha256=-APRvkjopLwLPv3qPGTZfgS0d1bpb8NM0OXppRdUK94,2854
410
- firefighter_fixtures/incidents/components.json,sha256=qVVG201I4V-9f4Z3ZB0n9C4yZOJ8Qkz9v9MNAlqT8L8,21229
423
+ firefighter/slack/views/modals/opening/details/critical.py,sha256=OY3IwXCoauv1ov5-HiE94sLdIJy-5xwQxvNWpAOf8qQ,2862
411
424
  firefighter_fixtures/incidents/environments.json,sha256=5H_F08x7moMKz-H6OIUVaJGtmyKEESXLlG5cfXX0IA4,1039
412
425
  firefighter_fixtures/incidents/groups.json,sha256=mwrpUk9tvZa0RnT1T0aec_nnMsVZhR2GXS7pmrAK0y8,2555
413
426
  firefighter_fixtures/incidents/impact_level.json,sha256=AsrcSrkHN8E-XWlekb6Pgt8m2Sg0HASNld0TRFHwIFQ,6930
414
427
  firefighter_fixtures/incidents/impact_type.json,sha256=WqE2rmCIzoVkhUV7zw0-TGKKeJdex_yHRtxfBTwbgAM,1174
428
+ firefighter_fixtures/incidents/incident_categories.json,sha256=_O42ONXXhy9_J8Y3IyFOxkO9HXgpxamDJmna6dUZ01g,21593
415
429
  firefighter_fixtures/incidents/incident_role_type.json,sha256=74hkFOHynhAAfYIDDRBXF3AciW2F_nUpMX01DN3M3rs,1738
416
430
  firefighter_fixtures/incidents/metric_type.json,sha256=3OuNdzSYzFXDz460C-SYulNIKKxIHrToL9e2kp09tGA,2750
417
431
  firefighter_fixtures/incidents/milestone_type.json,sha256=oOtWOb5YM3JDc7yj0ErKPNFLN15qqyqL0m1f5fF7zuk,2317
418
432
  firefighter_fixtures/incidents/priorities.json,sha256=RZO7F7TBuyV9tZ9Vg_Nsr0NOfoFiaDohh3xv4E8VI8U,3765
419
433
  firefighter_fixtures/incidents/severities.json,sha256=hsaG3TT0oaRVvZVaeU6BJGddFn_gewJ4E7Lk7ufII6U,2467
420
- firefighter_fixtures/raid/area.json,sha256=x6hAGNNmSD8itWsRT_FPVBEGwtjLX3y91tkMwRiHzgc,278
421
434
  firefighter_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
422
- firefighter_tests/conftest.py,sha256=GtTm6uL_4jyneU47M6DRXWYnoHiAqgsFa4LTWlHO7cY,3241
423
- 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
424
437
  firefighter_tests/test_api/test_api_urls.py,sha256=Nn7Flq7dWGYJjgZK5HGdGECFMwKiDdfDYI0g09gXK-c,1936
425
438
  firefighter_tests/test_confluence/test_confluence_utils.py,sha256=hD5M4mYwrHlil9KPARNQ5OINdRc5njfYCIdq8a6jUB8,1847
426
439
  firefighter_tests/test_firefighter/test_firefighter_utils.py,sha256=og79bkErCBQB-xkw88J-ronT0dDEChuqlMke2ElxATo,3590
427
440
  firefighter_tests/test_firefighter/test_logging.py,sha256=4HUH73vLDwmOCpMiXwDasMLL7F0kA1B_DxE48mqswSk,878
441
+ firefighter_tests/test_firefighter/test_sso.py,sha256=uX2ry0REDgXzQc9Y1BmAgI0OgbmzWoOv9H_GDyOqQmQ,5205
428
442
  firefighter_tests/test_firefighter/test_urls.py,sha256=UMGx4oW98RoL0ceePkIIKEVjbHdFECvQuGNXYAJForQ,4839
429
- firefighter_tests/test_incidents/test_incident_urls.py,sha256=vQy9f1ewJK3N9cjVQDBnLaZjhtiBv5TzoRiGUdV3u5E,3769
443
+ firefighter_tests/test_incidents/test_incident_urls.py,sha256=j663qeBkv31aMlA0sLfzBOmp0iEv9OB-xvIwzrjlSZk,3793
430
444
  firefighter_tests/test_incidents/test_forms/test_form_select_impact.py,sha256=DTaPGrJi8mXHfh7mhvDTKYVvDCxqarILauE59UDlwqo,3210
431
- 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
432
446
  firefighter_tests/test_incidents/test_forms/test_update_key_events.py,sha256=rHRGRU9iFXDdMr_kK3pMB7gyeZuMf7Dyq8bRZkddBC4,1644
433
- 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
434
449
  firefighter_tests/test_incidents/test_models/test_migrations/test_incident_migrations.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
435
450
  firefighter_tests/test_incidents/test_utils/test_date_utils.py,sha256=ogP7qOEwItL4YGI5gbQPVssOS9ilwiuZC8OrT2qngBY,6568
436
451
  firefighter_tests/test_incidents/test_views/test_incident_detail_view.py,sha256=gKKFWIZVrD_P4p6DJjeHCW5uGXBUBVlCd95gJJYDpWQ,680
437
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
438
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
439
460
  firefighter_tests/test_raid/test_raid_transitions.py,sha256=mtmMKwukxmZSM-R619BQ3Z_2AB-qY6imvDgUF0A3_tw,4784
440
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
441
463
  firefighter_tests/test_slack/conftest.py,sha256=MCg04JFQ0iBeYUN_moEvvH4PVA3wE48Q6LkrIw7Bic0,2015
442
464
  firefighter_tests/test_slack/test_slack_utils.py,sha256=9PLobMNXh3xDyFuwzcQFpKJhe4j__sIgf_WRHIpANJw,3957
443
465
  firefighter_tests/test_slack/test_models/test_conversations.py,sha256=t3ttmgwiu7c-N55iU3XZPmrkEhvkTzJoXszJncy4Bts,793
444
466
  firefighter_tests/test_slack/test_models/test_incident_channel.py,sha256=qWoGe9iadmK6-R8usWvjH87AHRkvhG_dHQeC3kHeJrs,17487
445
467
  firefighter_tests/test_slack/test_models/test_slack_user.py,sha256=uzur-Rf03I5dpUTO4ZI6O1arBUrAorg1Zvgshf8M-J4,7000
446
- 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
447
469
  firefighter_tests/test_slack/views/modals/test_open.py,sha256=z3lvAPOXCUSt7i_9jWYcQWGIRwRg7Z1DT6AfMOK22_s,4900
448
470
  firefighter_tests/test_slack/views/modals/test_send_sos.py,sha256=_rE6jD-gOzcGyhlY0R9GzlGtPx65oOOguJYdENgxtLc,1289
449
471
  firefighter_tests/test_slack/views/modals/test_status.py,sha256=oQzPfwdg2tkbo9nfkO1GfS3WydxqSC6vy1AZjZDKT30,2226
450
- firefighter_tests/test_slack/views/modals/test_update_status.py,sha256=Y8Oa_fraj1vtaGig9Y28_6tOWvMrRPS-wyg3rY-DHBk,39380
451
- firefighter_incident-0.0.12.dist-info/METADATA,sha256=246jLZgtEuOVdQ5X7fKsv38jrGzyvFsyrILgQ4yjATg,5488
452
- firefighter_incident-0.0.12.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
453
- firefighter_incident-0.0.12.dist-info/entry_points.txt,sha256=c13meJbv7YNmYz7MipMOQwzQ5IeFOPXUBYAJ44XMQsM,61
454
- firefighter_incident-0.0.12.dist-info/licenses/LICENSE,sha256=krRiGp-a9-1nH1bWpBEdxyTKLhjLmn6DMVVoIb0zF90,1087
455
- firefighter_incident-0.0.12.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