diff --git a/hepdata/cli.py b/hepdata/cli.py index d0b9c64f..36b4d54f 100644 --- a/hepdata/cli.py +++ b/hepdata/cli.py @@ -223,9 +223,9 @@ def do_unload(records_to_unload): @utils.command() @with_appcontext -@click.option('--endpoint', '-e', type=str, help='Specific endpoint to update (e.g. "rivet" or "MadAnalysis"). Omit for all.') +@click.option('--endpoint', '-e', type=str, help='Specific endpoint to update (e.g. "rivet" or "MadAnalysis" or "SModelS"). Omit for all.') def find_and_add_record_analyses(endpoint): - """Finds analyses such as Rivet and MadAnalysis 5 and adds them to records.""" + """Finds analyses such as Rivet, MadAnalysis 5 and SModelS and adds them to records.""" update_analyses(endpoint) diff --git a/hepdata/config.py b/hepdata/config.py index 5f411529..713693dd 100644 --- a/hepdata/config.py +++ b/hepdata/config.py @@ -327,6 +327,11 @@ def _(x): 'endpoint_url': 'https://madanalysis.irmp.ucl.ac.be/raw-attachment/wiki/MA5SandBox/analyses.json', 'url_template': 'https://doi.org/{0}' }, + 'SModelS': { + 'endpoint_url': 'https://zenodo.org/records/13952092/files/smodels-analyses.hepdata.json?download=1', + 'url_template': '{0}', + 'subscribe_user_id': 7766 + } #'ufo': {}, #'xfitter': {}, #'applgrid': {}, diff --git a/hepdata/ext/opensearch/document_enhancers.py b/hepdata/ext/opensearch/document_enhancers.py index 1f1a0dd7..6ca9173a 100644 --- a/hepdata/ext/opensearch/document_enhancers.py +++ b/hepdata/ext/opensearch/document_enhancers.py @@ -94,7 +94,7 @@ def add_shortened_authors(doc): def add_analyses(doc): """ - Add analyses links such as Rivet, MadAnalysis 5, HistFactory and NUISANCE to the index. + Add analyses links such as Rivet, MadAnalysis 5, SModelS, HistFactory and NUISANCE to the index. :param doc: :return: diff --git a/hepdata/modules/records/assets/js/hepdata_common.js b/hepdata/modules/records/assets/js/hepdata_common.js index 70b4f2d7..a55d6963 100644 --- a/hepdata/modules/records/assets/js/hepdata_common.js +++ b/hepdata/modules/records/assets/js/hepdata_common.js @@ -45,6 +45,7 @@ HEPDATA.file_type_to_details = { "fastnlo": {"icon": "area-chart", "description": "fastNLO Analysis"}, "rivet": {"icon": "area-chart", "description": "Rivet Analysis"}, "madanalysis": {"icon": "area-chart", "description": "MadAnalysis 5 Analysis"}, + "smodels": {"icon": "area-chart", "description": "SModelS Analysis"}, "xfitter": {"icon": "area-chart", "description": "xFitter Analysis"}, "applgrid": {"icon": "area-chart", "description": "APPLgrid Analysis"}, "ufo": {"icon": "rocket", "description": "Universal Feynrules Output (UFO)"}, diff --git a/hepdata/modules/records/templates/hepdata_records/components/resources-widget.html b/hepdata/modules/records/templates/hepdata_records/components/resources-widget.html index 396017f4..17c295b5 100644 --- a/hepdata/modules/records/templates/hepdata_records/components/resources-widget.html +++ b/hepdata/modules/records/templates/hepdata_records/components/resources-widget.html @@ -40,6 +40,7 @@

Add Resource for Submission

+ diff --git a/hepdata/modules/records/utils/analyses.py b/hepdata/modules/records/utils/analyses.py index 983a407f..35b4b730 100644 --- a/hepdata/modules/records/utils/analyses.py +++ b/hepdata/modules/records/utils/analyses.py @@ -32,6 +32,9 @@ from hepdata.ext.opensearch.api import index_record_ids from hepdata.modules.submission.api import get_latest_hepsubmission, is_resource_added_to_submission from hepdata.modules.submission.models import DataResource, HEPSubmission, data_reference_link +from hepdata.utils.users import get_user_from_id +from hepdata.modules.records.subscribers.rest import subscribe +from hepdata.modules.records.subscribers.api import is_current_user_subscribed_to_record logging.basicConfig() log = logging.getLogger(__name__) @@ -40,9 +43,10 @@ @shared_task def update_analyses(endpoint=None): """ - Update (Rivet and MadAnalysis 5) analyses and remove outdated resources. + Update (Rivet, MadAnalysis 5 and SModelS) analyses and remove outdated resources. + Allow bulk subscription to record update notifications if "subscribe_user_id" in endpoint. - :param endpoint: either "Rivet" or "MadAnalysis" or None (default) for both + :param endpoint: either "rivet" or "MadAnalysis" or "SModelS" or None (default) for both """ endpoints = current_app.config["ANALYSES_ENDPOINTS"] for analysis_endpoint in endpoints: @@ -137,5 +141,14 @@ def update_analyses(endpoint=None): db.session.rollback() log.error(e) + # Allow bulk subscription to record update notifications. + if "subscribe_user_id" in endpoints[analysis_endpoint]: + user = get_user_from_id(endpoints[analysis_endpoint]["subscribe_user_id"]) + if user: + for record in analyses: + submission = get_latest_hepsubmission(inspire_id=record, overall_status='finished') + if submission and not is_current_user_subscribed_to_record(submission.publication_recid, user): + subscribe(submission.publication_recid, user) + else: log.debug("No endpoint url configured for {0}".format(analysis_endpoint)) diff --git a/hepdata/modules/search/templates/hepdata_search/modals/search_help.html b/hepdata/modules/search/templates/hepdata_search/modals/search_help.html index 4352e11b..357661b1 100644 --- a/hepdata/modules/search/templates/hepdata_search/modals/search_help.html +++ b/hepdata/modules/search/templates/hepdata_search/modals/search_help.html @@ -236,6 +236,13 @@

Other useful searches

(MadAnalysis 5 analysis) +
  • + analysis:SModelS + + (SModelS analysis) + +
  • analysis:HistFactory diff --git a/hepdata/version.py b/hepdata/version.py index ab77b827..fb6b9e2b 100644 --- a/hepdata/version.py +++ b/hepdata/version.py @@ -28,4 +28,4 @@ and parsed by ``setup.py``. """ -__version__ = "0.9.4dev20241003" +__version__ = "0.9.4dev20241031"