Skip to content

Commit 9a96668

Browse files
authored
Update project serializer to include publish_date, doi, version (#2378)
We have an API at `http://localhost:8000/api/v1/project/published/search` that allows users to export metadata about published projects. The API is potentially useful for people who are developing tools that interface with PhysioNet content (e.g. the MEDS project: https://github.com/Medical-Event-Data-Standard. The metadata returned from queries is defined in `PublishedProjectSerializer`. This pull request updates this serializer to include the following fields: - `version` (important, because otherwise a search returns what look like duplicate results, one result for each version). - `core_doi` - `version_doi` -> (from `doi`) - `is_latest_version` - `short_description` - `publish_date` Also adds a citation string to the `ProjectVersionsSerializer` method.
2 parents d760271 + d82660e commit 9a96668

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

physionet-django/export/serializers.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,20 @@ class Meta:
2323
class PublishedProjectSerializer(serializers.ModelSerializer):
2424
license = LicenseSerializer()
2525
dua = DUASerializer()
26+
publish_date = serializers.SerializerMethodField()
27+
core_doi = serializers.SerializerMethodField()
28+
version_doi = serializers.SerializerMethodField()
2629

2730
class Meta:
2831
model = PublishedProject
2932
fields = (
3033
'slug',
34+
'version',
35+
'core_doi',
36+
'version_doi',
37+
'is_latest_version',
38+
'short_description',
39+
'publish_date',
3140
'title',
3241
'abstract',
3342
'license',
@@ -36,17 +45,32 @@ class Meta:
3645
'compressed_storage_size',
3746
)
3847

48+
def get_publish_date(self, obj):
49+
return obj.publish_datetime.date() if obj.publish_datetime else None
50+
51+
def get_core_doi(self, obj):
52+
return obj.core_project.doi if hasattr(obj, 'core_project') else None
53+
54+
def get_version_doi(self, obj):
55+
return obj.doi
56+
3957

4058
class ProjectVersionsSerializer(serializers.ModelSerializer):
59+
citation = serializers.SerializerMethodField()
60+
4161
class Meta:
4262
model = PublishedProject
4363
fields = (
4464
'slug',
4565
'title',
4666
'version',
4767
'abstract',
68+
'citation',
4869
)
4970

71+
def get_citation(self, obj):
72+
return obj.citation_text(style="Vancouver")
73+
5074

5175
class PublishedProjectDetailSerializer(serializers.ModelSerializer):
5276
license = LicenseSerializer()

0 commit comments

Comments
 (0)