SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit b2d13f56 authored by Jorran de Wit's avatar Jorran de Wit
Browse files

Merge branch 'references' into development

parents 905bb367 4146fee1
No related branches found
No related tags found
No related merge requests found
...@@ -7,13 +7,12 @@ from journals.models import UnregisteredAuthor, Journal, Volume, Issue, Publicat ...@@ -7,13 +7,12 @@ from journals.models import UnregisteredAuthor, Journal, Volume, Issue, Publicat
from scipost.models import Contributor from scipost.models import Contributor
from submissions.models import Submission from submissions.models import Submission
admin.site.register(Reference)
class UnregisteredAuthorAdmin(admin.ModelAdmin): class UnregisteredAuthorAdmin(admin.ModelAdmin):
search_fields = ['last_name'] search_fields = ['last_name']
ordering = ['last_name'] ordering = ['last_name']
admin.site.register(UnregisteredAuthor, UnregisteredAuthorAdmin) admin.site.register(UnregisteredAuthor, UnregisteredAuthorAdmin)
...@@ -56,11 +55,16 @@ class PublicationAdminForm(forms.ModelForm): ...@@ -56,11 +55,16 @@ class PublicationAdminForm(forms.ModelForm):
fields = '__all__' fields = '__all__'
class ReferenceInline(admin.TabularInline):
model = Reference
class PublicationAdmin(admin.ModelAdmin): class PublicationAdmin(admin.ModelAdmin):
search_fields = ['title', 'author_list'] search_fields = ['title', 'author_list']
list_display = ['title', 'author_list', 'in_issue', 'doi_string', 'publication_date'] list_display = ['title', 'author_list', 'in_issue', 'doi_string', 'publication_date']
date_hierarchy = 'publication_date' date_hierarchy = 'publication_date'
list_filter = ['in_issue'] list_filter = ['in_issue']
inlines = [ReferenceInline]
form = PublicationAdminForm form = PublicationAdminForm
admin.site.register(Publication, PublicationAdmin) admin.site.register(Publication, PublicationAdmin)
......
...@@ -113,16 +113,15 @@ class BaseReferenceFormSet(BaseModelFormSet): ...@@ -113,16 +113,15 @@ class BaseReferenceFormSet(BaseModelFormSet):
except KeyError: except KeyError:
author_list.append(author['name']) author_list.append(author['name'])
if len(author_list) > 3: if len(author_list) > 2:
authors = author_list[0] + ' et al.' authors = ', '.join(author_list[:-1])
elif len(author_list) == 3: authors += ' and ' + author_list[-1]
authors = '{}, {} and {}'.format(
author_list[0], author_list[1], author_list[2])
else: else:
authors = ' and '.join(author_list) authors = ' and '.join(author_list)
# Citation # Citation
citation = '{} <b>{}</b>, {} ({})'.format( citation = '<em>{}</em> {} <b>{}</b>, {} ({})'.format(
caller.data['title'],
caller.data['journal'], caller.data['journal'],
caller.data['volume'], caller.data['volume'],
caller.data['pages'], caller.data['pages'],
...@@ -131,16 +130,15 @@ class BaseReferenceFormSet(BaseModelFormSet): ...@@ -131,16 +130,15 @@ class BaseReferenceFormSet(BaseModelFormSet):
self.initial_references.append({ self.initial_references.append({
'reference_number': cite['key'][3:], 'reference_number': cite['key'][3:],
'authors': authors, 'authors': authors,
'title': caller.data['title'],
'citation': citation, 'citation': citation,
'vor': cite['doi'], 'identifier': cite['doi'],
'vor_url': 'https://doi.org/{}'.format(cite['doi']), 'link': 'https://doi.org/{}'.format(cite['doi']),
}) })
else: else:
self.initial_references.append({ self.initial_references.append({
'reference_number': cite['key'][3:], 'reference_number': cite['key'][3:],
'vor': cite['doi'], 'identifier': cite['doi'],
'vor_url': 'https://doi.org/{}'.format(cite['doi']), 'link': 'https://doi.org/{}'.format(cite['doi']),
}) })
# Add prefill information to the form # Add prefill information to the form
...@@ -157,10 +155,9 @@ class ReferenceForm(forms.ModelForm): ...@@ -157,10 +155,9 @@ class ReferenceForm(forms.ModelForm):
fields = [ fields = [
'reference_number', 'reference_number',
'authors', 'authors',
'title',
'citation', 'citation',
'vor', 'identifier',
'vor_url', 'link',
] ]
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
......
# -*- coding: utf-8 -*-
# Generated by Django 1.11.4 on 2018-02-03 11:29
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('journals', '0007_auto_20180129_1814'),
]
operations = [
migrations.RenameField(
model_name='reference',
old_name='vor',
new_name='identifier',
),
migrations.RenameField(
model_name='reference',
old_name='vor_url',
new_name='link',
),
migrations.RemoveField(
model_name='reference',
name='title',
),
migrations.AlterField(
model_name='reference',
name='authors',
field=models.CharField(max_length=1028),
),
migrations.AlterField(
model_name='reference',
name='citation',
field=models.CharField(blank=True, max_length=1028),
),
]
...@@ -331,12 +331,10 @@ class Reference(models.Model): ...@@ -331,12 +331,10 @@ class Reference(models.Model):
reference_number = models.IntegerField() reference_number = models.IntegerField()
publication = models.ForeignKey('journals.Publication', on_delete=models.CASCADE) publication = models.ForeignKey('journals.Publication', on_delete=models.CASCADE)
authors = models.CharField(max_length=512) authors = models.CharField(max_length=1028)
title = models.CharField(max_length=512) citation = models.CharField(max_length=1028, blank=True)
citation = models.CharField(max_length=512, blank=True) identifier = models.CharField(blank=True, max_length=128)
link = models.URLField(blank=True)
vor = models.CharField(blank=True, max_length=128)
vor_url = models.URLField(blank=True)
class Meta: class Meta:
unique_together = ('reference_number', 'publication') unique_together = ('reference_number', 'publication')
...@@ -344,7 +342,7 @@ class Reference(models.Model): ...@@ -344,7 +342,7 @@ class Reference(models.Model):
default_related_name = 'references' default_related_name = 'references'
def __str__(self): def __str__(self):
return '[{}] {}'.format(self.reference_number, self.publication.doi_label) return '[{}] {}, {}'.format(self.reference_number, self.authors[:30], self.citation[:30])
class Deposit(models.Model): class Deposit(models.Model):
......
...@@ -3,15 +3,27 @@ ...@@ -3,15 +3,27 @@
<a class="mb-2 d-block" href="javascript:;" data-toggle="toggle" data-target="#reference_list">Click to expand</a> <a class="mb-2 d-block" href="javascript:;" data-toggle="toggle" data-target="#reference_list">Click to expand</a>
<ul class="references" id="reference_list" style="display:none;"> <ul class="references" id="reference_list" style="display:none;">
{% for reference in publication.references.all %} {% for reference in publication.references.all %}
<li> <li class="mt-1">
<span class="counter">[{{ reference.reference_number }}]</span> <div class="d-flex flex-row">
<span class="authors">{{ reference.authors }}</span>, <div class="px-1">
<span class="title">{{ reference.title }}</span>{% if reference.citation %}, <span class="citation">{{ reference.citation|safe }}</span>{% endif %} <span class="counter">[{{ reference.reference_number }}]</span>
{% if reference.vor_url and reference.vor %} </div>
<span class="doi">doi: <a href="{{ reference.vor_url }}" target="_blank">{{ reference.vor }}</a></span> <div class="px-1">
{% elif reference.vor_url %} <div class="authors">{{ reference.authors }}</div>
<span class="doi"><a href="{{ reference.vor_url }}" target="_blank">link</a></span> {% if reference.citation %}
{% endif %} <div class="citation">{{ reference.citation|safe }}</div>
{% endif %}
<div class="reference">
{% if reference.link and reference.identifier %}
<a href="{{ reference.link }}" target="_blank">{{ reference.identifier }}</a>
{% elif reference.link %}
<a href="{{ reference.link }}" target="_blank">link</a>
{% elif reference.identifier %}
<span>{{ reference.identifier }}</span>
{% endif %}
</div>
</div>
</div>
</li> </li>
{% endfor %} {% endfor %}
</ul> </ul>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment