예제 #1
0
def get_lock(court, casenum, uploaderid, one_per_uploader=0):

    nonce = DocketXML.generate_new_nonce()

    lock = BucketLock(court=court, casenum=casenum, uploaderid=uploaderid, nonce=nonce)
    try:
        lock.save()
    except IntegrityError:
        # Fail, lock already exists.

        lockquery = BucketLock.objects.filter(court=court).filter(casenum=casenum)
        try:
            lock = lockquery[0]
        except IndexError:
            # No lock exists anymore-- must have just missed it.
            return None, "Locked."
        else:
            # Lock already exists

            # This prevents two cron jobs from requesting the same lock
            if lock.uploaderid == uploaderid and one_per_uploader:
                return None, "You already own this lock (Another cron job?)"
            if lock.uploaderid == uploaderid and not lock.ready:
                return lock.nonce, ""
            if lock.uploaderid == uploaderid and lock.ready and not lock.processing:
                # If we're not currently processing the case, let the same
                # uploader modify it
                lock.ready = 0
                lock.save()
                return lock.nonce, ""
            else:
                return None, "Locked by another user."
    else:
        # Success.
        return nonce, ""
예제 #2
0
def _cron_me_up(ia_docket, docket, ppentry):
    """ Merge and update docket"""

    ia_court = ia_docket.casemeta["court"]
    ia_casenum = ia_docket.casemeta["pacer_case_num"]

    # Save the original hash to diff with later
    ia_docket_orig_hash = hash(pickle.dumps(ia_docket))
    ia_casemeta_orig_hash = hash(pickle.dumps(ia_docket.casemeta))

    # Merge ia_docket with our local database information to fill in blank
    # fields that may exist in ia
    local_docket = DocumentManager.create_docket_from_local_documents(
        ia_court, ia_casenum, docket)

    if local_docket:
        ia_docket.merge_docket(local_docket)

    ia_docket_after_local_merge_hash = hash(pickle.dumps(ia_docket))

    if ia_docket_orig_hash != ia_docket_after_local_merge_hash:
        print " Some locally stored information was missing from %s.%s. Local info added." % (
            ia_court, ia_casenum)

    # Step 2: Merge new docket into the existing IA docket
    ia_docket.merge_docket(docket)

    # Step 3: If diff, then upload the merged docket
    ia_docket_merged_hash = hash(pickle.dumps(ia_docket))

    if ia_docket_orig_hash != ia_docket_merged_hash:

        # Generate a new nonce for the docket
        ia_docket.nonce = DocketXML.generate_new_nonce()

        ia_casemeta_merged_hash = hash(pickle.dumps(ia_docket.casemeta))
        casemeta_diff = ia_casemeta_orig_hash != ia_casemeta_merged_hash

        # Put the docket to IA
        put_result, put_msg = put_docket(ia_docket,
                                         ia_court,
                                         ia_casenum,
                                         ppentry,
                                         casemeta_diff=casemeta_diff)

        return put_result, "merged: %s" % put_msg

    else:
        # No difference between IA docket and this docket, no need to upload.

        filename = ppentry.filename

        # Delete the entry from the DB
        ppentry.delete()
        # Delete the pickle file
        delete_pickle(filename)

        # Return False to reflect "no update"
        return False, "not merged: no diff."
예제 #3
0
def _cron_me_up(ia_docket, docket, ppentry):
    """ Merge and update docket"""

    ia_court = ia_docket.casemeta["court"]
    ia_casenum = ia_docket.casemeta["pacer_case_num"]

    # Save the original hash to diff with later
    ia_docket_orig_hash = hash(pickle.dumps(ia_docket))
    ia_casemeta_orig_hash = hash(pickle.dumps(ia_docket.casemeta))

    # Merge ia_docket with our local database information to fill in blank
    # fields that may exist in ia
    local_docket = DocumentManager.create_docket_from_local_documents(ia_court,
                                                                      ia_casenum,
                                                                      docket)

    if local_docket:
        ia_docket.merge_docket(local_docket)

    ia_docket_after_local_merge_hash = hash(pickle.dumps(ia_docket))

    if ia_docket_orig_hash != ia_docket_after_local_merge_hash:
        print " Some locally stored information was missing from %s.%s. Local info added." % (
            ia_court, ia_casenum)

    # Step 2: Merge new docket into the existing IA docket
    ia_docket.merge_docket(docket)

    # Step 3: If diff, then upload the merged docket
    ia_docket_merged_hash = hash(pickle.dumps(ia_docket))

    if ia_docket_orig_hash != ia_docket_merged_hash:

        # Generate a new nonce for the docket
        ia_docket.nonce = DocketXML.generate_new_nonce()

        ia_casemeta_merged_hash = hash(pickle.dumps(ia_docket.casemeta))
        casemeta_diff = ia_casemeta_orig_hash != ia_casemeta_merged_hash

        # Put the docket to IA
        put_result, put_msg = put_docket(ia_docket, ia_court, ia_casenum,
                                         ppentry, casemeta_diff=casemeta_diff)

        return put_result, "merged: %s" % put_msg

    else:
        # No difference between IA docket and this docket, no need to upload.

        filename = ppentry.filename

        # Delete the entry from the DB
        ppentry.delete()
        # Delete the pickle file
        delete_pickle(filename)

        # Return False to reflect "no update"
        return False, "not merged: no diff."