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