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, ""
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."
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."