From 973166ba043f7ea0626c965440e5c9b992b7e826 Mon Sep 17 00:00:00 2001 From: "J.-S. Caux" <J.S.Caux@uva.nl> Date: Tue, 22 Nov 2016 08:50:45 +0100 Subject: [PATCH] Allow first author unregistered --- journals/models.py | 7 ++-- .../journals/publication_detail.html | 25 +++++++++---- journals/urls.py | 3 ++ journals/views.py | 36 ++++++++++++++----- 4 files changed, 55 insertions(+), 16 deletions(-) diff --git a/journals/models.py b/journals/models.py index 08421e40d..1d1c67948 100644 --- a/journals/models.py +++ b/journals/models.py @@ -12,7 +12,7 @@ class UnregisteredAuthor(models.Model): last_name = models.CharField(max_length=100) def __str__(self): - return self.first_name + ' ' + self.last_name + return self.last_name + ', ' + self.first_name SCIPOST_JOURNALS = ( @@ -166,8 +166,11 @@ class Publication(models.Model): author_list = models.CharField(max_length=1000, verbose_name="author list") # Authors which have been mapped to contributors: authors = models.ManyToManyField (Contributor, blank=True, related_name='authors_pub') - authors_unregistered = models.ManyToManyField (UnregisteredAuthor, blank=True) + authors_unregistered = models.ManyToManyField (UnregisteredAuthor, blank=True, + related_name='authors_unregistered') first_author = models.ForeignKey (Contributor, blank=True, null=True) + first_author_unregistered = models.ForeignKey (UnregisteredAuthor, blank=True, null=True, + related_name='first_author_unregistered') authors_claims = models.ManyToManyField (Contributor, blank=True, related_name='authors_pub_claims') authors_false_claims = models.ManyToManyField (Contributor, blank=True, diff --git a/journals/templates/journals/publication_detail.html b/journals/templates/journals/publication_detail.html index 4d1c16b8a..0e9ce6fb3 100644 --- a/journals/templates/journals/publication_detail.html +++ b/journals/templates/journals/publication_detail.html @@ -34,12 +34,25 @@ <hr class="hr12"/> <h3>Editorial Administration tools: </h3> <ul> - <li>Mark the first author (currently: {{ publication.first_author }}) - <ul> - {% for author in publication.authors.all %} - <li><a href="{% url 'journals:mark_first_author' publication_id=publication.id contributor_id=author.id %}">{{ author }}</a></li> - {% endfor %} - </ul> + <li>Mark the first author (currently: {% if publication.first_author %}{{ publication.first_author }} {% elif publication.first_author_unregistered %}{{ publication.first_author_unregistered }} (unregistered){% endif %}) + <div class="row"> + <div class="col-5"> + <p>registered authors:</p> + <ul> + {% for author in publication.authors.all %} + <li><a href="{% url 'journals:mark_first_author' publication_id=publication.id contributor_id=author.id %}">{{ author }}</a></li> + {% endfor %} + </ul> + </div> + <div class="col-5"> + <p>unregistered authors:</p> + <ul> + {% for author_unreg in publication.authors_unregistered.all %} + <li><a href="{% url 'journals:mark_first_author_unregistered' publication_id=publication.id unregistered_author_id=author_unreg.id %}">{{ author_unreg }}</a></li> + {% endfor %} + </ul> + </div> + </div> </li> <li><a href="{% url 'journals:add_author' publication_id=publication.id %}">Add a missing author</a></li> <li><a href="{% url 'journals:create_citation_list_metadata' doi_string=publication.doi_string %}">Create/update citation list metadata</a></li> diff --git a/journals/urls.py b/journals/urls.py index dc4ef35c8..2a4566696 100644 --- a/journals/urls.py +++ b/journals/urls.py @@ -46,6 +46,9 @@ urlpatterns = [ url(r'^mark_first_author/(?P<publication_id>[0-9]+)/(?P<contributor_id>[0-9]+)$', journals_views.mark_first_author, name='mark_first_author'), + url(r'^mark_first_author_unregistered/(?P<publication_id>[0-9]+)/(?P<unregistered_author_id>[0-9]+)$', + journals_views.mark_first_author_unregistered, + name='mark_first_author_unregistered'), url(r'^add_author/(?P<publication_id>[0-9]+)/(?P<contributor_id>[0-9]+)$', journals_views.add_author, name='add_author'), diff --git a/journals/views.py b/journals/views.py index 64b8e4984..95002ce96 100644 --- a/journals/views.py +++ b/journals/views.py @@ -323,6 +323,19 @@ def mark_first_author(request, publication_id, contributor_id): publication = get_object_or_404(Publication, id=publication_id) contributor = get_object_or_404(Contributor, id=contributor_id) publication.first_author = contributor + publication.first_author_unregistered = None + publication.save() + return redirect(reverse('scipost:publication_detail', + kwargs={'doi_string': publication.doi_string,})) + + +@permission_required('scipost.can_publish_accepted_submission', return_403=True) +@transaction.atomic +def mark_first_author_unregistered(request, publication_id, unregistered_author_id): + publication = get_object_or_404(Publication, id=publication_id) + unregistered_author = get_object_or_404(UnregisteredAuthor, id=unregistered_author_id) + publication.first_author = None + publication.first_author_unregistered = unregistered_author publication.save() return redirect(reverse('scipost:publication_detail', kwargs={'doi_string': publication.doi_string,})) @@ -554,14 +567,21 @@ def create_metadata_xml(request, doi_string): initial['metadata_xml'] += '</person_name>\n' for author_unreg in publication.authors_unregistered.all(): - #publication.metadata_xml += ( - initial['metadata_xml'] += ( - '<person_name sequence=\'additional\' contributor_role=\'author\'> ' - '<given_name>' + author_unreg.first_name + '</given_name> ' - '<surname>' + author_unreg.last_name + '</surname> ' - '</person_name>' - ) - + if author_unreg == publication.first_author_unregistered: + #publication.metadata_xml += ( + initial['metadata_xml'] += ( + '<person_name sequence=\'first\' contributor_role=\'author\'> ' + '<given_name>' + author_unreg.first_name + '</given_name> ' + '<surname>' + author_unreg.last_name + '</surname> ' + ) + else: + #publication.metadata_xml += ( + initial['metadata_xml'] += ( + '<person_name sequence=\'additional\' contributor_role=\'author\'> ' + '<given_name>' + author_unreg.first_name + '</given_name> ' + '<surname>' + author_unreg.last_name + '</surname> ' + ) + initial['metadata_xml'] += '</person_name>\n' #publication.metadata_xml += '</contributors>\n' initial['metadata_xml'] += '</contributors>\n' -- GitLab