diff --git a/src/olympia/abuse/cinder.py b/src/olympia/abuse/cinder.py
index d1744e0cafd..d4ab6cb1c0a 100644
--- a/src/olympia/abuse/cinder.py
+++ b/src/olympia/abuse/cinder.py
@@ -130,7 +130,7 @@ def report_additional_context(self):
if response.status_code != 202:
raise ConnectionError(response.content)
- def appeal(self, *, decision_id, appeal_text, appealer):
+ def appeal(self, *, decision_cinder_id, appeal_text, appealer):
if self.type is None:
# type needs to be defined by subclasses
raise NotImplementedError
@@ -140,7 +140,7 @@ def appeal(self, *, decision_id, appeal_text, appealer):
'appealer_entity_type': appealer.type,
'appealer_entity': appealer.get_attributes(),
'reasoning': self.get_str(appeal_text),
- 'decision_to_appeal_id': decision_id,
+ 'decision_to_appeal_id': decision_cinder_id,
}
response = requests.post(url, json=data, headers=self.get_cinder_http_headers())
if response.status_code == 201:
diff --git a/src/olympia/abuse/migrations/0026_add_cinderjob_decision_cinder_id.py b/src/olympia/abuse/migrations/0026_add_cinderjob_decision_cinder_id.py
new file mode 100644
index 00000000000..48968c31090
--- /dev/null
+++ b/src/olympia/abuse/migrations/0026_add_cinderjob_decision_cinder_id.py
@@ -0,0 +1,24 @@
+# Generated by Django 4.2.10 on 2024-03-12 09:55
+
+from django.db import migrations, models
+
+
+def copy_decision_id_to_decision_cinder_id(apps, schema_editor):
+ CinderJob = apps.get_model('abuse', 'CinderJob')
+ CinderJob.objects.update(decision_cinder_id=models.F('decision_id'))
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('abuse', '0025_cinderjob_resolvable_in_reviewer_tools_and_more'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='cinderjob',
+ name='decision_cinder_id',
+ field=models.CharField(default=None, max_length=36, null=True, unique=True),
+ ),
+ migrations.RunPython(copy_decision_id_to_decision_cinder_id)
+ ]
diff --git a/src/olympia/abuse/models.py b/src/olympia/abuse/models.py
index 97305e644e0..2d4cc9bf407 100644
--- a/src/olympia/abuse/models.py
+++ b/src/olympia/abuse/models.py
@@ -69,7 +69,9 @@ class CinderJob(ModelBase):
decision_action = models.PositiveSmallIntegerField(
default=DECISION_ACTIONS.NO_DECISION, choices=DECISION_ACTIONS.choices
)
- decision_id = models.CharField(max_length=36, default=None, null=True, unique=True)
+ decision_cinder_id = models.CharField(
+ max_length=36, default=None, null=True, unique=True
+ )
decision_date = models.DateTimeField(default=None, null=True)
decision_notes = models.TextField(max_length=1000, blank=True)
policies = models.ManyToManyField(to='abuse.CinderPolicy')
@@ -125,7 +127,7 @@ def can_be_appealed(self, *, is_reporter, abuse_report=None):
"""
now = datetime.now()
base_criteria = (
- self.decision_id
+ self.decision_cinder_id
and self.decision_date
and self.decision_date >= now - timedelta(days=APPEAL_EXPIRATION_DAYS)
# Can never appeal an original decision that has been appealed and
@@ -167,7 +169,7 @@ def appealed_decision_already_made(self):
"""
Whether or not an appeal was already made for that job with a decision.
"""
- return getattr(self.appeal_job, 'decision_id', None)
+ return getattr(self.appeal_job, 'decision_cinder_id', None)
@classmethod
def get_entity_helper(cls, abuse_report, *, resolved_in_reviewer_tools=False):
@@ -268,7 +270,7 @@ def report(cls, abuse_report):
def process_decision(
self,
*,
- decision_id,
+ decision_cinder_id,
decision_date,
decision_action,
decision_notes,
@@ -279,7 +281,7 @@ def process_decision(
See resolve_job for reviewer tools originated decisions."""
existing_decision = (self.appealed_jobs.first() or self).decision_action
self.update(
- decision_id=decision_id,
+ decision_cinder_id=decision_cinder_id,
decision_date=decision_date,
decision_action=decision_action,
decision_notes=decision_notes[
@@ -343,7 +345,7 @@ def appeal(self, *, abuse_report, appeal_text, user, is_reporter):
resolved_in_reviewer_tools=self.resolvable_in_reviewer_tools,
)
appeal_id = entity_helper.appeal(
- decision_id=self.decision_id,
+ decision_cinder_id=self.decision_cinder_id,
appeal_text=appeal_text,
appealer=appealer_entity,
)
@@ -376,7 +378,7 @@ def resolve_job(self, *, log_entry):
.filter(reason__cinder_policy__isnull=False)
.values_list('reason__cinder_policy', flat=True)
).without_parents_if_their_children_are_present()
- decision_id = entity_helper.create_decision(
+ decision_cinder_id = entity_helper.create_decision(
reasoning=log_entry.details.get('comments', ''),
policy_uuids=[policy.uuid for policy in policies],
)
@@ -385,7 +387,7 @@ def resolve_job(self, *, log_entry):
self.update(
decision_action=decision_action,
decision_date=datetime.now(),
- decision_id=decision_id,
+ decision_cinder_id=decision_cinder_id,
)
self.policies.set(policies)
action_helper = self.get_action_helper(existing_decision)
diff --git a/src/olympia/abuse/tasks.py b/src/olympia/abuse/tasks.py
index 68ca4c2c419..1840b4329fd 100644
--- a/src/olympia/abuse/tasks.py
+++ b/src/olympia/abuse/tasks.py
@@ -78,10 +78,10 @@ def report_to_cinder(abuse_report_id):
@task
@use_primary_db
def appeal_to_cinder(
- *, decision_id, abuse_report_id, appeal_text, user_id, is_reporter
+ *, decision_cinder_id, abuse_report_id, appeal_text, user_id, is_reporter
):
try:
- cinder_job = CinderJob.objects.get(decision_id=decision_id)
+ cinder_job = CinderJob.objects.get(decision_cinder_id=decision_cinder_id)
if abuse_report_id:
abuse_report = AbuseReport.objects.get(id=abuse_report_id)
else:
diff --git a/src/olympia/abuse/templates/abuse/appeal.html b/src/olympia/abuse/templates/abuse/appeal.html
index d7889e833da..f25c94e7164 100644
--- a/src/olympia/abuse/templates/abuse/appeal.html
+++ b/src/olympia/abuse/templates/abuse/appeal.html
@@ -13,7 +13,7 @@
{{ _('Appeal reviewer decision') }}
- {{ _('Decision {0}')|format_html(decision_id) }}
+ {{ _('Decision {0}')|format_html(decision_cinder_id) }}
{% if appeal_processed %}
diff --git a/src/olympia/abuse/tests/test_cinder.py b/src/olympia/abuse/tests/test_cinder.py
index c3bc343d5c7..5c294ebd16c 100644
--- a/src/olympia/abuse/tests/test_cinder.py
+++ b/src/olympia/abuse/tests/test_cinder.py
@@ -136,7 +136,9 @@ def _test_appeal(self, appealer, cinder_instance=None):
)
assert (
cinder_instance.appeal(
- decision_id=fake_decision_id, appeal_text='reason', appealer=appealer
+ decision_cinder_id=fake_decision_id,
+ appeal_text='reason',
+ appealer=appealer,
)
== '67890-abc'
)
@@ -148,7 +150,9 @@ def _test_appeal(self, appealer, cinder_instance=None):
)
with self.assertRaises(ConnectionError):
cinder_instance.appeal(
- decision_id=fake_decision_id, appeal_text='reason', appealer=appealer
+ decision_cinder_id=fake_decision_id,
+ appeal_text='reason',
+ appealer=appealer,
)
def test_appeal_anonymous(self):
diff --git a/src/olympia/abuse/tests/test_models.py b/src/olympia/abuse/tests/test_models.py
index ee73ce15dba..35557590f3b 100644
--- a/src/olympia/abuse/tests/test_models.py
+++ b/src/olympia/abuse/tests/test_models.py
@@ -707,13 +707,13 @@ def test_process_decision(self):
) as notify_mock:
action_mock.return_value = True
cinder_job.process_decision(
- decision_id='12345',
+ decision_cinder_id='12345',
decision_date=new_date,
decision_action=DECISION_ACTIONS.AMO_BAN_USER.value,
decision_notes='teh notes',
policy_ids=['123-45', '678-90'],
)
- assert cinder_job.decision_id == '12345'
+ assert cinder_job.decision_cinder_id == '12345'
assert cinder_job.decision_date == new_date
assert cinder_job.decision_action == DECISION_ACTIONS.AMO_BAN_USER
assert cinder_job.decision_notes == 'teh notes'
@@ -738,13 +738,13 @@ def test_process_decision_with_duplicate_parent(self):
) as notify_mock:
action_mock.return_value = True
cinder_job.process_decision(
- decision_id='12345',
+ decision_cinder_id='12345',
decision_date=new_date,
decision_action=DECISION_ACTIONS.AMO_BAN_USER.value,
decision_notes='teh notes',
policy_ids=['123-45', '678-90'],
)
- assert cinder_job.decision_id == '12345'
+ assert cinder_job.decision_cinder_id == '12345'
assert cinder_job.decision_date == new_date
assert cinder_job.decision_action == DECISION_ACTIONS.AMO_BAN_USER
assert cinder_job.decision_notes == 'teh notes'
@@ -758,13 +758,13 @@ def test_process_decision_escalate_addon(self):
assert not cinder_job.resolvable_in_reviewer_tools
new_date = datetime(2024, 1, 1)
cinder_job.process_decision(
- decision_id='12345',
+ decision_cinder_id='12345',
decision_date=new_date,
decision_action=DECISION_ACTIONS.AMO_ESCALATE_ADDON,
decision_notes='blah',
policy_ids=[],
)
- assert cinder_job.decision_id == '12345'
+ assert cinder_job.decision_cinder_id == '12345'
assert cinder_job.decision_date == new_date
assert cinder_job.decision_action == DECISION_ACTIONS.AMO_ESCALATE_ADDON
assert cinder_job.decision_notes == 'blah'
@@ -780,7 +780,7 @@ def _test_appeal_as_target(self, *, resolvable_in_reviewer_tools):
reason=AbuseReport.REASONS.ILLEGAL,
reporter=user_factory(),
cinder_job=CinderJob.objects.create(
- decision_id='4815162342-lost',
+ decision_cinder_id='4815162342-lost',
decision_date=self.days_ago(179),
decision_action=DECISION_ACTIONS.AMO_DISABLE_ADDON,
target_addon=addon,
@@ -828,7 +828,7 @@ def test_appeal_as_target_improperly_configured(self):
reason=AbuseReport.REASONS.ILLEGAL,
reporter=user_factory(),
cinder_job=CinderJob.objects.create(
- decision_id='4815162342-lost',
+ decision_cinder_id='4815162342-lost',
decision_date=self.days_ago(179),
decision_action=DECISION_ACTIONS.AMO_DISABLE_ADDON,
target_addon=addon,
@@ -865,7 +865,7 @@ def test_appeal_as_target_ban_improperly_configured(self):
reason=AbuseReport.REASONS.ILLEGAL,
reporter=user_factory(),
cinder_job=CinderJob.objects.create(
- decision_id='4815162342-lost',
+ decision_cinder_id='4815162342-lost',
decision_date=self.days_ago(179),
# This (target is an add-on, decision is a user ban) shouldn't
# be possible but we want to make sure this is handled
@@ -908,7 +908,7 @@ def test_appeal_as_target_banned(self):
reason=AbuseReport.REASONS.ILLEGAL,
reporter=user_factory(),
cinder_job=CinderJob.objects.create(
- decision_id='4815162342-lost',
+ decision_cinder_id='4815162342-lost',
decision_date=self.days_ago(179),
decision_action=DECISION_ACTIONS.AMO_BAN_USER,
),
@@ -947,7 +947,7 @@ def test_appeal_as_reporter(self):
)
abuse_report.update(
cinder_job=CinderJob.objects.create(
- decision_id='4815162342-lost',
+ decision_cinder_id='4815162342-lost',
decision_date=self.days_ago(179),
decision_action=DECISION_ACTIONS.AMO_APPROVE,
target_addon=addon,
@@ -985,7 +985,7 @@ def test_appeal_as_reporter_already_appealed(self):
)
abuse_report.update(
cinder_job=CinderJob.objects.create(
- decision_id='4815162342-lost',
+ decision_cinder_id='4815162342-lost',
decision_date=self.days_ago(179),
decision_action=DECISION_ACTIONS.AMO_APPROVE,
target_addon=addon,
@@ -1028,7 +1028,7 @@ def test_appeal_as_reporter_already_appealed(self):
def test_appeal_improperly_configured_reporter(self):
cinder_job = CinderJob.objects.create(
- decision_id='4815162342-lost',
+ decision_cinder_id='4815162342-lost',
decision_date=self.days_ago(179),
decision_action=DECISION_ACTIONS.AMO_APPROVE,
)
@@ -1047,7 +1047,7 @@ def test_appeal_improperly_configured_author(self):
reporter=user_factory(),
)
cinder_job = CinderJob.objects.create(
- decision_id='4815162342-lost',
+ decision_cinder_id='4815162342-lost',
decision_date=self.days_ago(179),
decision_action=DECISION_ACTIONS.AMO_APPROVE,
)
@@ -1262,7 +1262,7 @@ def setUp(self):
def test_appealed_decision_already_made(self):
self.initial_job.update(
decision_date=datetime.now(),
- decision_id='fake_decision_id',
+ decision_cinder_id='fake_decision_cinder_id',
decision_action=DECISION_ACTIONS.AMO_APPROVE,
)
assert not self.initial_job.appealed_decision_already_made()
@@ -1273,13 +1273,13 @@ def test_appealed_decision_already_made(self):
self.initial_job.update(appeal_job=appeal_job)
assert not self.initial_job.appealed_decision_already_made()
- appeal_job.update(decision_id='appeal decision id')
+ appeal_job.update(decision_cinder_id='appeal decision id')
assert self.initial_job.appealed_decision_already_made()
def test_reporter_can_appeal_approve_decision(self):
self.initial_job.update(
decision_date=datetime.now(),
- decision_id='fake_decision_id',
+ decision_cinder_id='fake_decision_cinder_id',
decision_action=DECISION_ACTIONS.AMO_APPROVE,
)
assert self.initial_job.can_be_appealed(
@@ -1289,7 +1289,7 @@ def test_reporter_can_appeal_approve_decision(self):
def test_reporter_cant_appeal_approve_decision_if_abuse_report_is_not_passed(self):
self.initial_job.update(
decision_date=datetime.now(),
- decision_id='fake_decision_id',
+ decision_cinder_id='fake_decision_cinder_id',
decision_action=DECISION_ACTIONS.AMO_APPROVE,
)
assert not self.initial_job.can_be_appealed(is_reporter=True)
@@ -1305,7 +1305,7 @@ def test_reporter_cant_appeal_non_approve_decision(self):
):
self.initial_job.update(
decision_date=datetime.now(),
- decision_id='fake_decision_id',
+ decision_cinder_id='fake_decision_cinder_id',
decision_action=decision_action,
)
assert not self.initial_job.can_be_appealed(
@@ -1315,7 +1315,7 @@ def test_reporter_cant_appeal_non_approve_decision(self):
def test_reporter_cant_appeal_approve_decision_already_appealed(self):
self.initial_job.update(
decision_date=datetime.now(),
- decision_id='fake_decision_id',
+ decision_cinder_id='fake_decision_cinder_id',
decision_action=DECISION_ACTIONS.AMO_APPROVE,
)
appeal_job = CinderJob.objects.create(
@@ -1332,7 +1332,7 @@ def test_reporter_cant_appeal_approve_decision_already_appealed(self):
def test_reporter_can_appeal_approve_decision_already_appealed_someone_else(self):
self.initial_job.update(
decision_date=datetime.now(),
- decision_id='fake_decision_id',
+ decision_cinder_id='fake_decision_cinder_id',
decision_action=DECISION_ACTIONS.AMO_APPROVE,
)
appeal_job = CinderJob.objects.create(
@@ -1354,13 +1354,13 @@ def test_reporter_can_appeal_approve_decision_already_appealed_someone_else(self
def test_reporter_cant_appeal_approve_decision_already_appealed_and_decided(self):
self.initial_job.update(
decision_date=datetime.now(),
- decision_id='fake_decision_id',
+ decision_cinder_id='fake_decision_cinder_id',
decision_action=DECISION_ACTIONS.AMO_APPROVE,
)
appeal_job = CinderJob.objects.create(
job_id='fake_appeal_job_id',
decision_date=datetime.now(),
- decision_id='fake_appeal_decision_id',
+ decision_cinder_id='fake_appeal_decision_cinder_id',
decision_action=DECISION_ACTIONS.AMO_APPROVE,
)
self.initial_job.update(appeal_job=appeal_job)
@@ -1379,13 +1379,13 @@ def test_reporter_cant_appeal_approve_decision_already_appealed_and_decided(self
def test_reporter_cant_appeal_appealed_decision(self):
self.initial_job.update(
decision_date=datetime.now(),
- decision_id='fake_decision_id',
+ decision_cinder_id='fake_decision_cinder_id',
decision_action=DECISION_ACTIONS.AMO_APPROVE,
)
appeal_job = CinderJob.objects.create(
job_id='fake_appeal_job_id',
decision_date=datetime.now(),
- decision_id='fake_appeal_decision_id',
+ decision_cinder_id='fake_appeal_decision_cinder_id',
decision_action=DECISION_ACTIONS.AMO_APPROVE,
)
self.initial_job.update(appeal_job=appeal_job)
@@ -1407,7 +1407,7 @@ def test_reporter_cant_appeal_appealed_decision(self):
def test_reporter_cant_appeal_past_expiration_delay(self):
self.initial_job.update(
decision_date=self.days_ago(APPEAL_EXPIRATION_DAYS + 1),
- decision_id='fake_decision_id',
+ decision_cinder_id='fake_decision_cinder_id',
decision_action=DECISION_ACTIONS.AMO_APPROVE,
)
assert not self.initial_job.can_be_appealed(
@@ -1417,7 +1417,7 @@ def test_reporter_cant_appeal_past_expiration_delay(self):
def test_author_can_appeal_disable_decision(self):
self.initial_job.update(
decision_date=datetime.now(),
- decision_id='fake_decision_id',
+ decision_cinder_id='fake_decision_cinder_id',
decision_action=DECISION_ACTIONS.AMO_DISABLE_ADDON,
)
assert self.initial_job.can_be_appealed(is_reporter=False)
@@ -1430,7 +1430,7 @@ def test_author_can_appeal_delete_decision_rating(self):
self.initial_report.update(guid=None, rating=rating)
self.initial_job.update(
decision_date=datetime.now(),
- decision_id='fake_decision_id',
+ decision_cinder_id='fake_decision_cinder_id',
decision_action=DECISION_ACTIONS.AMO_DELETE_RATING,
)
self.initial_job.can_be_appealed(is_reporter=False)
@@ -1441,7 +1441,7 @@ def test_author_can_appeal_delete_decision_collection(self):
self.initial_report.update(guid=None, collection=collection)
self.initial_job.update(
decision_date=datetime.now(),
- decision_id='fake_decision_id',
+ decision_cinder_id='fake_decision_cinder_id',
decision_action=DECISION_ACTIONS.AMO_DELETE_COLLECTION,
)
self.initial_job.can_be_appealed(is_reporter=False)
@@ -1451,7 +1451,7 @@ def test_author_can_appeal_ban_user(self):
self.initial_report.update(guid=None, user=user)
self.initial_job.update(
decision_date=datetime.now(),
- decision_id='fake_decision_id',
+ decision_cinder_id='fake_decision_cinder_id',
decision_action=DECISION_ACTIONS.AMO_BAN_USER,
)
self.initial_job.can_be_appealed(is_reporter=False)
@@ -1464,7 +1464,7 @@ def test_author_cant_appeal_approve_or_escalation_decision(self):
):
self.initial_job.update(
decision_date=datetime.now(),
- decision_id='fake_decision_id',
+ decision_cinder_id='fake_decision_cinder_id',
decision_action=decision_action,
)
assert not self.initial_job.can_be_appealed(is_reporter=False)
@@ -1472,7 +1472,7 @@ def test_author_cant_appeal_approve_or_escalation_decision(self):
def test_author_cant_appeal_disable_decision_already_appealed(self):
self.initial_job.update(
decision_date=datetime.now(),
- decision_id='fake_decision_id',
+ decision_cinder_id='fake_decision_cinder_id',
decision_action=DECISION_ACTIONS.AMO_DISABLE_ADDON,
)
appeal_job = CinderJob.objects.create(
@@ -1484,13 +1484,13 @@ def test_author_cant_appeal_disable_decision_already_appealed(self):
def test_author_can_appeal_appealed_decision(self):
self.initial_job.update(
decision_date=datetime.now(),
- decision_id='fake_decision_id',
+ decision_cinder_id='fake_decision_cinder_id',
decision_action=DECISION_ACTIONS.AMO_APPROVE,
)
appeal_job = CinderJob.objects.create(
job_id='fake_appeal_job_id',
decision_date=datetime.now(),
- decision_id='fake_appeal_decision_id',
+ decision_cinder_id='fake_appeal_decision_cinder_id',
decision_action=DECISION_ACTIONS.AMO_DISABLE_ADDON,
)
self.initial_job.update(appeal_job=appeal_job)
diff --git a/src/olympia/abuse/tests/test_tasks.py b/src/olympia/abuse/tests/test_tasks.py
index c46f56bcc79..743ee7f9049 100644
--- a/src/olympia/abuse/tests/test_tasks.py
+++ b/src/olympia/abuse/tests/test_tasks.py
@@ -387,7 +387,7 @@ def test_addon_report_to_cinder_different_locale():
def test_addon_appeal_to_cinder_reporter(statsd_incr_mock):
addon = addon_factory()
cinder_job = CinderJob.objects.create(
- decision_id='4815162342-abc',
+ decision_cinder_id='4815162342-abc',
decision_date=datetime.now(),
decision_action=DECISION_ACTIONS.AMO_APPROVE,
)
@@ -407,7 +407,7 @@ def test_addon_appeal_to_cinder_reporter(statsd_incr_mock):
statsd_incr_mock.reset_mock()
appeal_to_cinder.delay(
- decision_id=cinder_job.decision_id,
+ decision_cinder_id=cinder_job.decision_cinder_id,
abuse_report_id=abuse_report.id,
appeal_text='I appeal',
user_id=None,
@@ -445,7 +445,7 @@ def test_addon_appeal_to_cinder_reporter(statsd_incr_mock):
def test_addon_appeal_to_cinder_reporter_exception(statsd_incr_mock):
addon = addon_factory()
cinder_job = CinderJob.objects.create(
- decision_id='4815162342-abc',
+ decision_cinder_id='4815162342-abc',
decision_date=datetime.now(),
decision_action=DECISION_ACTIONS.AMO_APPROVE,
)
@@ -466,7 +466,7 @@ def test_addon_appeal_to_cinder_reporter_exception(statsd_incr_mock):
with pytest.raises(ConnectionError):
appeal_to_cinder.delay(
- decision_id=cinder_job.decision_id,
+ decision_cinder_id=cinder_job.decision_cinder_id,
abuse_report_id=abuse_report.id,
appeal_text='I appeal',
user_id=None,
@@ -482,7 +482,7 @@ def test_addon_appeal_to_cinder_authenticated_reporter():
user = user_factory(fxa_id='fake-fxa-id')
addon = addon_factory()
cinder_job = CinderJob.objects.create(
- decision_id='4815162342-abc',
+ decision_cinder_id='4815162342-abc',
decision_date=datetime.now(),
decision_action=DECISION_ACTIONS.AMO_APPROVE,
)
@@ -500,7 +500,7 @@ def test_addon_appeal_to_cinder_authenticated_reporter():
)
appeal_to_cinder.delay(
- decision_id=cinder_job.decision_id,
+ decision_cinder_id=cinder_job.decision_cinder_id,
abuse_report_id=abuse_report.pk,
appeal_text='I appeal',
user_id=user.pk,
@@ -537,7 +537,7 @@ def test_addon_appeal_to_cinder_authenticated_author():
user = user_factory(fxa_id='fake-fxa-id')
addon = addon_factory(users=[user])
cinder_job = CinderJob.objects.create(
- decision_id='4815162342-abc',
+ decision_cinder_id='4815162342-abc',
decision_date=datetime.now(),
decision_action=DECISION_ACTIONS.AMO_DISABLE_ADDON,
)
@@ -554,7 +554,7 @@ def test_addon_appeal_to_cinder_authenticated_author():
)
appeal_to_cinder.delay(
- decision_id=cinder_job.decision_id,
+ decision_cinder_id=cinder_job.decision_cinder_id,
abuse_report_id=None,
appeal_text='I appeal',
user_id=user.pk,
diff --git a/src/olympia/abuse/tests/test_utils.py b/src/olympia/abuse/tests/test_utils.py
index cb8a3baba6b..f2d7c95eeb0 100644
--- a/src/olympia/abuse/tests/test_utils.py
+++ b/src/olympia/abuse/tests/test_utils.py
@@ -39,7 +39,7 @@ class BaseTestCinderAction:
def setUp(self):
self.cinder_job = CinderJob.objects.create(
job_id='1234',
- decision_id='ab89',
+ decision_cinder_id='ab89',
decision_date=datetime.now(),
decision_notes='extra notes',
)
@@ -111,7 +111,7 @@ def _test_reporter_ignore_email(self, subject):
'abuse.appeal_reporter',
kwargs={
'abuse_report_id': self.abuse_report_no_auth.id,
- 'decision_id': self.cinder_job.decision_id,
+ 'decision_cinder_id': self.cinder_job.decision_cinder_id,
},
)
in mail.outbox[0].body
@@ -121,7 +121,7 @@ def _test_reporter_ignore_email(self, subject):
'abuse.appeal_reporter',
kwargs={
'abuse_report_id': self.abuse_report_auth.id,
- 'decision_id': self.cinder_job.decision_id,
+ 'decision_cinder_id': self.cinder_job.decision_cinder_id,
},
)
in mail.outbox[1].body
@@ -174,7 +174,7 @@ def _test_owner_takedown_email(self, subject, snippet):
reverse(
'abuse.appeal_author',
kwargs={
- 'decision_id': self.cinder_job.decision_id,
+ 'decision_cinder_id': self.cinder_job.decision_cinder_id,
},
)
in mail_item.body
@@ -545,7 +545,7 @@ def test_notify_owners_with_manual_policy_block(self):
reverse(
'abuse.appeal_author',
kwargs={
- 'decision_id': self.cinder_job.decision_id,
+ 'decision_cinder_id': self.cinder_job.decision_cinder_id,
},
)
in mail_item.body
@@ -578,7 +578,7 @@ def _test_reject_version(self):
reverse(
'abuse.appeal_author',
kwargs={
- 'decision_id': self.cinder_job.decision_id,
+ 'decision_cinder_id': self.cinder_job.decision_cinder_id,
},
)
in mail_item.body
diff --git a/src/olympia/abuse/tests/test_views.py b/src/olympia/abuse/tests/test_views.py
index 87039603943..4f9972e41ae 100644
--- a/src/olympia/abuse/tests/test_views.py
+++ b/src/olympia/abuse/tests/test_views.py
@@ -925,7 +925,7 @@ def _test_process_decision_called(self, data, *, override):
response = cinder_webhook(req)
process_mock.assert_called()
process_mock.assert_called_with(
- decision_id='d1f01fae-3bce-41d5-af8a-e0b4b5ceaaed',
+ decision_cinder_id='d1f01fae-3bce-41d5-af8a-e0b4b5ceaaed',
decision_date=datetime(2023, 10, 12, 9, 8, 37, 4789),
decision_action=DECISION_ACTIONS.AMO_DISABLE_ADDON.value,
decision_notes='some notes',
@@ -950,7 +950,7 @@ def test_process_decision_called_for_appeal_confirm_approve(self):
addon_factory(guid=abuse_report.guid)
original_cinder_job = CinderJob.objects.get()
original_cinder_job.update(
- decision_id='d1f01fae-3bce-41d5-af8a-e0b4b5ceaaed',
+ decision_cinder_id='d1f01fae-3bce-41d5-af8a-e0b4b5ceaaed',
decision_date=datetime(2023, 10, 12, 9, 8, 37, 4789),
decision_action=DECISION_ACTIONS.AMO_APPROVE.value,
appeal_job=CinderJob.objects.create(
@@ -962,7 +962,7 @@ def test_process_decision_called_for_appeal_confirm_approve(self):
response = cinder_webhook(req)
assert process_mock.call_count == 1
process_mock.assert_called_with(
- decision_id='76e0006d-1a42-4ec7-9475-148bab1970f1',
+ decision_cinder_id='76e0006d-1a42-4ec7-9475-148bab1970f1',
decision_date=datetime(2024, 1, 12, 15, 20, 19, 226428),
decision_action=DECISION_ACTIONS.AMO_APPROVE.value,
decision_notes='still no!',
@@ -978,7 +978,7 @@ def test_process_decision_called_for_appeal_disable(self):
addon_factory(guid=abuse_report.guid)
original_cinder_job = CinderJob.objects.get()
original_cinder_job.update(
- decision_id='d1f01fae-3bce-41d5-af8a-e0b4b5ceaaed',
+ decision_cinder_id='d1f01fae-3bce-41d5-af8a-e0b4b5ceaaed',
decision_date=datetime(2023, 10, 12, 9, 8, 37, 4789),
decision_action=DECISION_ACTIONS.AMO_APPROVE.value,
appeal_job=CinderJob.objects.create(
@@ -990,7 +990,7 @@ def test_process_decision_called_for_appeal_disable(self):
response = cinder_webhook(req)
assert process_mock.call_count == 1
process_mock.assert_called_with(
- decision_id='4f18b22c-6078-4934-b395-6a2e01cadf63',
+ decision_cinder_id='4f18b22c-6078-4934-b395-6a2e01cadf63',
decision_date=datetime(2024, 1, 12, 14, 53, 23, 438634),
decision_action=DECISION_ACTIONS.AMO_DISABLE_ADDON.value,
decision_notes="fine I'll disable it",
@@ -1621,7 +1621,7 @@ class TestAppeal(TestCase):
def setUp(self):
self.addon = addon_factory()
self.cinder_job = CinderJob.objects.create(
- decision_id='my-decision-id',
+ decision_cinder_id='my-decision-id',
decision_action=DECISION_ACTIONS.AMO_APPROVE,
decision_date=self.days_ago(1),
created=self.days_ago(2),
@@ -1636,13 +1636,13 @@ def setUp(self):
'abuse.appeal_reporter',
kwargs={
'abuse_report_id': self.abuse_report.id,
- 'decision_id': self.cinder_job.decision_id,
+ 'decision_cinder_id': self.cinder_job.decision_cinder_id,
},
)
self.author_appeal_url = reverse(
'abuse.appeal_author',
kwargs={
- 'decision_id': self.cinder_job.decision_id,
+ 'decision_cinder_id': self.cinder_job.decision_cinder_id,
},
)
patcher = mock.patch('olympia.abuse.views.appeal_to_cinder')
@@ -1659,7 +1659,7 @@ def test_no_such_decision(self):
'abuse.appeal_reporter',
kwargs={
'abuse_report_id': self.abuse_report.id,
- 'decision_id': '1234-5678-9000',
+ 'decision_cinder_id': '1234-5678-9000',
},
)
assert self.client.get(url).status_code == 404
@@ -1667,7 +1667,7 @@ def test_no_such_decision(self):
url = reverse(
'abuse.appeal_author',
kwargs={
- 'decision_id': '1234-5678-9000',
+ 'decision_cinder_id': '1234-5678-9000',
},
)
assert self.client.get(url).status_code == 404
@@ -1677,7 +1677,7 @@ def test_no_such_abuse_report(self):
'abuse.appeal_reporter',
kwargs={
'abuse_report_id': self.abuse_report.id + 1,
- 'decision_id': self.cinder_job.decision_id,
+ 'decision_cinder_id': self.cinder_job.decision_cinder_id,
},
)
assert self.client.get(url).status_code == 404
@@ -1741,7 +1741,7 @@ def test_appeal_approval_anonymous_report_with_email_post(self):
assert self.appeal_mock.delay.call_args_list[0][0] == ()
assert self.appeal_mock.delay.call_args_list[0][1] == {
'appeal_text': 'I dont like this',
- 'decision_id': self.cinder_job.decision_id,
+ 'decision_cinder_id': self.cinder_job.decision_cinder_id,
'abuse_report_id': self.abuse_report.id,
'user_id': None,
'is_reporter': True,
@@ -1855,7 +1855,7 @@ def test_appeal_rejection_author(self):
assert self.appeal_mock.delay.call_args_list[0][0] == ()
assert self.appeal_mock.delay.call_args_list[0][1] == {
'appeal_text': 'I dont like this',
- 'decision_id': self.cinder_job.decision_id,
+ 'decision_cinder_id': self.cinder_job.decision_cinder_id,
'abuse_report_id': None,
'user_id': user.pk,
'is_reporter': False,
@@ -1889,7 +1889,7 @@ def test_appeal_banned_user(self):
assert self.appeal_mock.delay.call_args_list[0][0] == ()
assert self.appeal_mock.delay.call_args_list[0][1] == {
'appeal_text': 'I am not a bad guy',
- 'decision_id': self.cinder_job.decision_id,
+ 'decision_cinder_id': self.cinder_job.decision_cinder_id,
'abuse_report_id': None,
'user_id': None,
'is_reporter': False,
@@ -1952,7 +1952,7 @@ def test_reporter_cant_appeal_appealed_decision_already_made_for_other_affirm(se
# specific error message (in this case we confirmed the original
# decision).
appeal_job.update(
- decision_id='appeal decision id',
+ decision_cinder_id='appeal decision id',
decision_action=DECISION_ACTIONS.AMO_APPROVE,
decision_date=datetime.now(),
)
@@ -1999,7 +1999,7 @@ def test_reporter_cant_appeal_appealed_decision_already_made_for_other_turned(se
# the content is already supposed to be disabled but the reporter might
# not have noticed).
appeal_job.update(
- decision_id='appeal decision id',
+ decision_cinder_id='appeal decision id',
decision_action=DECISION_ACTIONS.AMO_DISABLE_ADDON,
decision_date=datetime.now(),
)
diff --git a/src/olympia/abuse/urls.py b/src/olympia/abuse/urls.py
index 8e279e5bedb..d35107fdea5 100644
--- a/src/olympia/abuse/urls.py
+++ b/src/olympia/abuse/urls.py
@@ -5,13 +5,13 @@
urlpatterns = [
path(
- 'appeal//',
+ 'appeal//',
appeal,
kwargs={'abuse_report_id': None},
name='abuse.appeal_author',
),
path(
- 'appeal///',
+ 'appeal///',
appeal,
name='abuse.appeal_reporter',
),
diff --git a/src/olympia/abuse/utils.py b/src/olympia/abuse/utils.py
index 691b8952c4f..2227d1d4079 100644
--- a/src/olympia/abuse/utils.py
+++ b/src/olympia/abuse/utils.py
@@ -84,7 +84,7 @@ def notify_owners(self, *, policy_text=None):
with no_jinja_autoescape():
template = loader.get_template(self.owner_template_path)
target_name = self.get_target_name()
- reference_id = f'ref:{self.cinder_job.decision_id}'
+ reference_id = f'ref:{self.cinder_job.decision_cinder_id}'
context_dict = {
'additional_reasoning': self.cinder_job.decision_notes or '',
'is_third_party_initiated': self.is_third_party_initiated,
@@ -111,7 +111,7 @@ def notify_owners(self, *, policy_text=None):
reverse(
'abuse.appeal_author',
kwargs={
- 'decision_id': self.cinder_job.decision_id,
+ 'decision_cinder_id': self.cinder_job.decision_cinder_id,
},
)
)
@@ -153,7 +153,9 @@ def notify_reporters(self):
abuse_report.application_locale or settings.LANGUAGE_CODE
):
target_name = self.get_target_name()
- reference_id = f'ref:{self.cinder_job.decision_id}/{abuse_report.id}'
+ reference_id = (
+ f'ref:{self.cinder_job.decision_cinder_id}/{abuse_report.id}'
+ )
subject = _('Mozilla Add-ons: {} [{}]').format(
target_name, reference_id
)
@@ -177,7 +179,9 @@ def notify_reporters(self):
'abuse.appeal_reporter',
kwargs={
'abuse_report_id': abuse_report.id,
- 'decision_id': self.cinder_job.decision_id,
+ 'decision_cinder_id': (
+ self.cinder_job.decision_cinder_id
+ ),
},
)
)
diff --git a/src/olympia/abuse/views.py b/src/olympia/abuse/views.py
index 81d36ae3dd0..b1ba9b26301 100644
--- a/src/olympia/abuse/views.py
+++ b/src/olympia/abuse/views.py
@@ -261,7 +261,7 @@ def cinder_webhook(request):
raise ValidationError(f'Payload invalid: {reason}')
cinder_job.process_decision(
- decision_id=source.get('decision', {}).get('id'),
+ decision_cinder_id=source.get('decision', {}).get('id'),
decision_date=process_datestamp(payload.get('timestamp')),
decision_action=enforcement_actions[0],
decision_notes=payload.get('notes') or '',
@@ -288,13 +288,13 @@ def cinder_webhook(request):
)
-def appeal(request, *, abuse_report_id, decision_id, **kwargs):
+def appeal(request, *, abuse_report_id, decision_cinder_id, **kwargs):
appealable_decisions = tuple(DECISION_ACTIONS.APPEALABLE_BY_AUTHOR.values) + tuple(
DECISION_ACTIONS.APPEALABLE_BY_REPORTER.values
)
cinder_job = get_object_or_404(
CinderJob.objects.filter(decision_action__in=appealable_decisions),
- decision_id=decision_id,
+ decision_cinder_id=decision_cinder_id,
)
if abuse_report_id:
@@ -312,7 +312,7 @@ def appeal(request, *, abuse_report_id, decision_id, **kwargs):
target = cinder_job.target
context_data = {
- 'decision_id': decision_id,
+ 'decision_cinder_id': decision_cinder_id,
}
post_data = request.POST if request.method == 'POST' else None
valid_user_or_email_provided = False
@@ -389,7 +389,7 @@ def appeal(request, *, abuse_report_id, decision_id, **kwargs):
appeal_form = AbuseAppealForm(post_data, request=request)
if appeal_form.is_bound and appeal_form.is_valid():
appeal_to_cinder.delay(
- decision_id=cinder_job.decision_id,
+ decision_cinder_id=cinder_job.decision_cinder_id,
abuse_report_id=abuse_report.id if abuse_report else None,
appeal_text=appeal_form.cleaned_data['reason'],
user_id=request.user.pk,