From 478400511d471f9eb660acf37f42aa5ec535dae2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jean-S=C3=A9bastien=20Caux?= <git@jscaux.org>
Date: Sat, 26 Feb 2022 05:34:33 +0100
Subject: [PATCH] Add more fields and filters

---
 scipost_django/journals/api/serializers/publication.py  | 7 +++++++
 scipost_django/journals/models/publication.py           | 5 +++++
 scipost_django/submissions/api/filtersets/submission.py | 4 ++++
 3 files changed, 16 insertions(+)

diff --git a/scipost_django/journals/api/serializers/publication.py b/scipost_django/journals/api/serializers/publication.py
index 158f72da9..b14c84168 100644
--- a/scipost_django/journals/api/serializers/publication.py
+++ b/scipost_django/journals/api/serializers/publication.py
@@ -11,6 +11,9 @@ from ...models import Publication
 class PublicationPublicSerializer(DynamicFieldsModelSerializer):
     url = serializers.URLField(source="get_absolute_url")
     doi = serializers.URLField(source="doi_string")
+    in_issue = serializers.StringRelatedField()
+    in_volume = serializers.CharField(source="get_volume")
+    paper_nr = serializers.CharField(source="get_paper_nr")
     accepted_submission = serializers.SerializerMethodField()
     acad_field = serializers.StringRelatedField()
     specialties = serializers.StringRelatedField(many=True)
@@ -26,6 +29,10 @@ class PublicationPublicSerializer(DynamicFieldsModelSerializer):
             "abstract",
             "doi_label",
             "doi",
+            "citation",
+            "in_issue",
+            "in_volume",
+            "paper_nr",
             "submission_date",
             "acceptance_date",
             "publication_date",
diff --git a/scipost_django/journals/models/publication.py b/scipost_django/journals/models/publication.py
index 935ce4d06..3e225d2b5 100644
--- a/scipost_django/journals/models/publication.py
+++ b/scipost_django/journals/models/publication.py
@@ -423,6 +423,11 @@ class Publication(models.Model):
     def journal_issn(self):
         return self.get_journal().issn
 
+    def get_volume(self):
+        if self.in_issue and self.in_issue.in_volume:
+            return self.in_issue.in_volume
+        return None
+
     def get_paper_nr(self):
         if self.in_journal:
             return self.paper_nr
diff --git a/scipost_django/submissions/api/filtersets/submission.py b/scipost_django/submissions/api/filtersets/submission.py
index e3410595c..5da2589dc 100644
--- a/scipost_django/submissions/api/filtersets/submission.py
+++ b/scipost_django/submissions/api/filtersets/submission.py
@@ -34,6 +34,10 @@ class SubmissionPublicAPIFilterSet(df_filters.FilterSet):
             "topics__name": [
                 "icontains",
             ],
+            "thread_hash": [
+                "istartswith",
+                "exact",
+            ],
         }
 
 
-- 
GitLab