aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstuppie2026-04-21 21:25:17 -0600
committerstuppie2026-04-21 21:25:17 -0600
commitd0030acb98157b4b92c372a5ba26cb7c534e79a4 (patch)
tree53a0d1db82db9ced564f5368622a34ea6a714473
parent588d4063de74d6f435cfab611328e802bce8df9a (diff)
downloadamt-jb-master.tar.gz
amt-jb-master.zip
add an unreject scriptHEADmaster
-rw-r--r--jb/flow/assignment_tasks.py15
-rw-r--r--jb/managers/assignment.py3
-rw-r--r--scripts/__init__.py0
-rw-r--r--scripts/unreject.py26
4 files changed, 37 insertions, 7 deletions
diff --git a/jb/flow/assignment_tasks.py b/jb/flow/assignment_tasks.py
index 6bda96b..326c87c 100644
--- a/jb/flow/assignment_tasks.py
+++ b/jb/flow/assignment_tasks.py
@@ -216,7 +216,6 @@ def handle_assignment_w_no_work(
assignment = approve_assignment(
amtm=amtm,
am=am,
- hm=hm,
amt_assignment_id=amt_assignment_id,
msg=NO_WORK_APPROVAL_MESSAGE,
amt_hit_type_id=hit.amt_hit_type_id,
@@ -274,23 +273,28 @@ def reject_assignment(
def approve_assignment(
amtm: AMTManager,
am: AssignmentManager,
- hm: HitManager,
amt_assignment_id: str,
msg: str,
amt_hit_type_id: str,
+ override_rejection: bool = False,
) -> Assignment:
# Approve in AMT, update db
res = amtm.approve_assignment_if_possible(
- amt_assignment_id=amt_assignment_id, msg=msg
+ amt_assignment_id=amt_assignment_id,
+ msg=msg,
+ override_rejection=override_rejection,
)
if res is None:
- # We failed to approve this assignment. Will this happen?
+ # We failed to approve this assignment. Cannot distinguish between
+ # failed b/c assignment is already approved, or it is not possible.
emit_error_event(
event_type="failed_to_approve_assignment",
amt_hit_type_id=amt_hit_type_id,
)
- raise Exception(f"Failed to approve assignment: {amt_assignment_id}")
+ # The assignment might already be approved, the error msg is useless, so
+ # keep going.
+ # raise Exception(f"Failed to approve assignment: {amt_assignment_id}")
# We just approved this assignment, get it from amazon again
assignment = amtm.get_assignment(amt_assignment_id=amt_assignment_id)
@@ -391,7 +395,6 @@ def handle_assignment_w_work(
assignment = approve_assignment(
amtm=amtm,
am=am,
- hm=hm,
amt_assignment_id=amt_assignment_id,
msg=APPROVAL_MESSAGE,
amt_hit_type_id=hit.amt_hit_type_id,
diff --git a/jb/managers/assignment.py b/jb/managers/assignment.py
index 6104bc5..f6aa2ce 100644
--- a/jb/managers/assignment.py
+++ b/jb/managers/assignment.py
@@ -179,7 +179,8 @@ class AssignmentManager(PostgresManager):
def approve(self, assignment: Assignment) -> None:
assert assignment.status == AssignmentStatus.Approved
- assert assignment.rejection_time is None
+ # # We can override a rejection and the rejection time is not None
+ # assert assignment.rejection_time is None
assert assignment.approval_time is not None
assert assignment.requester_feedback is not None
now = datetime.now(tz=timezone.utc)
diff --git a/scripts/__init__.py b/scripts/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/scripts/__init__.py
diff --git a/scripts/unreject.py b/scripts/unreject.py
new file mode 100644
index 0000000..298561f
--- /dev/null
+++ b/scripts/unreject.py
@@ -0,0 +1,26 @@
+from jb.decorators import AMTM, AM
+from jb.flow.assignment_tasks import approve_assignment
+from jb.managers.amt import APPROVAL_MESSAGE
+
+res = AM.pg_config.execute_sql_query(
+ """
+SELECT amt_assignment_id, submit_time, h.amt_hit_id, ht.amt_hit_type_id
+FROM mtwerk_assignment AS a
+LEFT JOIN mtwerk_hit AS h ON h.id = a.hit_id
+LEFT JOIN mtwerk_hittype AS ht ON h.hit_type_id = ht.id
+WHERE amt_worker_id='A1FMSKDAIK80PQ'
+and a.status = 2
+AND a.created_at>'2026-04-21 00:20:54.709322'
+ORDER BY a.created_at;
+"""
+)
+
+for x in res:
+ approve_assignment(
+ amtm=AMTM,
+ am=AM,
+ amt_assignment_id=x['amt_assignment_id'],
+ msg=APPROVAL_MESSAGE,
+ amt_hit_type_id=x['amt_hit_type_id'],
+ override_rejection=True
+ )