diff options
| author | stuppie | 2026-04-21 21:25:17 -0600 |
|---|---|---|
| committer | stuppie | 2026-04-21 21:25:17 -0600 |
| commit | d0030acb98157b4b92c372a5ba26cb7c534e79a4 (patch) | |
| tree | 53a0d1db82db9ced564f5368622a34ea6a714473 | |
| parent | 588d4063de74d6f435cfab611328e802bce8df9a (diff) | |
| download | amt-jb-d0030acb98157b4b92c372a5ba26cb7c534e79a4.tar.gz amt-jb-d0030acb98157b4b92c372a5ba26cb7c534e79a4.zip | |
| -rw-r--r-- | jb/flow/assignment_tasks.py | 15 | ||||
| -rw-r--r-- | jb/managers/assignment.py | 3 | ||||
| -rw-r--r-- | scripts/__init__.py | 0 | ||||
| -rw-r--r-- | scripts/unreject.py | 26 |
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 + ) |
