def update_file(inspire_id, recid, only_record_information=False, send_tweet=False): self = Migrator() output_location = self.prepare_files_for_submission(inspire_id, force_retrieval=True) if output_location: updated_record_information = self.retrieve_publication_information(inspire_id) record_information = update_record(recid, updated_record_information) if not only_record_information: try: recid = self.load_submission( record_information, output_location, os.path.join(output_location, "submission.yaml"), update=True) if recid is not None: do_finalise(recid, publication_record=record_information, force_finalise=True, send_tweet=send_tweet, update=True) except FailedSubmission as fe: log.error(fe.message) fe.print_errors() remove_submission(fe.record_id) else: index_record_ids([record_information['recid']]) else: log.error('Failed to load {0}'.format(inspire_id))
def load_file(inspire_id, send_tweet=False, convert=False, base_url='http://hepdata.cedar.ac.uk/view/{0}/yaml'): self = Migrator(base_url) output_location, oldsite_last_updated = self.prepare_files_for_submission( inspire_id) if output_location: record_information = create_record( self.retrieve_publication_information(inspire_id)) try: recid = self.load_submission( record_information, output_location, os.path.join(output_location, "submission.yaml")) if recid is not None: do_finalise(recid, publication_record=record_information, force_finalise=True, send_tweet=send_tweet, convert=convert) return True except FailedSubmission as fe: log.error(fe.message) fe.print_errors() remove_submission(fe.record_id) return False else: log.error("Failed to load " + inspire_id) return False
def update_file(inspire_id, recid, force=False, only_record_information=False, send_tweet=False, convert=False): self = Migrator() output_location, oldsite_last_updated = self.prepare_files_for_submission( inspire_id, force_retrieval=True) if output_location: updated_record_information = self.retrieve_publication_information( inspire_id) record_information = update_record(recid, updated_record_information) hep_submission = HEPSubmission.query.filter_by( publication_recid=recid).first() version_count = HEPSubmission.query.filter_by( publication_recid=recid).count() print('Old site last updated {}'.format(str(oldsite_last_updated))) print('New site last updated {}'.format( str(hep_submission.last_updated))) print('Coordinator ID is {}, version count is {}'.format( hep_submission.coordinator, version_count)) allow_update = hep_submission.last_updated < oldsite_last_updated and \ hep_submission.coordinator == 1 and version_count == 1 if not only_record_information and (allow_update or force): try: recid = self.load_submission(record_information, output_location, os.path.join( output_location, "submission.yaml"), update=True) print('Loaded record {}'.format(recid)) if recid is not None: do_finalise(recid, publication_record=record_information, force_finalise=True, send_tweet=send_tweet, update=True, convert=convert) except FailedSubmission as fe: log.error(fe.message) fe.print_errors() remove_submission(fe.record_id) elif not only_record_information: print('Not updating record {}'.format(recid)) else: index_record_ids([record_information["recid"]]) else: log.error("Failed to load {0}".format(inspire_id))
def process_payload(recid, file, redirect_url): if file and (allowed_file(file.filename)): errors = process_zip_archive(file, recid) if errors: remove_submission(recid) return render_template('hepdata_records/error_page.html', recid=None, errors=errors) else: update_action_for_submission_participant(recid, current_user.get_id(), 'uploader') return redirect(redirect_url.format(recid)) else: return render_template('hepdata_records/error_page.html', recid=recid, message="Incorrect file type uploaded.", errors={"Submission": [{"level": "error", "message": "You must upload a .zip, .tar, or .tar.gz file."}]})
def load_file(inspire_id, send_tweet): self = Migrator() output_location = self.prepare_files_for_submission(inspire_id) if output_location: record_information = self.retrieve_publication_information(inspire_id) try: recid = self.load_submission( record_information, output_location, os.path.join(output_location, "submission.yaml")) if recid is not None: do_finalise(recid, publication_record=record_information, force_finalise=True, send_tweet=send_tweet) except FailedSubmission as fe: log.error(fe.message) fe.print_errors() remove_submission(fe.record_id) else: log.error('Failed to load ' + inspire_id)
def update_file(inspire_id, recid, force=False, only_record_information=False, send_email=False, send_tweet=False, convert=False): self = Migrator() output_location, oldsite_last_updated = self.prepare_files_for_submission( inspire_id, force_retrieval=True) if output_location: updated_record_information, status = self.retrieve_publication_information( inspire_id) if status == 'success': record_information = update_record(recid, updated_record_information) else: log.error("Failed to retrieve publication information for {0}". format(inspire_id)) return hep_submission = HEPSubmission.query.filter_by( publication_recid=recid).first() version_count = HEPSubmission.query.filter_by( publication_recid=recid).count() print('Old site last updated {}'.format(str(oldsite_last_updated))) print('New site last updated {}'.format( str(hep_submission.last_updated))) print('Coordinator ID is {}, version count is {}'.format( hep_submission.coordinator, version_count)) allow_update = (hep_submission.last_updated < oldsite_last_updated or force) and \ hep_submission.coordinator == 1 and version_count == 1 if not only_record_information and allow_update: try: recid = self.load_submission(record_information, output_location, os.path.join( output_location, "submission.yaml"), update=True) print('Loaded record {}'.format(recid)) if recid is not None: do_finalise(recid, publication_record=record_information, force_finalise=True, send_tweet=send_tweet, update=True, convert=convert) except FailedSubmission as fe: log.error(fe.message) fe.print_errors() remove_submission(fe.record_id) elif not only_record_information: print('Not updating record {}'.format(recid)) else: index_record_ids([record_information["recid"]]) _cleaned_id = inspire_id.replace("ins", "") generate_dois_for_submission.delay( inspire_id=_cleaned_id ) # update metadata stored in DataCite if send_email: notify_publication_update( hep_submission, record_information) # send email to all participants else: log.error("Failed to load {0}".format(inspire_id))