def sandbox_display(id): hepdata_submission = HEPSubmission.query.filter( HEPSubmission.publication_recid == id, or_(HEPSubmission.overall_status == 'sandbox', HEPSubmission.overall_status == 'sandbox_processing')).first() if hepdata_submission is not None: if hepdata_submission.overall_status == 'sandbox_processing': ctx = {'recid': id} determine_user_privileges(id, ctx) return render_template( 'hepdata_records/publication_processing.html', ctx=ctx) else: ctx = format_submission(id, None, 1, 1, hepdata_submission) ctx['mode'] = 'sandbox' ctx['show_review_widget'] = False increment(id) return render_template('hepdata_records/sandbox.html', ctx=ctx) else: return render_template('hepdata_records/error_page.html', recid=None, message="No submission exists with that ID.", errors={})
def test_stats(app): increment(1) assert (get_count(1)['sum'] == 1) increment(1) assert (get_count(1)['sum'] == 2) # in case of failure, this always returns 1 assert (get_count(1999)['sum'] == 1)
def sandbox_display(id): hepdata_submission = HEPSubmission.query.filter_by(publication_recid=id).first() if hepdata_submission is not None: ctx = format_submission(id, None, 1, 1, hepdata_submission) ctx["mode"] = "sandbox" ctx["show_review_widget"] = False increment(id) return render_template("hepdata_records/sandbox.html", ctx=ctx) else: return render_template( "hepdata_records/error_page.html", recid=None, message="No submission exists with that ID.", errors={} )
def sandbox_display(id): hepdata_submission = HEPSubmission.query.filter_by( publication_recid=id).first() if hepdata_submission is not None: ctx = format_submission(id, None, 1, 1, hepdata_submission) ctx['mode'] = 'sandbox' ctx['show_review_widget'] = False increment(id) return render_template('hepdata_records/sandbox.html', ctx=ctx) else: return render_template('hepdata_records/error_page.html', recid=None, message="No submission exists with that ID.", errors={})
def render_record(recid, record, version, output_format, light_mode=False): if user_allowed_to_perform_action(recid): version_count = HEPSubmission.query.filter_by( publication_recid=recid).count() else: version_count = HEPSubmission.query.filter_by( publication_recid=recid, overall_status='finished').count() if version == -1: version = version_count hepdata_submission = get_latest_hepsubmission(publication_recid=recid, version=version) if hepdata_submission is not None: ctx = format_submission(recid, record, version, version_count, hepdata_submission) increment(recid) if output_format == "json": ctx = process_ctx(ctx, light_mode) return jsonify(ctx) else: return render_template('hepdata_records/publication_record.html', ctx=ctx) else: # this happens when we access an id of a data record # in which case, we find the related publication, and # make the front end focus on the relevant data table. try: publication_recid = int(record['related_publication']) publication_record = get_record_contents(publication_recid) hepdata_submission = get_latest_hepsubmission(recid=publication_recid) ctx = format_submission(publication_recid, publication_record, hepdata_submission.version, 1, hepdata_submission, data_table=record['title']) ctx['related_publication_id'] = publication_recid ctx['table_name'] = record['title'] if output_format == "json": ctx = process_ctx(ctx, light_mode) return jsonify(ctx) else: return render_template('hepdata_records/data_record.html', ctx=ctx) except Exception: return render_template('hepdata_theme/404.html')
def render_record(recid, record, version, output_format, light_mode=False): # Count number of all versions and number of finished versions of a publication record. version_count_all = HEPSubmission.query.filter( HEPSubmission.publication_recid == recid, HEPSubmission.overall_status != 'sandbox').count() version_count_finished = HEPSubmission.query.filter_by( publication_recid=recid, overall_status='finished').count() # Number of versions that a user is allowed to access based on their permissions. version_count = version_count_all if user_allowed_to_perform_action( recid) else version_count_finished # If version not given explicitly, take to be latest allowed version (or 1 if there are no allowed versions). if version == -1: version = version_count if version_count else 1 # Check for a user trying to access a version of a publication record where they don't have permissions. if version_count < version_count_all and version == version_count_all: # Prompt the user to login if they are not authenticated then redirect, otherwise return a 403 error. if not current_user.is_authenticated: redirect_url_after_login = '******'.format( recid, version, output_format) if 'table' in request.args: redirect_url_after_login += '%26table%3D{0}'.format( request.args['table']) return redirect( '/login/?next={0}'.format(redirect_url_after_login)) else: abort(403) hepdata_submission = get_latest_hepsubmission(publication_recid=recid, version=version) if hepdata_submission is not None: if hepdata_submission.overall_status != 'sandbox': ctx = format_submission(recid, record, version, version_count, hepdata_submission) increment(recid) if output_format == 'html': return render_template( 'hepdata_records/publication_record.html', ctx=ctx) elif 'table' not in request.args: if output_format == 'json': ctx = process_ctx(ctx, light_mode) return jsonify(ctx) elif output_format == 'yoda' and 'rivet' in request.args: return redirect( '/download/submission/{0}/{1}/{2}/{3}'.format( recid, version, output_format, request.args['rivet'])) else: return redirect('/download/submission/{0}/{1}/{2}'.format( recid, version, output_format)) else: file_identifier = 'ins{}'.format( hepdata_submission.inspire_id ) if hepdata_submission.inspire_id else recid if output_format == 'yoda' and 'rivet' in request.args: return redirect( '/download/table/{0}/{1}/{2}/{3}/{4}'.format( file_identifier, request.args['table'].replace( '%', '%25').replace('\\', '%5C'), version, output_format, request.args['rivet'])) else: return redirect('/download/table/{0}/{1}/{2}/{3}'.format( file_identifier, request.args['table'].replace( '%', '%25').replace('\\', '%5C'), version, output_format)) else: abort(404) elif record is not None: # this happens when we access an id of a data record # in which case, we find the related publication, and # make the front end focus on the relevant data table. try: publication_recid = int(record['related_publication']) publication_record = get_record_contents(publication_recid) hepdata_submission = get_latest_hepsubmission( publication_recid=publication_recid) ctx = format_submission(publication_recid, publication_record, hepdata_submission.version, 1, hepdata_submission, data_table=record['title']) ctx['related_publication_id'] = publication_recid ctx['table_name'] = record['title'] if output_format == 'html': return render_template('hepdata_records/data_record.html', ctx=ctx) elif output_format == 'yoda' and 'rivet' in request.args: return redirect('/download/table/{0}/{1}/{2}/{3}/{4}'.format( publication_recid, ctx['table_name'].replace('%', '%25').replace('\\', '%5C'), hepdata_submission.version, output_format, request.args['rivet'])) else: return redirect('/download/table/{0}/{1}/{2}/{3}'.format( publication_recid, ctx['table_name'].replace('%', '%25').replace('\\', '%5C'), hepdata_submission.version, output_format)) except Exception as e: abort(404) else: abort(404)
def render_record(recid, record, version, output_format, light_mode=False): if user_allowed_to_perform_action(recid): version_count = HEPSubmission.query.filter_by( publication_recid=recid).count() else: version_count = HEPSubmission.query.filter_by( publication_recid=recid, overall_status='finished').count() if version == -1: version = version_count hepdata_submission = get_latest_hepsubmission(publication_recid=recid, version=version) if hepdata_submission is not None: ctx = format_submission(recid, record, version, version_count, hepdata_submission) increment(recid) if output_format == 'html': return render_template('hepdata_records/publication_record.html', ctx=ctx) elif 'table' not in request.args: if output_format == 'json': ctx = process_ctx(ctx, light_mode) return jsonify(ctx) else: return redirect('/download/submission/{0}/{1}/{2}'.format( recid, version, output_format)) else: file_identifier = 'ins{}'.format( hepdata_submission.inspire_id ) if hepdata_submission.inspire_id else recid return redirect('/download/table/{0}/{1}/{2}/{3}'.format( file_identifier, request.args['table'], version, output_format)) elif record is not None: # this happens when we access an id of a data record # in which case, we find the related publication, and # make the front end focus on the relevant data table. try: publication_recid = int(record['related_publication']) publication_record = get_record_contents(publication_recid) hepdata_submission = get_latest_hepsubmission( publication_recid=publication_recid) ctx = format_submission(publication_recid, publication_record, hepdata_submission.version, 1, hepdata_submission, data_table=record['title']) ctx['related_publication_id'] = publication_recid ctx['table_name'] = record['title'] if output_format == 'html': return render_template('hepdata_records/data_record.html', ctx=ctx) else: return redirect('/download/table/{0}/{1}/{2}/{3}'.format( publication_recid, ctx['table_name'], hepdata_submission.version, output_format)) except Exception as e: raise e return render_template('hepdata_theme/404.html') else: return render_template('hepdata_theme/404.html')