|
27 | 27 | from juriscraper.lib.string_utils import CaseNameTweaker, harmonize
|
28 | 28 | from juriscraper.pacer import (
|
29 | 29 | ACMSAttachmentPage,
|
| 30 | + AcmsCaseSearch, |
30 | 31 | ACMSDocketReport,
|
31 | 32 | AppellateDocketReport,
|
32 | 33 | CaseQuery,
|
|
65 | 66 | is_bankruptcy_court,
|
66 | 67 | is_long_appellate_document_number,
|
67 | 68 | mark_ia_upload_needed,
|
| 69 | + should_check_acms_court, |
68 | 70 | )
|
69 | 71 | from cl.custom_filters.templatetags.text_filters import oxford_join
|
70 | 72 | from cl.lib.filesizes import convert_size_to_bytes
|
|
110 | 112 | find_subdocket_pdf_rds_from_data,
|
111 | 113 | get_court_id_from_fetch_queue,
|
112 | 114 | get_main_rds,
|
| 115 | + sort_acms_docket_entries, |
113 | 116 | )
|
114 | 117 | from cl.scrapers.tasks import (
|
115 | 118 | extract_recap_pdf,
|
@@ -1493,17 +1496,7 @@ async def process_recap_acms_docket(pk):
|
1493 | 1496 | await sync_to_async(add_parties_and_attorneys)(d, data["parties"])
|
1494 | 1497 |
|
1495 | 1498 | # Sort docket entries to ensure consistent ordering
|
1496 |
| - # The primary sort is by 'date_filed', followed by 'document_number' (nulls |
1497 |
| - # last for a given date). This approach aligns the order with how docket |
1498 |
| - # reports are typically displayed. |
1499 |
| - data["docket_entries"] = sorted( |
1500 |
| - data["docket_entries"], |
1501 |
| - key=lambda d: ( |
1502 |
| - d["date_filed"], |
1503 |
| - d["document_number"] is None, |
1504 |
| - d["document_number"], |
1505 |
| - ), |
1506 |
| - ) |
| 1499 | + data["docket_entries"] = sort_acms_docket_entries(data["docket_entries"]) |
1507 | 1500 | des_returned, rds_created, content_updated = await add_docket_entries(
|
1508 | 1501 | d, data["docket_entries"]
|
1509 | 1502 | )
|
@@ -2348,7 +2341,7 @@ def create_or_update_docket_data_from_fetch(
|
2348 | 2341 | fq: PacerFetchQueue,
|
2349 | 2342 | court_id: str,
|
2350 | 2343 | pacer_case_id: str | None,
|
2351 |
| - report: DocketReport | AppellateDocketReport, |
| 2344 | + report: DocketReport | AppellateDocketReport | ACMSDocketReport, |
2352 | 2345 | docket_data: dict[str, Any],
|
2353 | 2346 | ) -> dict[str, str | bool]:
|
2354 | 2347 | """Creates or updates docket data in the database from fetched data.
|
@@ -2420,12 +2413,34 @@ def purchase_appellate_docket_by_docket_number(
|
2420 | 2413 | :param fq: The PacerFetchQueue object
|
2421 | 2414 | :return: a dict with information about the docket and the new data
|
2422 | 2415 | """
|
2423 |
| - report = AppellateDocketReport(map_cl_to_pacer_id(court_id), session) |
2424 |
| - report.query(docket_number, **kwargs) |
| 2416 | + acms_case_id = None |
| 2417 | + |
| 2418 | + if should_check_acms_court(court_id): |
| 2419 | + acms_search = AcmsCaseSearch(court_id=court_id, pacer_session=session) |
| 2420 | + acms_search.query(docket_number) |
| 2421 | + acms_case_id = ( |
| 2422 | + acms_search.data["pcx_caseid"] if acms_search.data else None |
| 2423 | + ) |
| 2424 | + |
| 2425 | + pacer_court_id = map_cl_to_pacer_id(court_id) |
| 2426 | + report_class = ACMSDocketReport if acms_case_id else AppellateDocketReport |
| 2427 | + report = report_class(pacer_court_id, session) |
| 2428 | + |
| 2429 | + if acms_case_id: |
| 2430 | + # ACMSDocketReport only accepts the case ID; filters are not currently |
| 2431 | + # supported for ACMS docket reports. |
| 2432 | + report.query(acms_case_id) |
| 2433 | + else: |
| 2434 | + report.query(docket_number, **kwargs) |
2425 | 2435 |
|
2426 | 2436 | docket_data = report.data
|
2427 | 2437 | if not docket_data:
|
2428 | 2438 | raise ParsingException("No data found in docket report.")
|
| 2439 | + |
| 2440 | + if acms_case_id: |
| 2441 | + docket_data["docket_entries"] = sort_acms_docket_entries( |
| 2442 | + docket_data["docket_entries"] |
| 2443 | + ) |
2429 | 2444 | return create_or_update_docket_data_from_fetch(
|
2430 | 2445 | fq, court_id, None, report, docket_data
|
2431 | 2446 | )
|
|
0 commit comments