From 182dbe593f64f7a984037ade3061608ae298f5cd Mon Sep 17 00:00:00 2001
From: "J.-S. Caux" <J.S.Caux@uva.nl>
Date: Wed, 12 Jul 2017 08:12:58 +0200
Subject: [PATCH] Add publication cc_license, improve metadata

---
 journals/constants.py                         |  9 ++++++++
 .../migrations/0034_publication_cc_license.py | 20 +++++++++++++++++
 journals/models.py                            |  4 +++-
 journals/utils.py                             | 22 ++++++++++++++-----
 journals/views.py                             |  2 +-
 5 files changed, 49 insertions(+), 8 deletions(-)
 create mode 100644 journals/migrations/0034_publication_cc_license.py

diff --git a/journals/constants.py b/journals/constants.py
index 6bd5de5cf..7db8b8c2a 100644
--- a/journals/constants.py
+++ b/journals/constants.py
@@ -56,3 +56,12 @@ ISSUE_STATUSES = (
     (STATUS_DRAFT, 'Draft'),
     (STATUS_PUBLISHED, 'Published'),
 )
+
+CCBY4 = 'CC BY 4.0'
+CCBYSA4 = 'CC BY-SA 4.0'
+CCBYNC4 = 'CC BY-NC 4.0'
+CC_LICENSES = (
+    (CCBY4, 'CC BY (4.0)'),
+    (CCBYSA4, 'CC BY-SA (4.0)'),
+    (CCBYNC4, 'CC BY-NC (4.0)'),
+)
diff --git a/journals/migrations/0034_publication_cc_license.py b/journals/migrations/0034_publication_cc_license.py
new file mode 100644
index 000000000..b23b2c997
--- /dev/null
+++ b/journals/migrations/0034_publication_cc_license.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.3 on 2017-07-12 06:10
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('journals', '0033_auto_20170711_2041'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='publication',
+            name='cc_license',
+            field=models.CharField(choices=[('CC BY 4.0', 'CC BY (4.0)'), ('CC BY-SA 4.0', 'CC BY-SA (4.0)'), ('CC BY-NC 4.0', 'CC BY-NC (4.0)')], default='CC BY 4.0', max_length=32),
+        ),
+    ]
diff --git a/journals/models.py b/journals/models.py
index b71447302..fe5dee829 100644
--- a/journals/models.py
+++ b/journals/models.py
@@ -7,7 +7,8 @@ from django.urls import reverse
 from .behaviors import doi_journal_validator, doi_volume_validator,\
                        doi_issue_validator, doi_publication_validator
 from .constants import SCIPOST_JOURNALS, SCIPOST_JOURNALS_DOMAINS,\
-                       STATUS_DRAFT, STATUS_PUBLISHED, ISSUE_STATUSES
+                       STATUS_DRAFT, STATUS_PUBLISHED, ISSUE_STATUSES,\
+                       CCBY4, CC_LICENSES
 from .helpers import paper_nr_string, journal_name_abbrev_citation
 from .managers import IssueManager, PublicationManager
 
@@ -140,6 +141,7 @@ class Publication(models.Model):
                                                   related_name='authors_pub_false_claims')
     abstract = models.TextField()
     pdf_file = models.FileField(upload_to='UPLOADS/PUBLICATIONS/%Y/%m/', max_length=200)
+    cc_license = models.CharField(max_length=32, choices=CC_LICENSES, default=CCBY4)
     metadata = JSONField(default={}, blank=True, null=True)
     metadata_xml = models.TextField(blank=True, null=True)  # for Crossref deposit
     latest_metadata_update = models.DateTimeField(blank=True, null=True)
diff --git a/journals/utils.py b/journals/utils.py
index a9544e651..3fa91ffc9 100644
--- a/journals/utils.py
+++ b/journals/utils.py
@@ -49,29 +49,39 @@ class JournalUtils(object):
                 'abstract': cls.publication.abstract,
                 'year': cls.publication.publication_date.strftime('%Y'),
                 'month': cls.publication.publication_date.strftime('%m'),
+                'start_page': cls.publication.get_paper_nr(),
+                'identifier': [
+                    {
+                        'type': 'doi',
+                        'id': cls.publication.doi_string()
+                    }
+                ],
                 'link': [
                     {
                         'url': cls.request.build_absolute_uri(cls.publication.get_absolute_url()),
                         'type': 'fulltext',
-                        'content_type': 'application/pdf'
                     }
                 ],
-                'identifier': [ {'type': 'eissn',
-                                 'id': str(cls.publication.in_issue.in_volume.in_journal.issn)}],
                 'journal': {
                     'publisher': 'SciPost',
+                    'volume': str(cls.publication.in_issue.in_volume.number),
+                    'number': str(cls.publication.in_issue.number),
+                    'identifier': [
+                        { 'type': 'eissn',
+                          'id': str(cls.publication.in_issue.in_volume.in_journal.issn)
+                        }
+                    ],
                     'license': [
                         {
                             'url': cls.request.build_absolute_uri(
                                 cls.publication.in_issue.in_volume.in_journal.get_absolute_url()),
                             'open_access': 'true',
-                            'type': 'CC BY',
-                            'title': 'CC BY'
+                            'type': cls.publication.get_cc_license_display(),
+                            'title': cls.publication.get_cc_license_display(),
                         }
                     ],
                     'language': [ 'EN'],
                     'title': cls.publication.in_issue.in_volume.in_journal.get_name_display(),
-                    'volume': str(cls.publication.in_issue.in_volume.number),
                 }
             }
         }
diff --git a/journals/views.py b/journals/views.py
index 6fbfa22fe..a2295b8b9 100644
--- a/journals/views.py
+++ b/journals/views.py
@@ -275,7 +275,7 @@ def validate_publication(request):
 
 @permission_required('scipost.can_publish_accepted_submission', return_403=True)
 def manage_metadata(request):
-    publications = Publication.objects.order_by('-publication_date')
+    publications = Publication.objects.order_by('-publication_date', '-paper_nr')
     context = {
         'publications': publications
     }
-- 
GitLab