Esempio n. 1
0
def update_docket_info_iquery(self, d_pk):
    cookies = get_or_cache_pacer_cookies(
        "pacer_scraper",
        settings.PACER_USERNAME,
        password=settings.PACER_PASSWORD,
    )
    s = PacerSession(
        cookies=cookies,
        username=settings.PACER_USERNAME,
        password=settings.PACER_PASSWORD,
    )
    d = Docket.objects.get(pk=d_pk)
    report = CaseQuery(map_cl_to_pacer_id(d.court_id), s)
    try:
        report.query(d.pacer_case_id)
    except (requests.Timeout, requests.RequestException) as exc:
        logger.warning(
            "Timeout or unknown RequestException on iquery crawl. "
            "Trying again if retries not exceeded."
        )
        if self.request.retries == self.max_retries:
            return
        raise self.retry(exc=exc)
    d = update_docket_metadata(d, report.data)
    d.save()
    add_bankruptcy_data_to_docket(d, report.data)
    add_items_to_solr([d.pk], "search.Docket")
Esempio n. 2
0
    def validate(self, attrs):
        # Is it a good court value?
        district_court_ids = Court.objects.filter(
            Q(jurisdiction__in=[
                Court.FEDERAL_DISTRICT,
                Court.FEDERAL_BANKRUPTCY,
            ])
            | Q(pk__in=["cit", "jpml", "uscfc"]), ).values_list("pk",
                                                                flat=True)
        if attrs.get("court") and attrs["court"].pk not in district_court_ids:
            raise ValidationError("Invalid court id: %s" % attrs["court"].pk)

        # Docket validations
        if attrs.get("pacer_case_id") and not attrs.get("court"):
            # If a pacer_case_id is included, is a court also?
            raise ValidationError("Cannot use 'pacer_case_id' parameter "
                                  "without 'court' parameter.")
        if attrs.get("docket_number") and not attrs.get("court"):
            # If a docket_number is included, is a court also?
            raise ValidationError("Cannot use 'docket_number' parameter "
                                  "without 'court' parameter.")
        if attrs.get("show_terminated_parties"
                     ) and not attrs.get("show_parties_and_counsel"):
            raise ValidationError(
                "You've requested to show_terminated_parties parties while "
                "show_parties_and_counsel is False. To show terminated "
                "parties, you must also request showing parties and counsel "
                "generally.")

        # Attachment page and PDF validation
        if attrs["request_type"] in [
                REQUEST_TYPE.PDF,
                REQUEST_TYPE.ATTACHMENT_PAGE,
        ]:
            if not attrs.get("recap_document"):
                raise ValidationError(
                    "recap_document is a required field for attachment page "
                    "and PDF fetches.")

        # PDF validations
        if attrs["request_type"] == REQUEST_TYPE.PDF:
            rd = attrs["recap_document"]
            if rd.is_available:
                raise ValidationError(
                    "Cannot fetch a PDF for recap_document %s. That document "
                    "is already marked as available in our database "
                    "(is_available = True)." % rd.pk)

        # Do the PACER credentials work?
        try:
            _ = get_or_cache_pacer_cookies(
                attrs["user"].pk,
                username=attrs.pop("pacer_username"),
                password=attrs.pop("pacer_password"),
            )
        except PacerLoginException as e:
            raise ValidationError("PacerLoginException: %s" % e.message)

        return attrs
Esempio n. 3
0
    def validate(self, attrs):
        # Is it a good court value?
        district_court_ids = Court.objects.filter(
            Q(jurisdiction__in=[
                Court.FEDERAL_DISTRICT,
                Court.FEDERAL_BANKRUPTCY,
            ]) | Q(pk__in=['cit', 'jpml', 'uscfc']),
        ).values_list('pk', flat=True)
        if attrs.get('court') and attrs['court'].pk not in district_court_ids:
            raise ValidationError("Invalid court id: %s" % attrs['court'].pk)

        # Docket validations
        if attrs.get('pacer_case_id') and not attrs.get('court'):
            # If a pacer_case_id is included, is a court also?
            raise ValidationError("Cannot use 'pacer_case_id' parameter "
                                  "without 'court' parameter.")
        if attrs.get('docket_number') and not attrs.get('court'):
            # If a docket_number is included, is a court also?
            raise ValidationError("Cannot use 'docket_number' parameter "
                                  "without 'court' parameter.")
        if attrs.get('show_terminated_parties') and not \
                attrs.get('show_parties_and_counsel'):
            raise ValidationError(
                "You've requested to show_terminated_parties parties while "
                "show_parties_and_counsel is False. To show terminated "
                "parties, you must also request showing parties and counsel "
                "generally."
            )

        # PDF validations
        if attrs.get('recap_document'):
            rd = attrs['recap_document']
            if rd.is_available:
                raise ValidationError(
                    "Cannot fetch a PDF for recap_document %s. That document "
                    "is already marked as available in our database "
                    "(is_available = True)." % rd.pk
                )

        # Do the PACER credentials work?
        try:
            _ = get_or_cache_pacer_cookies(
                attrs['user'].pk,
                username=attrs.pop('pacer_username'),
                password=attrs.pop('pacer_password'),
            )
        except PacerLoginException as e:
            raise ValidationError("PacerLoginException: %s" % e.message)

        return attrs
Esempio n. 4
0
def update_docket_info_iquery(self, d_pk: int, court_id: str) -> None:
    """Update the docket info from iquery

    :param self: The Celery task
    :param d_pk: The ID of the docket
    :param court_id: The court of the docket. Needed for throttling by court.
    :return: None
    """
    cookies = get_or_cache_pacer_cookies(
        "pacer_scraper",
        settings.PACER_USERNAME,
        password=settings.PACER_PASSWORD,
    )
    s = PacerSession(
        cookies=cookies,
        username=settings.PACER_USERNAME,
        password=settings.PACER_PASSWORD,
    )
    d = Docket.objects.get(pk=d_pk, court_id=court_id)
    report = CaseQuery(map_cl_to_pacer_id(d.court_id), s)
    try:
        report.query(d.pacer_case_id)
    except (requests.Timeout, requests.RequestException) as exc:
        logger.warning(
            "Timeout or unknown RequestException on iquery crawl. "
            "Trying again if retries not exceeded."
        )
        if self.request.retries == self.max_retries:
            return
        raise self.retry(exc=exc)
    if not report.data:
        return

    save_iquery_to_docket(
        self,
        report.data,
        d,
        tag_names=None,
        add_to_solr=True,
    )