diff --git a/nomad/datamodel/__init__.py b/nomad/datamodel/__init__.py index af011a3fc4d960629111adccff0707c974a1b673..ef4a4aa662babab2992c128c1d9116275ea68ef8 100644 --- a/nomad/datamodel/__init__.py +++ b/nomad/datamodel/__init__.py @@ -19,7 +19,7 @@ import sys from nomad.metainfo import Environment -from .data import User, Author, user_reference, author_reference +from .data import User, Author, UserReference, AuthorReference from .datamodel import ( Dataset, EditableUserMetadata, diff --git a/nomad/datamodel/data.py b/nomad/datamodel/data.py index f5aa652d28a6078ce830b89358cd6dcbe51054dd..a3c149c8a82682a7c15c348dfc8d99e3cce52e62 100644 --- a/nomad/datamodel/data.py +++ b/nomad/datamodel/data.py @@ -208,9 +208,6 @@ class UserReference(Reference): return value.user_id -user_reference = UserReference - - class AuthorReference(Reference): def __init__(self): super().__init__(Author.m_def) @@ -233,9 +230,6 @@ class AuthorReference(Reference): raise ValueError(f'Cannot serialize {value}.') -author_reference = AuthorReference - - class Query(JSON): """ To represent a search query, including the applied filters and the results. diff --git a/nomad/datamodel/datamodel.py b/nomad/datamodel/datamodel.py index ba5b16e1dae94d278cfe12611a27782db60c0c5d..7621971c6ca412fea23cac18c98aa90adfa1548f 100644 --- a/nomad/datamodel/datamodel.py +++ b/nomad/datamodel/datamodel.py @@ -59,7 +59,7 @@ from ..metainfo.metainfo import Reference m_package = Package() from .results import Results # noqa -from .data import EntryData, ArchiveSection, User, user_reference, author_reference # noqa +from .data import EntryData, ArchiveSection, User, UserReference, AuthorReference # noqa from .optimade import OptimadeEntry # noqa from .metainfo.simulation.legacy_workflows import Workflow as LegacySimulationWorkflow # noqa from .metainfo.workflow import Workflow # noqa @@ -184,7 +184,7 @@ class Dataset(MSection): entries = Quantity(type=str, shape=['*'], a_mongo=Mongo()) -class m_dataset_reference(Reference): +class DatasetReference(Reference): def __init__(self): super().__init__(Dataset.m_def) @@ -201,10 +201,6 @@ class m_dataset_reference(Reference): return value.dataset_id -DatasetReference = m_dataset_reference -dataset_reference = DatasetReference() - - class EditableUserMetadata(MCategory): """NOMAD entry metadata quantities that can be edited by the user before or after publish.""" @@ -738,7 +734,7 @@ class EntryMetadata(MSection): ) main_author = Quantity( - type=user_reference, + type=UserReference, categories=[MongoUploadMetadata, EditableUserMetadata], description='The main author of the entry', a_auth_level=AuthLevel.admin, @@ -747,7 +743,7 @@ class EntryMetadata(MSection): coauthors = Quantity( # Note: This attribute is not stored in ES - type=author_reference, + type=AuthorReference, shape=['0..*'], default=[], categories=[MongoUploadMetadata, EditableUserMetadata], @@ -770,7 +766,7 @@ class EntryMetadata(MSection): entry_coauthors = Quantity( # Note: This attribute is not stored in ES - type=author_reference, + type=AuthorReference, shape=['0..*'], default=[], categories=[MongoEntryMetadata], @@ -782,7 +778,7 @@ class EntryMetadata(MSection): reviewers = Quantity( # Note: This attribute is not stored in ES - type=user_reference, + type=UserReference, shape=['0..*'], default=[], categories=[MongoUploadMetadata, EditableUserMetadata], @@ -804,7 +800,7 @@ class EntryMetadata(MSection): ) authors = Quantity( - type=author_reference, + type=AuthorReference, shape=['0..*'], description='All authors (main author and co-authors)', derived=derive_authors, @@ -814,7 +810,7 @@ class EntryMetadata(MSection): ) writers = Quantity( - type=user_reference, + type=UserReference, shape=['0..*'], description='All writers (main author, upload coauthors)', derived=lambda entry: ( @@ -833,7 +829,7 @@ class EntryMetadata(MSection): ) viewers = Quantity( - type=user_reference, + type=UserReference, shape=['0..*'], description='All viewers (main author, upload coauthors, and reviewers)', derived=lambda entry: ( @@ -853,7 +849,7 @@ class EntryMetadata(MSection): ) datasets = Quantity( - type=dataset_reference, + type=DatasetReference(), shape=['0..*'], default=[], categories=[MongoEntryMetadata, EditableUserMetadata], diff --git a/nomad/datamodel/metainfo/eln/__init__.py b/nomad/datamodel/metainfo/eln/__init__.py index 1dbc30ea254f58dfc066eb8da3a4d0a50232dc22..6c3dfd2934305ec8c43cfe3f21ffcc537240c0ae 100644 --- a/nomad/datamodel/metainfo/eln/__init__.py +++ b/nomad/datamodel/metainfo/eln/__init__.py @@ -36,7 +36,7 @@ from nomad.datamodel.data import ( ArchiveSection, BasicElnCategory, EntryData, - author_reference, + AuthorReference, ) from nomad.datamodel.metainfo.annotations import ( ELNAnnotation, @@ -123,7 +123,7 @@ m_package = Package(name='eln') class User(MSection): user = Quantity( - type=author_reference, + type=AuthorReference, description='The corresponding user for the activity.', a_eln=dict(component='AuthorEditQuantity'), ) diff --git a/nomad/search.py b/nomad/search.py index 3cdfd38923e996102e8d6289b2ae523c6531d7bc..6eef2d16e8988604c81a1ee5950e75c8850cfa33 100644 --- a/nomad/search.py +++ b/nomad/search.py @@ -95,8 +95,8 @@ from nomad.config import config from nomad.datamodel import ( EntryArchive, EntryMetadata, - author_reference, - user_reference, + AuthorReference, + UserReference, ) from nomad.groups import UserGroup from nomad.metainfo import Datetime, Package, Quantity @@ -368,7 +368,7 @@ _entry_metadata_defaults = { _all_author_quantities = [ quantity.name for quantity in EntryMetadata.m_def.all_quantities.values() - if quantity.type in [user_reference, author_reference] + if isinstance(quantity.type, (UserReference, AuthorReference)) ] diff --git a/tests/metainfo/test_references.py b/tests/metainfo/test_references.py index 79e6a6cf34399e10d2cdc87af65cafb3c8b2fdcf..e050719d9aeddd8518485139c9ac8e8a5f829d94 100644 --- a/tests/metainfo/test_references.py +++ b/tests/metainfo/test_references.py @@ -20,7 +20,7 @@ from typing import cast import pytest import os.path -from nomad.datamodel import user_reference, author_reference +from nomad.datamodel import UserReference, AuthorReference from nomad.metainfo import ( MSection, Quantity, @@ -400,15 +400,15 @@ def test_parse_with_references(mainfile): 'def_type, value, expected_name', [ pytest.param( - user_reference, '00000000-0000-0000-0000-000000000001', 'Sheldon Cooper' + UserReference, '00000000-0000-0000-0000-000000000001', 'Sheldon Cooper' ), pytest.param( - author_reference, + AuthorReference, {'first_name': 'Mohammad', 'last_name': 'Nakhaee'}, 'Mohammad Nakhaee', ), pytest.param( - author_reference, '00000000-0000-0000-0000-000000000001', 'Sheldon Cooper' + AuthorReference, '00000000-0000-0000-0000-000000000001', 'Sheldon Cooper' ), ], )